diff --git a/3party/boost/boost/accumulators/accumulators_fwd.hpp b/3party/boost/boost/accumulators/accumulators_fwd.hpp index 28e5162673..4c0370e21e 100644 --- a/3party/boost/boost/accumulators/accumulators_fwd.hpp +++ b/3party/boost/boost/accumulators/accumulators_fwd.hpp @@ -11,6 +11,7 @@ #include #include // for mpl::na #include +#include #include #include #include diff --git a/3party/boost/boost/accumulators/numeric/functional.hpp b/3party/boost/boost/accumulators/numeric/functional.hpp index 683c49d1ab..d5d79f5c49 100644 --- a/3party/boost/boost/accumulators/numeric/functional.hpp +++ b/3party/boost/boost/accumulators/numeric/functional.hpp @@ -245,14 +245,14 @@ namespace boost { namespace numeric }; template - struct average_base + struct fdiv_base : functional::divides {}; // partial specialization that promotes the arguments to double for // integral division. template - struct average_base >::type> + struct fdiv_base >::type> : functional::divides {}; @@ -347,9 +347,16 @@ namespace boost { namespace numeric : max_assign_base {}; + template + struct fdiv + : fdiv_base + {}; + + /// INTERNAL ONLY + /// For back-compat only. Use fdiv. template struct average - : average_base + : fdiv {}; template @@ -388,8 +395,13 @@ namespace boost { namespace numeric : boost::detail::function2, functional::tag<_2> > > {}; + struct fdiv + : boost::detail::function2, functional::tag<_2> > > + {}; + + /// INTERNAL ONLY struct average - : boost::detail::function2, functional::tag<_2> > > + : boost::detail::function2, functional::tag<_2> > > {}; struct as_min @@ -413,7 +425,8 @@ namespace boost { namespace numeric { op::min_assign const &min_assign = boost::detail::pod_singleton::instance; op::max_assign const &max_assign = boost::detail::pod_singleton::instance; - op::average const &average = boost::detail::pod_singleton::instance; + op::fdiv const &fdiv = boost::detail::pod_singleton::instance; + op::fdiv const &average = boost::detail::pod_singleton::instance; ///< INTERNAL ONLY op::as_min const &as_min = boost::detail::pod_singleton::instance; op::as_max const &as_max = boost::detail::pod_singleton::instance; op::as_zero const &as_zero = boost::detail::pod_singleton::instance; @@ -421,6 +434,7 @@ namespace boost { namespace numeric BOOST_ACCUMULATORS_IGNORE_GLOBAL(min_assign) BOOST_ACCUMULATORS_IGNORE_GLOBAL(max_assign) + BOOST_ACCUMULATORS_IGNORE_GLOBAL(fdiv) BOOST_ACCUMULATORS_IGNORE_GLOBAL(average) BOOST_ACCUMULATORS_IGNORE_GLOBAL(as_min) BOOST_ACCUMULATORS_IGNORE_GLOBAL(as_max) diff --git a/3party/boost/boost/accumulators/numeric/functional/valarray.hpp b/3party/boost/boost/accumulators/numeric/functional/valarray.hpp index 41766a0371..c24b45859d 100644 --- a/3party/boost/boost/accumulators/numeric/functional/valarray.hpp +++ b/3party/boost/boost/accumulators/numeric/functional/valarray.hpp @@ -234,9 +234,9 @@ namespace boost { namespace numeric } }; - // partial specialization of numeric::average<> for std::valarray. + // partial specialization of numeric::fdiv<> for std::valarray. template - struct average + struct fdiv : mpl::if_< are_integral , divides diff --git a/3party/boost/boost/accumulators/numeric/functional/vector.hpp b/3party/boost/boost/accumulators/numeric/functional/vector.hpp index cdb234278d..8a68a3f303 100644 --- a/3party/boost/boost/accumulators/numeric/functional/vector.hpp +++ b/3party/boost/boost/accumulators/numeric/functional/vector.hpp @@ -231,7 +231,7 @@ namespace boost { namespace numeric // partial specialization for std::vector. template - struct average + struct fdiv : mpl::if_< are_integral , divides diff --git a/3party/boost/boost/accumulators/numeric/functional_fwd.hpp b/3party/boost/boost/accumulators/numeric/functional_fwd.hpp index 940d15b839..501f654b29 100644 --- a/3party/boost/boost/accumulators/numeric/functional_fwd.hpp +++ b/3party/boost/boost/accumulators/numeric/functional_fwd.hpp @@ -141,7 +141,7 @@ namespace boost { namespace numeric template struct max_assign_base; template - struct average_base; + struct fdiv_base; template struct as_min_base; template @@ -158,7 +158,7 @@ namespace boost { namespace numeric template::type, typename RightTag = typename tag::type> struct max_assign; template::type, typename RightTag = typename tag::type> - struct average; + struct fdiv; template::type> struct as_min; template::type> @@ -175,7 +175,7 @@ namespace boost { namespace numeric struct promote; struct min_assign; struct max_assign; - struct average; + struct fdiv; struct as_min; struct as_max; struct as_zero; @@ -186,7 +186,7 @@ namespace boost { namespace numeric { extern op::min_assign const &min_assign; extern op::max_assign const &max_assign; - extern op::average const &average; + extern op::fdiv const &fdiv; extern op::as_min const &as_min; extern op::as_max const &as_max; extern op::as_zero const &as_zero; diff --git a/3party/boost/boost/accumulators/statistics/covariance.hpp b/3party/boost/boost/accumulators/statistics/covariance.hpp index b34284b046..73c92aebb5 100644 --- a/3party/boost/boost/accumulators/statistics/covariance.hpp +++ b/3party/boost/boost/accumulators/statistics/covariance.hpp @@ -122,8 +122,8 @@ namespace impl struct covariance_impl : accumulator_base { - typedef typename numeric::functional::average::result_type sample_type; - typedef typename numeric::functional::average::result_type variate_type; + typedef typename numeric::functional::fdiv::result_type sample_type; + typedef typename numeric::functional::fdiv::result_type variate_type; // for boost::result_of typedef typename numeric::functional::outer_product::result_type result_type; @@ -131,8 +131,8 @@ namespace impl covariance_impl(Args const &args) : cov_( numeric::outer_product( - numeric::average(args[sample | Sample()], (std::size_t)1) - , numeric::average(args[parameter::keyword::get() | VariateType()], (std::size_t)1) + numeric::fdiv(args[sample | Sample()], (std::size_t)1) + , numeric::fdiv(args[parameter::keyword::get() | VariateType()], (std::size_t)1) ) ) { diff --git a/3party/boost/boost/accumulators/statistics/density.hpp b/3party/boost/boost/accumulators/statistics/density.hpp index 451ba8b644..88ca17df79 100644 --- a/3party/boost/boost/accumulators/statistics/density.hpp +++ b/3party/boost/boost/accumulators/statistics/density.hpp @@ -61,7 +61,7 @@ namespace impl struct density_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector > histogram_type; typedef std::vector array_type; // for boost::result_of @@ -77,8 +77,8 @@ namespace impl , histogram( num_bins + 2 , std::make_pair( - numeric::average(args[sample | Sample()],(std::size_t)1) - , numeric::average(args[sample | Sample()],(std::size_t)1) + numeric::fdiv(args[sample | Sample()],(std::size_t)1) + , numeric::fdiv(args[sample | Sample()],(std::size_t)1) ) ) , is_dirty(true) @@ -103,9 +103,9 @@ namespace impl // Store their lower bounds (bin_positions) and fill the bins with the cached samples (samples_in_bin). if (cnt == this->cache_size) { - float_type minimum = numeric::average((min)(args), (std::size_t)1); - float_type maximum = numeric::average((max)(args), (std::size_t)1); - float_type bin_size = numeric::average(maximum - minimum, this->num_bins ); + float_type minimum = numeric::fdiv((min)(args), (std::size_t)1); + float_type maximum = numeric::fdiv((max)(args), (std::size_t)1); + float_type bin_size = numeric::fdiv(maximum - minimum, this->num_bins ); // determine bin positions (their lower bounds) for (std::size_t i = 0; i < this->num_bins + 2; ++i) @@ -177,7 +177,7 @@ namespace impl for (std::size_t i = 0; i < this->num_bins + 2; ++i) { - this->histogram[i] = std::make_pair(this->bin_positions[i], numeric::average(this->samples_in_bin[i], count(args))); + this->histogram[i] = std::make_pair(this->bin_positions[i], numeric::fdiv(this->samples_in_bin[i], count(args))); } } // returns a range of pairs diff --git a/3party/boost/boost/accumulators/statistics/error_of_mean.hpp b/3party/boost/boost/accumulators/statistics/error_of_mean.hpp index 9451d40f73..7cd923d5f4 100644 --- a/3party/boost/boost/accumulators/statistics/error_of_mean.hpp +++ b/3party/boost/boost/accumulators/statistics/error_of_mean.hpp @@ -29,7 +29,7 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; error_of_mean_impl(dont_care) {} @@ -38,7 +38,7 @@ namespace impl { using namespace std; extractor const variance = {}; - return sqrt(numeric::average(variance(args), count(args) - 1)); + return sqrt(numeric::fdiv(variance(args), count(args) - 1)); } }; diff --git a/3party/boost/boost/accumulators/statistics/extended_p_square.hpp b/3party/boost/boost/accumulators/statistics/extended_p_square.hpp index b04be83784..e6cc8dc9a1 100644 --- a/3party/boost/boost/accumulators/statistics/extended_p_square.hpp +++ b/3party/boost/boost/accumulators/statistics/extended_p_square.hpp @@ -69,7 +69,7 @@ namespace impl struct extended_p_square_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector array_type; // for boost::result_of typedef iterator_range< diff --git a/3party/boost/boost/accumulators/statistics/extended_p_square_quantile.hpp b/3party/boost/boost/accumulators/statistics/extended_p_square_quantile.hpp index 09ffef2963..a17843d774 100644 --- a/3party/boost/boost/accumulators/statistics/extended_p_square_quantile.hpp +++ b/3party/boost/boost/accumulators/statistics/extended_p_square_quantile.hpp @@ -57,7 +57,7 @@ namespace impl struct extended_p_square_quantile_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector array_type; typedef iterator_range< detail::lvalue_index_iterator< @@ -137,7 +137,7 @@ namespace impl float_type h1 = *iter_heights; float_type h0 = *(iter_heights - 1); - float_type a = numeric::average(h1 - h0, p1 - p0); + float_type a = numeric::fdiv(h1 - h0, p1 - p0); float_type b = h1 - p1 * a; res = a * this->probability + b; @@ -169,12 +169,12 @@ namespace impl h2 = *iter_heights; } - float_type hp21 = numeric::average(h2 - h1, p2 - p1); - float_type hp10 = numeric::average(h1 - h0, p1 - p0); - float_type p21 = numeric::average(p2 * p2 - p1 * p1, p2 - p1); - float_type p10 = numeric::average(p1 * p1 - p0 * p0, p1 - p0); + float_type hp21 = numeric::fdiv(h2 - h1, p2 - p1); + float_type hp10 = numeric::fdiv(h1 - h0, p1 - p0); + float_type p21 = numeric::fdiv(p2 * p2 - p1 * p1, p2 - p1); + float_type p10 = numeric::fdiv(p1 * p1 - p0 * p0, p1 - p0); - float_type a = numeric::average(hp21 - hp10, p21 - p10); + float_type a = numeric::fdiv(hp21 - hp10, p21 - p10); float_type b = hp21 - a * p21; float_type c = h2 - a * p2 * p2 - b * p2; diff --git a/3party/boost/boost/accumulators/statistics/kurtosis.hpp b/3party/boost/boost/accumulators/statistics/kurtosis.hpp index 4c5c23d5d7..76c93d3850 100644 --- a/3party/boost/boost/accumulators/statistics/kurtosis.hpp +++ b/3party/boost/boost/accumulators/statistics/kurtosis.hpp @@ -47,14 +47,14 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; kurtosis_impl(dont_care) {} template result_type result(Args const &args) const { - return numeric::average( + return numeric::fdiv( accumulators::moment<4>(args) - 4. * accumulators::moment<3>(args) * mean(args) + 6. * accumulators::moment<2>(args) * mean(args) * mean(args) diff --git a/3party/boost/boost/accumulators/statistics/mean.hpp b/3party/boost/boost/accumulators/statistics/mean.hpp index 0b3ba5e7cd..4788837184 100644 --- a/3party/boost/boost/accumulators/statistics/mean.hpp +++ b/3party/boost/boost/accumulators/statistics/mean.hpp @@ -31,7 +31,7 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; mean_impl(dont_care) {} @@ -39,7 +39,7 @@ namespace impl result_type result(Args const &args) const { extractor sum; - return numeric::average(sum(args), count(args)); + return numeric::fdiv(sum(args), count(args)); } }; @@ -48,11 +48,11 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; template immediate_mean_impl(Args const &args) - : mean(numeric::average(args[sample | Sample()], numeric::one::value)) + : mean(numeric::fdiv(args[sample | Sample()], numeric::one::value)) { } @@ -60,7 +60,7 @@ namespace impl void operator ()(Args const &args) { std::size_t cnt = count(args); - this->mean = numeric::average( + this->mean = numeric::fdiv( (this->mean * (cnt - 1)) + args[parameter::keyword::get()] , cnt ); diff --git a/3party/boost/boost/accumulators/statistics/median.hpp b/3party/boost/boost/accumulators/statistics/median.hpp index 919cf69e4f..d361c6dda4 100644 --- a/3party/boost/boost/accumulators/statistics/median.hpp +++ b/3party/boost/boost/accumulators/statistics/median.hpp @@ -39,7 +39,7 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; median_impl(dont_care) {} @@ -63,7 +63,7 @@ namespace impl struct with_density_median_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector > histogram_type; typedef iterator_range range_type; // for boost::result_of @@ -71,7 +71,7 @@ namespace impl template with_density_median_impl(Args const &args) - : sum(numeric::average(args[sample | Sample()], (std::size_t)1)) + : sum(numeric::fdiv(args[sample | Sample()], (std::size_t)1)) , is_dirty(true) { } @@ -98,7 +98,7 @@ namespace impl ++it; } --it; - float_type over = numeric::average(this->sum - 0.5 * cnt, it->second * cnt); + float_type over = numeric::fdiv(this->sum - 0.5 * cnt, it->second * cnt); this->median = it->first * over + (it + 1)->first * (1. - over); } @@ -125,7 +125,7 @@ namespace impl struct with_p_square_cumulative_distribution_median_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector > histogram_type; typedef iterator_range range_type; // for boost::result_of @@ -154,7 +154,7 @@ namespace impl { ++it; } - float_type over = numeric::average(it->second - 0.5, it->second - (it - 1)->second); + float_type over = numeric::fdiv(it->second - 0.5, it->second - (it - 1)->second); this->median = it->first * over + (it + 1)->first * ( 1. - over ); } diff --git a/3party/boost/boost/accumulators/statistics/moment.hpp b/3party/boost/boost/accumulators/statistics/moment.hpp index 20421730c3..3dabd47ecf 100644 --- a/3party/boost/boost/accumulators/statistics/moment.hpp +++ b/3party/boost/boost/accumulators/statistics/moment.hpp @@ -55,7 +55,7 @@ namespace impl { BOOST_MPL_ASSERT_RELATION(N::value, >, 0); // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; template moment_impl(Args const &args) @@ -72,7 +72,7 @@ namespace impl template result_type result(Args const &args) const { - return numeric::average(this->sum, count(args)); + return numeric::fdiv(this->sum, count(args)); } private: diff --git a/3party/boost/boost/accumulators/statistics/p_square_cumul_dist.hpp b/3party/boost/boost/accumulators/statistics/p_square_cumul_dist.hpp index de98368666..50692838c7 100644 --- a/3party/boost/boost/accumulators/statistics/p_square_cumul_dist.hpp +++ b/3party/boost/boost/accumulators/statistics/p_square_cumul_dist.hpp @@ -54,7 +54,7 @@ namespace impl struct p_square_cumulative_distribution_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector array_type; typedef std::vector > histogram_type; // for boost::result_of @@ -76,7 +76,7 @@ namespace impl { this->actual_positions[i] = i + 1.; this->desired_positions[i] = i + 1.; - this->positions_increments[i] = numeric::average(i, b); + this->positions_increments[i] = numeric::fdiv(i, b); } } @@ -198,7 +198,7 @@ namespace impl for (std::size_t i = 0; i < this->histogram.size(); ++i) { - this->histogram[i] = std::make_pair(this->heights[i], numeric::average(this->actual_positions[i], cnt)); + this->histogram[i] = std::make_pair(this->heights[i], numeric::fdiv(this->actual_positions[i], cnt)); } } //return histogram; diff --git a/3party/boost/boost/accumulators/statistics/p_square_quantile.hpp b/3party/boost/boost/accumulators/statistics/p_square_quantile.hpp index 877f7f00c9..636fea7f23 100644 --- a/3party/boost/boost/accumulators/statistics/p_square_quantile.hpp +++ b/3party/boost/boost/accumulators/statistics/p_square_quantile.hpp @@ -54,7 +54,7 @@ namespace impl struct p_square_quantile_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef array array_type; // for boost::result_of typedef float_type result_type; @@ -69,7 +69,7 @@ namespace impl { for(std::size_t i = 0; i < 5; ++i) { - this->actual_positions[i] = i + 1; + this->actual_positions[i] = i + 1.; } this->desired_positions[0] = 1.; diff --git a/3party/boost/boost/accumulators/statistics/peaks_over_threshold.hpp b/3party/boost/boost/accumulators/statistics/peaks_over_threshold.hpp index ba152abba2..f04f743a0c 100644 --- a/3party/boost/boost/accumulators/statistics/peaks_over_threshold.hpp +++ b/3party/boost/boost/accumulators/statistics/peaks_over_threshold.hpp @@ -125,7 +125,7 @@ namespace impl struct peaks_over_threshold_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef boost::tuple result_type; // for left tail fitting, mirror the extreme values @@ -134,8 +134,8 @@ namespace impl template peaks_over_threshold_impl(Args const &args) : Nu_(0) - , mu_(sign::value * numeric::average(args[sample | Sample()], (std::size_t)1)) - , sigma2_(numeric::average(args[sample | Sample()], (std::size_t)1)) + , mu_(sign::value * numeric::fdiv(args[sample | Sample()], (std::size_t)1)) + , sigma2_(numeric::fdiv(args[sample | Sample()], (std::size_t)1)) , threshold_(sign::value * args[pot_threshold_value]) , fit_parameters_(boost::make_tuple(0., 0., 0.)) , is_dirty_(true) @@ -164,13 +164,13 @@ namespace impl std::size_t cnt = count(args); - this->mu_ = sign::value * numeric::average(this->mu_, this->Nu_); - this->sigma2_ = numeric::average(this->sigma2_, this->Nu_); + this->mu_ = sign::value * numeric::fdiv(this->mu_, this->Nu_); + this->sigma2_ = numeric::fdiv(this->sigma2_, this->Nu_); this->sigma2_ -= this->mu_ * this->mu_; - float_type threshold_probability = numeric::average(cnt - this->Nu_, cnt); + float_type threshold_probability = numeric::fdiv(cnt - this->Nu_, cnt); - float_type tmp = numeric::average(( this->mu_ - this->threshold_ )*( this->mu_ - this->threshold_ ), this->sigma2_); + float_type tmp = numeric::fdiv(( this->mu_ - this->threshold_ )*( this->mu_ - this->threshold_ ), this->sigma2_); float_type xi_hat = 0.5 * ( 1. - tmp ); float_type beta_hat = 0.5 * ( this->mu_ - this->threshold_ ) * ( 1. + tmp ); float_type beta_bar = beta_hat * std::pow(1. - threshold_probability, xi_hat); @@ -205,7 +205,7 @@ namespace impl struct peaks_over_threshold_prob_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef boost::tuple result_type; // for left tail fitting, mirror the extreme values @@ -213,8 +213,8 @@ namespace impl template peaks_over_threshold_prob_impl(Args const &args) - : mu_(sign::value * numeric::average(args[sample | Sample()], (std::size_t)1)) - , sigma2_(numeric::average(args[sample | Sample()], (std::size_t)1)) + : mu_(sign::value * numeric::fdiv(args[sample | Sample()], (std::size_t)1)) + , sigma2_(numeric::fdiv(args[sample | Sample()], (std::size_t)1)) , threshold_probability_(args[pot_threshold_probability]) , fit_parameters_(boost::make_tuple(0., 0., 0.)) , is_dirty_(true) @@ -272,14 +272,14 @@ namespace impl sigma2_ += *(tail(args).begin() + i) * (*(tail(args).begin() + i)); } - this->mu_ = sign::value * numeric::average(this->mu_, n); - this->sigma2_ = numeric::average(this->sigma2_, n); + this->mu_ = sign::value * numeric::fdiv(this->mu_, n); + this->sigma2_ = numeric::fdiv(this->sigma2_, n); this->sigma2_ -= this->mu_ * this->mu_; if (is_same::value) this->threshold_probability_ = 1. - this->threshold_probability_; - float_type tmp = numeric::average(( this->mu_ - u )*( this->mu_ - u ), this->sigma2_); + float_type tmp = numeric::fdiv(( this->mu_ - u )*( this->mu_ - u ), this->sigma2_); float_type xi_hat = 0.5 * ( 1. - tmp ); float_type beta_hat = 0.5 * ( this->mu_ - u ) * ( 1. + tmp ); float_type beta_bar = beta_hat * std::pow(1. - threshold_probability_, xi_hat); diff --git a/3party/boost/boost/accumulators/statistics/pot_quantile.hpp b/3party/boost/boost/accumulators/statistics/pot_quantile.hpp index aceff8cee5..470bdbace3 100644 --- a/3party/boost/boost/accumulators/statistics/pot_quantile.hpp +++ b/3party/boost/boost/accumulators/statistics/pot_quantile.hpp @@ -49,7 +49,7 @@ namespace impl struct pot_quantile_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef float_type result_type; diff --git a/3party/boost/boost/accumulators/statistics/pot_tail_mean.hpp b/3party/boost/boost/accumulators/statistics/pot_tail_mean.hpp index 088ef98093..a78043fce2 100644 --- a/3party/boost/boost/accumulators/statistics/pot_tail_mean.hpp +++ b/3party/boost/boost/accumulators/statistics/pot_tail_mean.hpp @@ -52,7 +52,7 @@ namespace impl struct pot_tail_mean_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef float_type result_type; diff --git a/3party/boost/boost/accumulators/statistics/rolling_mean.hpp b/3party/boost/boost/accumulators/statistics/rolling_mean.hpp index ddcbaa39b9..1439da1e2c 100644 --- a/3party/boost/boost/accumulators/statistics/rolling_mean.hpp +++ b/3party/boost/boost/accumulators/statistics/rolling_mean.hpp @@ -1,9 +1,10 @@ /////////////////////////////////////////////////////////////////////////////// // rolling_mean.hpp -// -// Copyright 2008 Eric Niebler. Distributed under the Boost -// Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// Copyright (C) 2008 Eric Niebler. +// Copyright (C) 2012 Pieter Bastiaan Ober (Integricom). +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_ACCUMULATORS_STATISTICS_ROLLING_MEAN_HPP_EAN_26_12_2008 #define BOOST_ACCUMULATORS_STATISTICS_ROLLING_MEAN_HPP_EAN_26_12_2008 @@ -20,62 +21,159 @@ namespace boost { namespace accumulators { + namespace impl + { + /////////////////////////////////////////////////////////////////////////////// + // lazy_rolling_mean_impl + // returns the mean over the rolling window and is calculated only + // when the result is requested + template + struct lazy_rolling_mean_impl + : accumulator_base + { + // for boost::result_of + typedef typename numeric::functional::fdiv::result_type result_type; -namespace impl -{ + lazy_rolling_mean_impl(dont_care) + { + } - /////////////////////////////////////////////////////////////////////////////// - // rolling_mean_impl - // returns the unshifted results from the shifted rolling window - template - struct rolling_mean_impl - : accumulator_base - { - typedef typename numeric::functional::average::result_type result_type; + template + result_type result(Args const &args) const + { + return numeric::fdiv(rolling_sum(args), rolling_count(args)); + } + }; - rolling_mean_impl(dont_care) - {} + /////////////////////////////////////////////////////////////////////////////// + // immediate_rolling_mean_impl + // The non-lazy version computes the rolling mean recursively when a new + // sample is added + template + struct immediate_rolling_mean_impl + : accumulator_base + { + // for boost::result_of + typedef typename numeric::functional::fdiv::result_type result_type; - template - result_type result(Args const &args) const - { - return numeric::average(rolling_sum(args), rolling_count(args)); - } - }; + template + immediate_rolling_mean_impl(Args const &args) + : mean_(numeric::fdiv(args[sample | Sample()],numeric::one::value)) + { + } -} // namespace impl + template + void operator()(Args const &args) + { + if(is_rolling_window_plus1_full(args)) + { + mean_ += numeric::fdiv(args[sample]-rolling_window_plus1(args).front(),rolling_count(args)); + } + else + { + result_type prev_mean = mean_; + mean_ += numeric::fdiv(args[sample]-prev_mean,rolling_count(args)); + } + } -/////////////////////////////////////////////////////////////////////////////// -// tag::rolling_mean -// -namespace tag -{ - struct rolling_mean - : depends_on< rolling_sum, rolling_count > - { - /// INTERNAL ONLY - /// - typedef accumulators::impl::rolling_mean_impl< mpl::_1 > impl; + template + result_type result(Args const &) const + { + return mean_; + } - #ifdef BOOST_ACCUMULATORS_DOXYGEN_INVOKED - /// tag::rolling_window::window_size named parameter - static boost::parameter::keyword const window_size; - #endif - }; -} // namespace tag + private: -/////////////////////////////////////////////////////////////////////////////// -// extract::rolling_mean -// -namespace extract -{ - extractor const rolling_mean = {}; + result_type mean_; + }; + } // namespace impl - BOOST_ACCUMULATORS_IGNORE_GLOBAL(rolling_mean) -} + /////////////////////////////////////////////////////////////////////////////// + // tag::lazy_rolling_mean + // tag::immediate_rolling_mean + // tag::rolling_mean + // + namespace tag + { + struct lazy_rolling_mean + : depends_on< rolling_sum, rolling_count > + { + /// INTERNAL ONLY + /// + typedef accumulators::impl::lazy_rolling_mean_impl< mpl::_1 > impl; -using extract::rolling_mean; +#ifdef BOOST_ACCUMULATORS_DOXYGEN_INVOKED + /// tag::rolling_window::window_size named parameter + static boost::parameter::keyword const window_size; +#endif + }; + struct immediate_rolling_mean + : depends_on< rolling_window_plus1, rolling_count> + { + /// INTERNAL ONLY + /// + typedef accumulators::impl::immediate_rolling_mean_impl< mpl::_1> impl; + +#ifdef BOOST_ACCUMULATORS_DOXYGEN_INVOKED + /// tag::rolling_window::window_size named parameter + static boost::parameter::keyword const window_size; +#endif + }; + + // make immediate_rolling_mean the default implementation + struct rolling_mean : immediate_rolling_mean {}; + } // namespace tag + + /////////////////////////////////////////////////////////////////////////////// + // extract::lazy_rolling_mean + // extract::immediate_rolling_mean + // extract::rolling_mean + // + namespace extract + { + extractor const lazy_rolling_mean = {}; + extractor const immediate_rolling_mean = {}; + extractor const rolling_mean = {}; + + BOOST_ACCUMULATORS_IGNORE_GLOBAL(lazy_rolling_mean) + BOOST_ACCUMULATORS_IGNORE_GLOBAL(immediate_rolling_mean) + BOOST_ACCUMULATORS_IGNORE_GLOBAL(rolling_mean) + } + + using extract::lazy_rolling_mean; + using extract::immediate_rolling_mean; + using extract::rolling_mean; + + // rolling_mean(lazy) -> lazy_rolling_mean + template<> + struct as_feature + { + typedef tag::lazy_rolling_mean type; + }; + + // rolling_mean(immediate) -> immediate_rolling_mean + template<> + struct as_feature + { + typedef tag::immediate_rolling_mean type; + }; + + // for the purposes of feature-based dependency resolution, + // immediate_rolling_mean provides the same feature as rolling_mean + template<> + struct feature_of + : feature_of + { + }; + + // for the purposes of feature-based dependency resolution, + // lazy_rolling_mean provides the same feature as rolling_mean + template<> + struct feature_of + : feature_of + { + }; }} // namespace boost::accumulators -#endif +#endif \ No newline at end of file diff --git a/3party/boost/boost/accumulators/statistics/rolling_moment.hpp b/3party/boost/boost/accumulators/statistics/rolling_moment.hpp new file mode 100644 index 0000000000..f172cee34f --- /dev/null +++ b/3party/boost/boost/accumulators/statistics/rolling_moment.hpp @@ -0,0 +1,113 @@ +/////////////////////////////////////////////////////////////////////////////// +// rolling_moment.hpp +// Copyright 2005 Eric Niebler. +// Copyright (C) 2014 Pieter Bastiaan Ober (Integricom). +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_ACCUMULATORS_STATISTICS_ROLLING_MOMENT_HPP_EAN_27_11_2005 +#define BOOST_ACCUMULATORS_STATISTICS_ROLLING_MOMENT_HPP_EAN_27_11_2005 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace accumulators +{ +namespace impl +{ + /////////////////////////////////////////////////////////////////////////////// + // rolling_moment_impl + template + struct rolling_moment_impl + : accumulator_base + { + BOOST_MPL_ASSERT_RELATION(N::value, >, 0); + // for boost::result_of + typedef typename numeric::functional::fdiv::result_type result_type; + + template + rolling_moment_impl(Args const &args) + : sum_(args[sample | Sample()]) + { + } + + template + void operator ()(Args const &args) + { + if(is_rolling_window_plus1_full(args)) + { + this->sum_ -= numeric::pow(rolling_window_plus1(args).front(), N()); + } + this->sum_ += numeric::pow(args[sample], N()); + } + + template + result_type result(Args const &args) const + { + return numeric::fdiv(this->sum_, rolling_count(args)); + } + + private: + result_type sum_; + }; +} // namespace impl + +/////////////////////////////////////////////////////////////////////////////// +// tag::rolling_moment +// +namespace tag +{ + template + struct rolling_moment + : depends_on< rolling_window_plus1, rolling_count> + { + /// INTERNAL ONLY + /// + typedef accumulators::impl::rolling_moment_impl, mpl::_1> impl; + + #ifdef BOOST_ACCUMULATORS_DOXYGEN_INVOKED + /// tag::rolling_window::window_size named parameter + static boost::parameter::keyword const window_size; + #endif + }; +} + +/////////////////////////////////////////////////////////////////////////////// +// extract::rolling_moment +// +namespace extract +{ + BOOST_ACCUMULATORS_DEFINE_EXTRACTOR(tag, rolling_moment, (int)) +} + +using extract::rolling_moment; + +// There is no weighted_rolling_moment (yet)... +// +//// So that rolling_moment can be automatically substituted with +//// weighted_rolling_moment when the weight parameter is non-void +//template +//struct as_weighted_feature > +//{ +// typedef tag::weighted_rolling_moment type; +//}; +// +//template +//struct feature_of > +// : feature_of > +//{ +//}; +}} // namespace boost::accumulators + +#endif diff --git a/3party/boost/boost/accumulators/statistics/rolling_sum.hpp b/3party/boost/boost/accumulators/statistics/rolling_sum.hpp index b41ab39e33..bbb7a8e9a0 100644 --- a/3party/boost/boost/accumulators/statistics/rolling_sum.hpp +++ b/3party/boost/boost/accumulators/statistics/rolling_sum.hpp @@ -19,7 +19,6 @@ namespace boost { namespace accumulators { - namespace impl { /////////////////////////////////////////////////////////////////////////////// @@ -47,7 +46,7 @@ namespace impl } template - result_type result(Args const &args) const + result_type result(Args const & /*args*/) const { return this->sum_; } @@ -87,7 +86,6 @@ namespace extract } using extract::rolling_sum; - }} // namespace boost::accumulators #endif diff --git a/3party/boost/boost/accumulators/statistics/rolling_variance.hpp b/3party/boost/boost/accumulators/statistics/rolling_variance.hpp new file mode 100644 index 0000000000..33b3922a50 --- /dev/null +++ b/3party/boost/boost/accumulators/statistics/rolling_variance.hpp @@ -0,0 +1,247 @@ +/////////////////////////////////////////////////////////////////////////////// +// rolling_variance.hpp +// Copyright (C) 2005 Eric Niebler +// Copyright (C) 2014 Pieter Bastiaan Ober (Integricom). +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_ACCUMULATORS_STATISTICS_ROLLING_VARIANCE_HPP_EAN_15_11_2011 +#define BOOST_ACCUMULATORS_STATISTICS_ROLLING_VARIANCE_HPP_EAN_15_11_2011 + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace boost { namespace accumulators +{ +namespace impl +{ + //! Immediate (lazy) calculation of the rolling variance. + /*! + Calculation of sample variance \f$\sigma_n^2\f$ is done as follows, see also + http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance. + For a rolling window of size \f$N\f$, when \f$n <= N\f$, the variance is computed according to the formula + \f[ + \sigma_n^2 = \frac{1}{n-1} \sum_{i = 1}^n (x_i - \mu_n)^2. + \f] + When \f$n > N\f$, the sample variance over the window becomes: + \f[ + \sigma_n^2 = \frac{1}{N-1} \sum_{i = n-N+1}^n (x_i - \mu_n)^2. + \f] + */ + /////////////////////////////////////////////////////////////////////////////// + // lazy_rolling_variance_impl + // + template + struct lazy_rolling_variance_impl + : accumulator_base + { + // for boost::result_of + typedef typename numeric::functional::fdiv::result_type result_type; + + lazy_rolling_variance_impl(dont_care) {} + + template + result_type result(Args const &args) const + { + result_type mean = rolling_mean(args); + size_t nr_samples = rolling_count(args); + if (nr_samples < 2) return result_type(); + return nr_samples*(rolling_moment<2>(args) - mean*mean)/(nr_samples-1); + } + }; + + //! Iterative calculation of the rolling variance. + /*! + Iterative calculation of sample variance \f$\sigma_n^2\f$ is done as follows, see also + http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance. + For a rolling window of size \f$N\f$, for the first \f$N\f$ samples, the variance is computed according to the formula + \f[ + \sigma_n^2 = \frac{1}{n-1} \sum_{i = 1}^n (x_i - \mu_n)^2 = \frac{1}{n-1}M_{2,n}, + \f] + where the sum of squares \f$M_{2,n}\f$ can be recursively computed as: + \f[ + M_{2,n} = \sum_{i = 1}^n (x_i - \mu_n)^2 = M_{2,n-1} + (x_n - \mu_n)(x_n - \mu_{n-1}), + \f] + and the estimate of the sample mean as: + \f[ + \mu_n = \frac{1}{n} \sum_{i = 1}^n x_i = \mu_{n-1} + \frac{1}{n}(x_n - \mu_{n-1}). + \f] + For further samples, when the rolling window is fully filled with data, one has to take into account that the oldest + sample \f$x_{n-N}\f$ is dropped from the window. The sample variance over the window now becomes: + \f[ + \sigma_n^2 = \frac{1}{N-1} \sum_{i = n-N+1}^n (x_i - \mu_n)^2 = \frac{1}{n-1}M_{2,n}, + \f] + where the sum of squares \f$M_{2,n}\f$ now equals: + \f[ + M_{2,n} = \sum_{i = n-N+1}^n (x_i - \mu_n)^2 = M_{2,n-1} + (x_n - \mu_n)(x_n - \mu_{n-1}) - (x_{n-N} - \mu_n)(x_{n-N} - \mu_{n-1}), + \f] + and the estimated mean is: + \f[ + \mu_n = \frac{1}{N} \sum_{i = n-N+1}^n x_i = \mu_{n-1} + \frac{1}{n}(x_n - x_{n-N}). + \f] + + Note that the sample variance is not defined for \f$n <= 1\f$. + + */ + /////////////////////////////////////////////////////////////////////////////// + // immediate_rolling_variance_impl + // + template + struct immediate_rolling_variance_impl + : accumulator_base + { + // for boost::result_of + typedef typename numeric::functional::fdiv::result_type result_type; + + template + immediate_rolling_variance_impl(Args const &args) + : previous_mean_(numeric::fdiv(args[sample | Sample()], numeric::one::value)) + , sum_of_squares_(numeric::fdiv(args[sample | Sample()], numeric::one::value)) + { + } + + template + void operator()(Args const &args) + { + Sample added_sample = args[sample]; + + result_type mean = immediate_rolling_mean(args); + sum_of_squares_ += (added_sample-mean)*(added_sample-previous_mean_); + + if(is_rolling_window_plus1_full(args)) + { + Sample removed_sample = rolling_window_plus1(args).front(); + sum_of_squares_ -= (removed_sample-mean)*(removed_sample-previous_mean_); + prevent_underflow(sum_of_squares_); + } + previous_mean_ = mean; + } + + template + result_type result(Args const &args) const + { + size_t nr_samples = rolling_count(args); + if (nr_samples < 2) return result_type(); + return numeric::fdiv(sum_of_squares_,(nr_samples-1)); + } + + private: + + result_type previous_mean_; + result_type sum_of_squares_; + + template + void prevent_underflow(T &non_negative_number,typename boost::enable_if,T>::type* = 0) + { + if (non_negative_number < T(0)) non_negative_number = T(0); + } + template + void prevent_underflow(T &non_arithmetic_quantity,typename boost::disable_if,T>::type* = 0) + { + } + }; +} // namespace impl + +/////////////////////////////////////////////////////////////////////////////// +// tag:: lazy_rolling_variance +// tag:: immediate_rolling_variance +// tag:: rolling_variance +// +namespace tag +{ + struct lazy_rolling_variance + : depends_on< rolling_count, rolling_mean, rolling_moment<2> > + { + /// INTERNAL ONLY + /// + typedef accumulators::impl::lazy_rolling_variance_impl< mpl::_1 > impl; + + #ifdef BOOST_ACCUMULATORS_DOXYGEN_INVOKED + /// tag::rolling_window::window_size named parameter + static boost::parameter::keyword const window_size; + #endif + }; + + struct immediate_rolling_variance + : depends_on< rolling_window_plus1, rolling_count, immediate_rolling_mean> + { + /// INTERNAL ONLY + /// + typedef accumulators::impl::immediate_rolling_variance_impl< mpl::_1> impl; + + #ifdef BOOST_ACCUMULATORS_DOXYGEN_INVOKED + /// tag::rolling_window::window_size named parameter + static boost::parameter::keyword const window_size; + #endif + }; + + // make immediate_rolling_variance the default implementation + struct rolling_variance : immediate_rolling_variance {}; +} // namespace tag + +/////////////////////////////////////////////////////////////////////////////// +// extract::lazy_rolling_variance +// extract::immediate_rolling_variance +// extract::rolling_variance +// +namespace extract +{ + extractor const lazy_rolling_variance = {}; + extractor const immediate_rolling_variance = {}; + extractor const rolling_variance = {}; + + BOOST_ACCUMULATORS_IGNORE_GLOBAL(lazy_rolling_variance) + BOOST_ACCUMULATORS_IGNORE_GLOBAL(immediate_rolling_variance) + BOOST_ACCUMULATORS_IGNORE_GLOBAL(rolling_variance) +} + +using extract::lazy_rolling_variance; +using extract::immediate_rolling_variance; +using extract::rolling_variance; + +// rolling_variance(lazy) -> lazy_rolling_variance +template<> +struct as_feature +{ + typedef tag::lazy_rolling_variance type; +}; + +// rolling_variance(immediate) -> immediate_rolling_variance +template<> +struct as_feature +{ + typedef tag::immediate_rolling_variance type; +}; + +// for the purposes of feature-based dependency resolution, +// lazy_rolling_variance provides the same feature as rolling_variance +template<> +struct feature_of + : feature_of +{ +}; + +// for the purposes of feature-based dependency resolution, +// immediate_rolling_variance provides the same feature as rolling_variance +template<> +struct feature_of + : feature_of +{ +}; +}} // namespace boost::accumulators + +#endif diff --git a/3party/boost/boost/accumulators/statistics/skewness.hpp b/3party/boost/boost/accumulators/statistics/skewness.hpp index c60eda12b0..c383ec4a6c 100644 --- a/3party/boost/boost/accumulators/statistics/skewness.hpp +++ b/3party/boost/boost/accumulators/statistics/skewness.hpp @@ -48,7 +48,7 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; skewness_impl(dont_care) { @@ -57,7 +57,7 @@ namespace impl template result_type result(Args const &args) const { - return numeric::average( + return numeric::fdiv( accumulators::moment<3>(args) - 3. * accumulators::moment<2>(args) * mean(args) + 2. * mean(args) * mean(args) * mean(args) diff --git a/3party/boost/boost/accumulators/statistics/tail_mean.hpp b/3party/boost/boost/accumulators/statistics/tail_mean.hpp index 323eeb0f91..67dae37b50 100644 --- a/3party/boost/boost/accumulators/statistics/tail_mean.hpp +++ b/3party/boost/boost/accumulators/statistics/tail_mean.hpp @@ -62,7 +62,7 @@ namespace impl struct coherent_tail_mean_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef float_type result_type; @@ -82,10 +82,10 @@ namespace impl extractor > const some_non_coherent_tail_mean = {}; return some_non_coherent_tail_mean(args) - + numeric::average(quantile(args), n) + + numeric::fdiv(quantile(args), n) * ( ( is_same::value ) ? args[quantile_probability] : 1. - args[quantile_probability] - - numeric::average(n, count(args)) + - numeric::fdiv(n, count(args)) ); } }; @@ -117,7 +117,7 @@ namespace impl struct non_coherent_tail_mean_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef float_type result_type; @@ -136,7 +136,7 @@ namespace impl // If n is in a valid range, return result, otherwise return NaN or throw exception if (n <= static_cast(tail(args).size())) - return numeric::average( + return numeric::fdiv( std::accumulate( tail(args).begin() , tail(args).begin() + n diff --git a/3party/boost/boost/accumulators/statistics/tail_variate_means.hpp b/3party/boost/boost/accumulators/statistics/tail_variate_means.hpp index 98991e217b..d34d4abcd5 100644 --- a/3party/boost/boost/accumulators/statistics/tail_variate_means.hpp +++ b/3party/boost/boost/accumulators/statistics/tail_variate_means.hpp @@ -79,7 +79,7 @@ namespace impl struct tail_variate_means_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector array_type; // for boost::result_of typedef iterator_range result_type; diff --git a/3party/boost/boost/accumulators/statistics/variance.hpp b/3party/boost/boost/accumulators/statistics/variance.hpp index 81807a2621..baac55696b 100644 --- a/3party/boost/boost/accumulators/statistics/variance.hpp +++ b/3party/boost/boost/accumulators/statistics/variance.hpp @@ -42,7 +42,7 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; lazy_variance_impl(dont_care) {} @@ -85,11 +85,11 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; template variance_impl(Args const &args) - : variance(numeric::average(args[sample | Sample()], numeric::one::value)) + : variance(numeric::fdiv(args[sample | Sample()], numeric::one::value)) { } @@ -103,8 +103,8 @@ namespace impl extractor mean; result_type tmp = args[parameter::keyword::get()] - mean(args); this->variance = - numeric::average(this->variance * (cnt - 1), cnt) - + numeric::average(tmp * tmp, cnt - 1); + numeric::fdiv(this->variance * (cnt - 1), cnt) + + numeric::fdiv(tmp * tmp, cnt - 1); } } diff --git a/3party/boost/boost/accumulators/statistics/weighted_covariance.hpp b/3party/boost/boost/accumulators/statistics/weighted_covariance.hpp index 83585b1b65..25d613c120 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_covariance.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_covariance.hpp @@ -57,8 +57,8 @@ namespace impl struct weighted_covariance_impl : accumulator_base { - typedef typename numeric::functional::multiplies::result_type>::result_type weighted_sample_type; - typedef typename numeric::functional::multiplies::result_type>::result_type weighted_variate_type; + typedef typename numeric::functional::multiplies::result_type>::result_type weighted_sample_type; + typedef typename numeric::functional::multiplies::result_type>::result_type weighted_variate_type; // for boost::result_of typedef typename numeric::functional::outer_product::result_type result_type; @@ -66,9 +66,9 @@ namespace impl weighted_covariance_impl(Args const &args) : cov_( numeric::outer_product( - numeric::average(args[sample | Sample()], (std::size_t)1) + numeric::fdiv(args[sample | Sample()], (std::size_t)1) * numeric::one::value - , numeric::average(args[parameter::keyword::get() | VariateType()], (std::size_t)1) + , numeric::fdiv(args[parameter::keyword::get() | VariateType()], (std::size_t)1) * numeric::one::value ) ) diff --git a/3party/boost/boost/accumulators/statistics/weighted_density.hpp b/3party/boost/boost/accumulators/statistics/weighted_density.hpp index 68dc639377..1407368016 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_density.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_density.hpp @@ -50,7 +50,7 @@ namespace impl struct weighted_density_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector > histogram_type; typedef std::vector array_type; // for boost::result_of @@ -66,8 +66,8 @@ namespace impl , histogram( num_bins + 2 , std::make_pair( - numeric::average(args[sample | Sample()],(std::size_t)1) - , numeric::average(args[sample | Sample()],(std::size_t)1) + numeric::fdiv(args[sample | Sample()],(std::size_t)1) + , numeric::fdiv(args[sample | Sample()],(std::size_t)1) ) ) , is_dirty(true) @@ -92,9 +92,9 @@ namespace impl // Store their lower bounds (bin_positions) and fill the bins with the cached samples (samples_in_bin). if (cnt == this->cache_size) { - float_type minimum = numeric::average((min)(args),(std::size_t)1); - float_type maximum = numeric::average((max)(args),(std::size_t)1); - float_type bin_size = numeric::average(maximum - minimum, this->num_bins); + float_type minimum = numeric::fdiv((min)(args),(std::size_t)1); + float_type maximum = numeric::fdiv((max)(args),(std::size_t)1); + float_type bin_size = numeric::fdiv(maximum - minimum, this->num_bins); // determine bin positions (their lower bounds) for (std::size_t i = 0; i < this->num_bins + 2; ++i) @@ -163,7 +163,7 @@ namespace impl for (std::size_t i = 0; i < this->num_bins + 2; ++i) { - this->histogram[i] = std::make_pair(this->bin_positions[i], numeric::average(this->samples_in_bin[i], sum_of_weights(args))); + this->histogram[i] = std::make_pair(this->bin_positions[i], numeric::fdiv(this->samples_in_bin[i], sum_of_weights(args))); } } diff --git a/3party/boost/boost/accumulators/statistics/weighted_extended_p_square.hpp b/3party/boost/boost/accumulators/statistics/weighted_extended_p_square.hpp index 6116029825..ac857e056d 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_extended_p_square.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_extended_p_square.hpp @@ -67,7 +67,7 @@ namespace impl : accumulator_base { typedef typename numeric::functional::multiplies::result_type weighted_sample; - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector array_type; // for boost::result_of typedef iterator_range< diff --git a/3party/boost/boost/accumulators/statistics/weighted_kurtosis.hpp b/3party/boost/boost/accumulators/statistics/weighted_kurtosis.hpp index d51db5cd38..3fd4ed7b41 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_kurtosis.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_kurtosis.hpp @@ -52,7 +52,7 @@ namespace impl { typedef typename numeric::functional::multiplies::result_type weighted_sample; // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; weighted_kurtosis_impl(dont_care) { @@ -61,7 +61,7 @@ namespace impl template result_type result(Args const &args) const { - return numeric::average( + return numeric::fdiv( accumulators::weighted_moment<4>(args) - 4. * accumulators::weighted_moment<3>(args) * weighted_mean(args) + 6. * accumulators::weighted_moment<2>(args) * weighted_mean(args) * weighted_mean(args) diff --git a/3party/boost/boost/accumulators/statistics/weighted_mean.hpp b/3party/boost/boost/accumulators/statistics/weighted_mean.hpp index c8d651353a..a80ef0984c 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_mean.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_mean.hpp @@ -36,7 +36,7 @@ namespace impl { typedef typename numeric::functional::multiplies::result_type weighted_sample; // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; weighted_mean_impl(dont_care) {} @@ -53,7 +53,7 @@ namespace impl extractor const some_weighted_sum = {}; - return numeric::average(some_weighted_sum(args), sum_of_weights(args)); + return numeric::fdiv(some_weighted_sum(args), sum_of_weights(args)); } }; @@ -66,12 +66,12 @@ namespace impl { typedef typename numeric::functional::multiplies::result_type weighted_sample; // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; template immediate_weighted_mean_impl(Args const &args) : mean( - numeric::average( + numeric::fdiv( args[parameter::keyword::get() | Sample()] * numeric::one::value , numeric::one::value @@ -89,7 +89,7 @@ namespace impl Weight w_sum = sum_of_weights(args); Weight w = args[weight]; weighted_sample const &s = args[parameter::keyword::get()] * w; - this->mean = numeric::average(this->mean * (w_sum - w) + s, w_sum); + this->mean = numeric::fdiv(this->mean * (w_sum - w) + s, w_sum); } result_type result(dont_care) const diff --git a/3party/boost/boost/accumulators/statistics/weighted_median.hpp b/3party/boost/boost/accumulators/statistics/weighted_median.hpp index b8b94f9f9f..ed7cadb331 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_median.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_median.hpp @@ -40,7 +40,7 @@ namespace impl : accumulator_base { // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; weighted_median_impl(dont_care) {} @@ -65,7 +65,7 @@ namespace impl struct with_density_weighted_median_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector > histogram_type; typedef iterator_range range_type; // for boost::result_of @@ -73,7 +73,7 @@ namespace impl template with_density_weighted_median_impl(Args const &args) - : sum(numeric::average(args[sample | Sample()], (std::size_t)1)) + : sum(numeric::fdiv(args[sample | Sample()], (std::size_t)1)) , is_dirty(true) { } @@ -99,7 +99,7 @@ namespace impl ++it; } --it; - float_type over = numeric::average(this->sum - 0.5 * cnt, it->second * cnt); + float_type over = numeric::fdiv(this->sum - 0.5 * cnt, it->second * cnt); this->median = it->first * over + (it + 1)->first * ( 1. - over ); } @@ -127,7 +127,7 @@ namespace impl : accumulator_base { typedef typename numeric::functional::multiplies::result_type weighted_sample; - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector > histogram_type; typedef iterator_range range_type; // for boost::result_of @@ -156,7 +156,7 @@ namespace impl { ++it; } - float_type over = numeric::average(it->second - 0.5, it->second - (it - 1)->second); + float_type over = numeric::fdiv(it->second - 0.5, it->second - (it - 1)->second); this->median = it->first * over + (it + 1)->first * ( 1. - over ); } diff --git a/3party/boost/boost/accumulators/statistics/weighted_moment.hpp b/3party/boost/boost/accumulators/statistics/weighted_moment.hpp index f49c362d95..011701c704 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_moment.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_moment.hpp @@ -40,7 +40,7 @@ namespace impl BOOST_MPL_ASSERT_RELATION(N::value, >, 0); typedef typename numeric::functional::multiplies::result_type weighted_sample; // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; template weighted_moment_impl(Args const &args) @@ -57,7 +57,7 @@ namespace impl template result_type result(Args const &args) const { - return numeric::average(this->sum, sum_of_weights(args)); + return numeric::fdiv(this->sum, sum_of_weights(args)); } private: diff --git a/3party/boost/boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp b/3party/boost/boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp index de707f5cb5..ce750ed1f5 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp @@ -53,7 +53,7 @@ namespace impl : accumulator_base { typedef typename numeric::functional::multiplies::result_type weighted_sample; - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef std::vector > histogram_type; typedef std::vector array_type; // for boost::result_of @@ -153,7 +153,7 @@ namespace impl for (std::size_t i = 1; i < b + 1; ++i) { this->desired_positions[i] = this->actual_positions[0] - + numeric::average((i-1) * (sum_of_weights(args) - this->actual_positions[0]), b); + + numeric::fdiv((i-1) * (sum_of_weights(args) - this->actual_positions[0]), b); } // adjust heights of markers 2 to num_cells if necessary @@ -214,7 +214,7 @@ namespace impl for (std::size_t i = 0; i < this->histogram.size(); ++i) { - this->histogram[i] = std::make_pair(this->heights[i], numeric::average(this->actual_positions[i], sum_of_weights(args))); + this->histogram[i] = std::make_pair(this->heights[i], numeric::fdiv(this->actual_positions[i], sum_of_weights(args))); } } diff --git a/3party/boost/boost/accumulators/statistics/weighted_p_square_quantile.hpp b/3party/boost/boost/accumulators/statistics/weighted_p_square_quantile.hpp index 73774abfb7..2ebc7b1845 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_p_square_quantile.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_p_square_quantile.hpp @@ -55,7 +55,7 @@ namespace impl { : accumulator_base { typedef typename numeric::functional::multiplies::result_type weighted_sample; - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; typedef array array_type; // for boost::result_of typedef float_type result_type; diff --git a/3party/boost/boost/accumulators/statistics/weighted_peaks_over_threshold.hpp b/3party/boost/boost/accumulators/statistics/weighted_peaks_over_threshold.hpp index 8ee2c56005..418b38cfe0 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_peaks_over_threshold.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_peaks_over_threshold.hpp @@ -56,16 +56,16 @@ namespace impl : accumulator_base { typedef typename numeric::functional::multiplies::result_type weighted_sample; - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef boost::tuple result_type; template weighted_peaks_over_threshold_impl(Args const &args) : sign_((is_same::value) ? -1 : 1) - , mu_(sign_ * numeric::average(args[sample | Sample()], (std::size_t)1)) - , sigma2_(numeric::average(args[sample | Sample()], (std::size_t)1)) - , w_sum_(numeric::average(args[weight | Weight()], (std::size_t)1)) + , mu_(sign_ * numeric::fdiv(args[sample | Sample()], (std::size_t)1)) + , sigma2_(numeric::fdiv(args[sample | Sample()], (std::size_t)1)) + , w_sum_(numeric::fdiv(args[weight | Weight()], (std::size_t)1)) , threshold_(sign_ * args[pot_threshold_value]) , fit_parameters_(boost::make_tuple(0., 0., 0.)) , is_dirty_(true) @@ -92,13 +92,13 @@ namespace impl { this->is_dirty_ = false; - this->mu_ = this->sign_ * numeric::average(this->mu_, this->w_sum_); - this->sigma2_ = numeric::average(this->sigma2_, this->w_sum_); + this->mu_ = this->sign_ * numeric::fdiv(this->mu_, this->w_sum_); + this->sigma2_ = numeric::fdiv(this->sigma2_, this->w_sum_); this->sigma2_ -= this->mu_ * this->mu_; - float_type threshold_probability = numeric::average(sum_of_weights(args) - this->w_sum_, sum_of_weights(args)); + float_type threshold_probability = numeric::fdiv(sum_of_weights(args) - this->w_sum_, sum_of_weights(args)); - float_type tmp = numeric::average(( this->mu_ - this->threshold_ )*( this->mu_ - this->threshold_ ), this->sigma2_); + float_type tmp = numeric::fdiv(( this->mu_ - this->threshold_ )*( this->mu_ - this->threshold_ ), this->sigma2_); float_type xi_hat = 0.5 * ( 1. - tmp ); float_type beta_hat = 0.5 * ( this->mu_ - this->threshold_ ) * ( 1. + tmp ); float_type beta_bar = beta_hat * std::pow(1. - threshold_probability, xi_hat); @@ -135,15 +135,15 @@ namespace impl : accumulator_base { typedef typename numeric::functional::multiplies::result_type weighted_sample; - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef boost::tuple result_type; template weighted_peaks_over_threshold_prob_impl(Args const &args) : sign_((is_same::value) ? -1 : 1) - , mu_(sign_ * numeric::average(args[sample | Sample()], (std::size_t)1)) - , sigma2_(numeric::average(args[sample | Sample()], (std::size_t)1)) + , mu_(sign_ * numeric::fdiv(args[sample | Sample()], (std::size_t)1)) + , sigma2_(numeric::fdiv(args[sample | Sample()], (std::size_t)1)) , threshold_probability_(args[pot_threshold_probability]) , fit_parameters_(boost::make_tuple(0., 0., 0.)) , is_dirty_(true) @@ -200,14 +200,14 @@ namespace impl float_type u = *(tail(args).begin() + n - 1) * this->sign_; - this->mu_ = this->sign_ * numeric::average(this->mu_, sum); - this->sigma2_ = numeric::average(this->sigma2_, sum); + this->mu_ = this->sign_ * numeric::fdiv(this->mu_, sum); + this->sigma2_ = numeric::fdiv(this->sigma2_, sum); this->sigma2_ -= this->mu_ * this->mu_; if (is_same::value) this->threshold_probability_ = 1. - this->threshold_probability_; - float_type tmp = numeric::average(( this->mu_ - u )*( this->mu_ - u ), this->sigma2_); + float_type tmp = numeric::fdiv(( this->mu_ - u )*( this->mu_ - u ), this->sigma2_); float_type xi_hat = 0.5 * ( 1. - tmp ); float_type beta_hat = 0.5 * ( this->mu_ - u ) * ( 1. + tmp ); float_type beta_bar = beta_hat * std::pow(1. - threshold_probability_, xi_hat); diff --git a/3party/boost/boost/accumulators/statistics/weighted_skewness.hpp b/3party/boost/boost/accumulators/statistics/weighted_skewness.hpp index 6ccbc45ca1..a3ac3876f5 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_skewness.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_skewness.hpp @@ -51,14 +51,14 @@ namespace impl { typedef typename numeric::functional::multiplies::result_type weighted_sample; // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; weighted_skewness_impl(dont_care) {} template result_type result(Args const &args) const { - return numeric::average( + return numeric::fdiv( accumulators::weighted_moment<3>(args) - 3. * accumulators::weighted_moment<2>(args) * weighted_mean(args) + 2. * weighted_mean(args) * weighted_mean(args) * weighted_mean(args) diff --git a/3party/boost/boost/accumulators/statistics/weighted_tail_mean.hpp b/3party/boost/boost/accumulators/statistics/weighted_tail_mean.hpp index 5bdee8aadc..bae8530674 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_tail_mean.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_tail_mean.hpp @@ -82,9 +82,9 @@ namespace impl : accumulator_base { typedef typename numeric::functional::multiplies::result_type weighted_sample; - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; non_coherent_weighted_tail_mean_impl(dont_care) {} @@ -120,7 +120,7 @@ namespace impl } } - return numeric::average( + return numeric::fdiv( std::inner_product( tail(args).begin() , tail(args).begin() + n diff --git a/3party/boost/boost/accumulators/statistics/weighted_tail_quantile.hpp b/3party/boost/boost/accumulators/statistics/weighted_tail_quantile.hpp index 88c32d1f61..b143457dd0 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_tail_quantile.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_tail_quantile.hpp @@ -66,7 +66,7 @@ namespace impl struct weighted_tail_quantile_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; + typedef typename numeric::functional::fdiv::result_type float_type; // for boost::result_of typedef Sample result_type; diff --git a/3party/boost/boost/accumulators/statistics/weighted_tail_variate_means.hpp b/3party/boost/boost/accumulators/statistics/weighted_tail_variate_means.hpp index ff08ae5060..2c9078335d 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_tail_variate_means.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_tail_variate_means.hpp @@ -107,8 +107,8 @@ namespace impl struct weighted_tail_variate_means_impl : accumulator_base { - typedef typename numeric::functional::average::result_type float_type; - typedef typename numeric::functional::average::result_type, Weight>::result_type array_type; + typedef typename numeric::functional::fdiv::result_type float_type; + typedef typename numeric::functional::fdiv::result_type, Weight>::result_type array_type; // for boost::result_of typedef iterator_range result_type; diff --git a/3party/boost/boost/accumulators/statistics/weighted_variance.hpp b/3party/boost/boost/accumulators/statistics/weighted_variance.hpp index bb3bc0e3df..bc199affa4 100644 --- a/3party/boost/boost/accumulators/statistics/weighted_variance.hpp +++ b/3party/boost/boost/accumulators/statistics/weighted_variance.hpp @@ -41,7 +41,7 @@ namespace impl { typedef typename numeric::functional::multiplies::result_type weighted_sample; // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; lazy_weighted_variance_impl(dont_care) {} @@ -73,11 +73,11 @@ namespace impl { typedef typename numeric::functional::multiplies::result_type weighted_sample; // for boost::result_of - typedef typename numeric::functional::average::result_type result_type; + typedef typename numeric::functional::fdiv::result_type result_type; template weighted_variance_impl(Args const &args) - : weighted_variance(numeric::average(args[sample | Sample()], numeric::one::value)) + : weighted_variance(numeric::fdiv(args[sample | Sample()], numeric::one::value)) { } @@ -93,8 +93,8 @@ namespace impl result_type tmp = args[parameter::keyword::get()] - some_mean(args); this->weighted_variance = - numeric::average(this->weighted_variance * (sum_of_weights(args) - args[weight]), sum_of_weights(args)) - + numeric::average(tmp * tmp * args[weight], sum_of_weights(args) - args[weight] ); + numeric::fdiv(this->weighted_variance * (sum_of_weights(args) - args[weight]), sum_of_weights(args)) + + numeric::fdiv(tmp * tmp * args[weight], sum_of_weights(args) - args[weight] ); } } diff --git a/3party/boost/boost/algorithm/clamp.hpp b/3party/boost/boost/algorithm/clamp.hpp index ae98d15d2f..7bfa47ec9b 100644 --- a/3party/boost/boost/algorithm/clamp.hpp +++ b/3party/boost/boost/algorithm/clamp.hpp @@ -31,8 +31,8 @@ namespace boost { namespace algorithm { /// \fn clamp ( T const& val, -/// typename boost::mpl::identity::type const& lo, -/// typename boost::mpl::identity::type const& hi, Pred p ) +/// typename boost::mpl::identity::type const & lo, +/// typename boost::mpl::identity::type const & hi, Pred p ) /// \return the value "val" brought into the range [ lo, hi ] /// using the comparison predicate p. /// If p ( val, lo ) return lo. @@ -56,8 +56,8 @@ namespace boost { namespace algorithm { /// \fn clamp ( T const& val, -/// typename boost::mpl::identity::type const& lo, -/// typename boost::mpl::identity::type const& hi ) +/// typename boost::mpl::identity::type const & lo, +/// typename boost::mpl::identity::type const & hi ) /// \return the value "val" brought into the range [ lo, hi ]. /// If the value is less than lo, return lo. /// If the value is greater than "hi", return hi. @@ -76,8 +76,8 @@ namespace boost { namespace algorithm { } /// \fn clamp_range ( InputIterator first, InputIterator last, OutputIterator out, -/// std::iterator_traits::value_type lo, -/// std::iterator_traits::value_type hi ) +/// std::iterator_traits::value_type const & lo, +/// std::iterator_traits::value_type const & hi ) /// \return clamp the sequence of values [first, last) into [ lo, hi ] /// /// \param first The start of the range of values @@ -88,8 +88,8 @@ namespace boost { namespace algorithm { /// template OutputIterator clamp_range ( InputIterator first, InputIterator last, OutputIterator out, - typename std::iterator_traits::value_type lo, - typename std::iterator_traits::value_type hi ) + typename std::iterator_traits::value_type const & lo, + typename std::iterator_traits::value_type const & hi ) { // this could also be written with bind and std::transform while ( first != last ) @@ -98,8 +98,8 @@ namespace boost { namespace algorithm { } /// \fn clamp_range ( const Range &r, OutputIterator out, -/// typename std::iterator_traits::type>::value_type lo, -/// typename std::iterator_traits::type>::value_type hi ) +/// typename std::iterator_traits::type>::value_type const & lo, +/// typename std::iterator_traits::type>::value_type const & hi ) /// \return clamp the sequence of values [first, last) into [ lo, hi ] /// /// \param r The range of values to be clamped @@ -110,16 +110,16 @@ namespace boost { namespace algorithm { template typename boost::disable_if_c::value, OutputIterator>::type clamp_range ( const Range &r, OutputIterator out, - typename std::iterator_traits::type>::value_type lo, - typename std::iterator_traits::type>::value_type hi ) + typename std::iterator_traits::type>::value_type const & lo, + typename std::iterator_traits::type>::value_type const & hi ) { return clamp_range ( boost::begin ( r ), boost::end ( r ), out, lo, hi ); } /// \fn clamp_range ( InputIterator first, InputIterator last, OutputIterator out, -/// std::iterator_traits::value_type lo, -/// std::iterator_traits::value_type hi, Pred p ) +/// std::iterator_traits::value_type const & lo, +/// std::iterator_traits::value_type const & hi, Pred p ) /// \return clamp the sequence of values [first, last) into [ lo, hi ] /// using the comparison predicate p. /// @@ -134,8 +134,8 @@ namespace boost { namespace algorithm { /// template OutputIterator clamp_range ( InputIterator first, InputIterator last, OutputIterator out, - typename std::iterator_traits::value_type lo, - typename std::iterator_traits::value_type hi, Pred p ) + typename std::iterator_traits::value_type const & lo, + typename std::iterator_traits::value_type const & hi, Pred p ) { // this could also be written with bind and std::transform while ( first != last ) @@ -144,8 +144,8 @@ namespace boost { namespace algorithm { } /// \fn clamp_range ( const Range &r, OutputIterator out, -/// typename std::iterator_traits::type>::value_type lo, -/// typename std::iterator_traits::type>::value_type hi, +/// typename std::iterator_traits::type>::value_type const & lo, +/// typename std::iterator_traits::type>::value_type const & hi, /// Pred p ) /// \return clamp the sequence of values [first, last) into [ lo, hi ] /// using the comparison predicate p. @@ -162,8 +162,8 @@ namespace boost { namespace algorithm { template typename boost::disable_if_c::value, OutputIterator>::type clamp_range ( const Range &r, OutputIterator out, - typename std::iterator_traits::type>::value_type lo, - typename std::iterator_traits::type>::value_type hi, + typename std::iterator_traits::type>::value_type const & lo, + typename std::iterator_traits::type>::value_type const & hi, Pred p ) { return clamp_range ( boost::begin ( r ), boost::end ( r ), out, lo, hi, p ); diff --git a/3party/boost/boost/algorithm/cxx11/iota.hpp b/3party/boost/boost/algorithm/cxx11/iota.hpp index b4f0dafa6d..eb32390b0f 100644 --- a/3party/boost/boost/algorithm/cxx11/iota.hpp +++ b/3party/boost/boost/algorithm/cxx11/iota.hpp @@ -63,8 +63,8 @@ void iota ( Range &r, T value ) template OutputIterator iota_n ( OutputIterator out, T value, std::size_t n ) { - while ( n-- > 0 ) - *out++ = value++; + for ( ; n > 0; --n, ++value ) + *out++ = value; return out; } diff --git a/3party/boost/boost/algorithm/cxx11/is_permutation.hpp b/3party/boost/boost/algorithm/cxx11/is_permutation.hpp index e1273f1d80..9b3bc220fa 100644 --- a/3party/boost/boost/algorithm/cxx11/is_permutation.hpp +++ b/3party/boost/boost/algorithm/cxx11/is_permutation.hpp @@ -9,8 +9,8 @@ /// \brief Is a sequence a permutation of another sequence /// \author Marshall Clow -#ifndef BOOST_ALGORITHM_IS_PERMUTATION_HPP -#define BOOST_ALGORITHM_IS_PERMUTATION_HPP +#ifndef BOOST_ALGORITHM_IS_PERMUTATION11_HPP +#define BOOST_ALGORITHM_IS_PERMUTATION11_HPP #include // for std::less, tie, mismatch and is_permutation (if available) #include // for std::make_pair @@ -21,7 +21,6 @@ #include #include #include -#include // for tie namespace boost { namespace algorithm { @@ -121,7 +120,6 @@ bool is_permutation ( ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, BinaryPredicate p ) { // Skip the common prefix (if any) -// std::tie (first1, first2) = std::mismatch (first1, last1, first2, p); std::pair eq = std::mismatch (first1, last1, first2, p); first1 = eq.first; first2 = eq.second; @@ -165,56 +163,6 @@ bool is_permutation ( ForwardIterator1 first1, ForwardIterator1 last1, ForwardIt #endif -/// \fn is_permutation ( ForwardIterator1 first, ForwardIterator1 last, -/// ForwardIterator2 first2, ForwardIterator2 last2 ) -/// \brief Tests to see if the sequence [first,last) is a permutation of the sequence starting at first2 -/// -/// \param first1 The start of the input sequence -/// \param last2 One past the end of the input sequence -/// \param first2 The start of the second sequence -/// \param last1 One past the end of the second sequence -/// \note This function is part of the C++2011 standard library. -/// We will use the standard one if it is available, -/// otherwise we have our own implementation. -template< class ForwardIterator1, class ForwardIterator2 > -bool is_permutation ( ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2 ) -{ -// How should I deal with the idea that ForwardIterator1::value_type -// and ForwardIterator2::value_type could be different? Define my own comparison predicate? - return boost::algorithm::detail::is_permutation_tag ( - first1, last1, first2, last2, - std::equal_to::value_type> (), - typename std::iterator_traits::iterator_category (), - typename std::iterator_traits::iterator_category ()); -} - -/// \fn is_permutation ( ForwardIterator1 first, ForwardIterator1 last, -/// ForwardIterator2 first2, ForwardIterator2 last2, -/// BinaryPredicate p ) -/// \brief Tests to see if the sequence [first,last) is a permutation of the sequence starting at first2 -/// -/// \param first1 The start of the input sequence -/// \param last1 One past the end of the input sequence -/// \param first2 The start of the second sequence -/// \param last2 One past the end of the second sequence -/// \param pred The predicate to compare elements with -/// -/// \note This function is part of the C++2011 standard library. -/// We will use the standard one if it is available, -/// otherwise we have our own implementation. -template< class ForwardIterator1, class ForwardIterator2, class BinaryPredicate > -bool is_permutation ( ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred ) -{ - return boost::algorithm::detail::is_permutation_tag ( - first1, last1, first2, last2, pred, - typename std::iterator_traits::iterator_category (), - typename std::iterator_traits::iterator_category ()); -} - - /// \fn is_permutation ( const Range &r, ForwardIterator first2 ) /// \brief Tests to see if the sequence [first,last) is a permutation of the sequence starting at first2 @@ -245,4 +193,4 @@ is_permutation ( const Range &r, ForwardIterator first2, BinaryPredicate pred ) }} -#endif // BOOST_ALGORITHM_IS_PERMUTATION_HPP +#endif // BOOST_ALGORITHM_IS_PERMUTATION11_HPP diff --git a/3party/boost/boost/algorithm/cxx14/equal.hpp b/3party/boost/boost/algorithm/cxx14/equal.hpp index d10c09604a..cfc62d5f10 100644 --- a/3party/boost/boost/algorithm/cxx14/equal.hpp +++ b/3party/boost/boost/algorithm/cxx14/equal.hpp @@ -12,41 +12,41 @@ #ifndef BOOST_ALGORITHM_EQUAL_HPP #define BOOST_ALGORITHM_EQUAL_HPP -#include // for std::equal -#include // for std::equal_to +#include // for std::equal +#include // for std::equal_to namespace boost { namespace algorithm { namespace detail { - template - struct eq : public std::binary_function { - bool operator () ( const T1& v1, const T2& v2 ) const { return v1 == v2 ;} - }; - - template - bool equal ( RandomAccessIterator1 first1, RandomAccessIterator1 last1, - RandomAccessIterator2 first2, RandomAccessIterator2 last2, BinaryPredicate pred, - std::random_access_iterator_tag, std::random_access_iterator_tag ) - { - // Random-access iterators let is check the sizes in constant time - if ( std::distance ( first1, last1 ) != std::distance ( first2, last2 )) - return false; - // If we know that the sequences are the same size, the original version is fine - return std::equal ( first1, last1, first2, pred ); - } + template + struct eq : public std::binary_function { + bool operator () ( const T1& v1, const T2& v2 ) const { return v1 == v2 ;} + }; + + template + bool equal ( RandomAccessIterator1 first1, RandomAccessIterator1 last1, + RandomAccessIterator2 first2, RandomAccessIterator2 last2, BinaryPredicate pred, + std::random_access_iterator_tag, std::random_access_iterator_tag ) + { + // Random-access iterators let is check the sizes in constant time + if ( std::distance ( first1, last1 ) != std::distance ( first2, last2 )) + return false; + // If we know that the sequences are the same size, the original version is fine + return std::equal ( first1, last1, first2, pred ); + } - template - bool equal ( InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred, - std::input_iterator_tag, std::input_iterator_tag ) - { - for (; first1 != last1 && first2 != last2; ++first1, ++first2 ) - if ( !pred(*first1, *first2 )) - return false; + template + bool equal ( InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred, + std::input_iterator_tag, std::input_iterator_tag ) + { + for (; first1 != last1 && first2 != last2; ++first1, ++first2 ) + if ( !pred(*first1, *first2 )) + return false; - return first1 == last1 && first2 == last2; - } + return first1 == last1 && first2 == last2; + } } /// \fn equal ( InputIterator1 first1, InputIterator1 last1, @@ -63,10 +63,10 @@ template bool equal ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred ) { - return boost::algorithm::detail::equal ( - first1, last1, first2, last2, pred, - typename std::iterator_traits::iterator_category (), - typename std::iterator_traits::iterator_category ()); + return boost::algorithm::detail::equal ( + first1, last1, first2, last2, pred, + typename std::iterator_traits::iterator_category (), + typename std::iterator_traits::iterator_category ()); } /// \fn equal ( InputIterator1 first1, InputIterator1 last1, @@ -81,16 +81,16 @@ template bool equal ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2 ) { - return boost::algorithm::detail::equal ( - first1, last1, first2, last2, - boost::algorithm::detail::eq< - typename std::iterator_traits::value_type, - typename std::iterator_traits::value_type> (), - typename std::iterator_traits::iterator_category (), - typename std::iterator_traits::iterator_category ()); + return boost::algorithm::detail::equal ( + first1, last1, first2, last2, + boost::algorithm::detail::eq< + typename std::iterator_traits::value_type, + typename std::iterator_traits::value_type> (), + typename std::iterator_traits::iterator_category (), + typename std::iterator_traits::iterator_category ()); } -// There are already range-based versions of these. +// There are already range-based versions of these. }} // namespace boost and algorithm diff --git a/3party/boost/boost/algorithm/cxx14/is_permutation.hpp b/3party/boost/boost/algorithm/cxx14/is_permutation.hpp index 779acef2aa..d8002cbcec 100644 --- a/3party/boost/boost/algorithm/cxx14/is_permutation.hpp +++ b/3party/boost/boost/algorithm/cxx14/is_permutation.hpp @@ -1,130 +1,86 @@ -/* - Copyright (c) Marshall Clow 2013 +/* + Copyright (c) Marshall Clow 2014. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */ -/// \file equal.hpp -/// \brief Determines if one +/// \file is_permutation.hpp +/// \brief Is a sequence a permutation of another sequence (four iterator versions) /// \author Marshall Clow -#ifndef BOOST_ALGORITHM_IS_PERMUTATION_HPP -#define BOOST_ALGORITHM_IS_PERMUTATION_HPP +#ifndef BOOST_ALGORITHM_IS_PERMUTATION14_HPP +#define BOOST_ALGORITHM_IS_PERMUTATION14_HPP -#include -#include // for std::equal_to +#include // for std::less, tie, mismatch and is_permutation (if available) +#include // for std::make_pair +#include // for std::equal_to +#include + +#include +#include namespace boost { namespace algorithm { -namespace detail { - - template - struct is_perm_eq : public std::binary_function { - bool operator () ( const T1& v1, const T2& v2 ) const { return v1 == v2 ;} - }; - - - template - bool is_permutation ( RandomAccessIterator1 first1, RandomAccessIterator1 last1, - RandomAccessIterator2 first2, RandomAccessIterator2 last2, BinaryPredicate pred, - std::random_access_iterator_tag, std::random_access_iterator_tag ) - { - // Random-access iterators let is check the sizes in constant time - if ( std::distance ( first1, last1 ) != std::distance ( first2, last2 )) - return false; - // If we know that the sequences are the same size, the original version is fine - return std::is_permutation ( first1, last1, first2, pred ); - } - - - template - bool is_permutation ( - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred, - std::forward_iterator_tag, std::forward_iterator_tag ) - { - - // Look for common prefix - for (; first1 != last1 && first2 != last2; ++first1, ++first2) - if (!pred(*first1, *first2)) - goto not_done; - // We've reached the end of one of the sequences without a mismatch. - return first1 == last1 && first2 == last2; - not_done: - - // Check and make sure that we have the same # of elements left - typedef typename std::iterator_traits::difference_type diff1_t; - diff1_t len1 = _VSTD::distance(first1, last1); - typedef typename std::iterator_traits::difference_type diff2_t; - diff2_t len2 = _VSTD::distance(first2, last2); - if (len1 != len2) - return false; - - // For each element in [f1, l1) see if there are the - // same number of equal elements in [f2, l2) - for ( ForwardIterator1 i = first1; i != last1; ++i ) - { - // Have we already counted this value? - ForwardIterator1 j; - for ( j = first1; j != i; ++j ) - if (pred(*j, *i)) - break; - if ( j == i ) // didn't find it... - { - // Count number of *i in [f2, l2) - diff1_t c2 = 0; - for ( ForwardIterator2 iter2 = first2; iter2 != last2; ++iter2 ) - if (pred(*i, *iter2)) - ++c2; - if (c2 == 0) - return false; - - // Count number of *i in [i, l1) - diff1_t c1 = 0; - for (_ForwardIterator1 iter1 = i; iter1 != last1; ++iter1 ) - if (pred(*i, *iter1)) - ++c1; - if (c1 != c2) - return false; - } - } +#if __cplusplus <= 201103L +/// \fn is_permutation ( ForwardIterator1 first, ForwardIterator1 last, +/// ForwardIterator2 first2, ForwardIterator2 last2 ) +/// \brief Tests to see if the sequence [first,last) is a permutation of the sequence starting at first2 +/// +/// \param first1 The start of the input sequence +/// \param last2 One past the end of the input sequence +/// \param first2 The start of the second sequence +/// \param last1 One past the end of the second sequence +/// \note This function is part of the C++2014 standard library. +/// We will use the standard one if it is available, +/// otherwise we have our own implementation. +template< class ForwardIterator1, class ForwardIterator2 > +bool is_permutation ( ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2 ) +{ +// How should I deal with the idea that ForwardIterator1::value_type +// and ForwardIterator2::value_type could be different? Define my own comparison predicate? + std::pair eq = boost::algorithm::mismatch + ( first1, last1, first2, last2 ); + if ( eq.first == last1 && eq.second == last2) return true; - } - + return boost::algorithm::detail::is_permutation_tag ( + eq.first, last1, eq.second, last2, + std::equal_to::value_type> (), + typename std::iterator_traits::iterator_category (), + typename std::iterator_traits::iterator_category ()); } - -template -bool is_permutation ( - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred ) -{ - return boost::algorithm::detail::is_permutation ( - first1, last1, first2, last2, pred, - typename std::iterator_traits::iterator_category (), - typename std::iterator_traits::iterator_category ()); -} - -template +/// \fn is_permutation ( ForwardIterator1 first, ForwardIterator1 last, +/// ForwardIterator2 first2, ForwardIterator2 last2, +/// BinaryPredicate p ) +/// \brief Tests to see if the sequence [first,last) is a permutation of the sequence starting at first2 +/// +/// \param first1 The start of the input sequence +/// \param last1 One past the end of the input sequence +/// \param first2 The start of the second sequence +/// \param last2 One past the end of the second sequence +/// \param pred The predicate to compare elements with +/// +/// \note This function is part of the C++2014 standard library. +/// We will use the standard one if it is available, +/// otherwise we have our own implementation. +template< class ForwardIterator1, class ForwardIterator2, class BinaryPredicate > bool is_permutation ( ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2 ) + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred ) { - typedef typename iterator_traits<_ForwardIterator1>::value_type value1_t; - typedef typename iterator_traits<_ForwardIterator2>::value_type value2_t; - return boost::algorithm::detail::is_permutation ( - first1, last1, first2, last2, - boost::algorithm::detail::is_perm_eq< - typename std::iterator_traits::value_type, - typename std::iterator_traits::value_type> (), - typename std::iterator_traits::iterator_category (), - typename std::iterator_traits::iterator_category ()); + std::pair eq = boost::algorithm::mismatch + ( first1, last1, first2, last2, pred ); + if ( eq.first == last1 && eq.second == last2) + return true; + return boost::algorithm::detail::is_permutation_tag ( + first1, last1, first2, last2, pred, + typename std::iterator_traits::iterator_category (), + typename std::iterator_traits::iterator_category ()); } +#endif -// There are already range-based versions of these. +}} -}} // namespace boost and algorithm - -#endif // BOOST_ALGORITHM_IS_PERMUTATION_HPP +#endif // BOOST_ALGORITHM_IS_PERMUTATION14_HPP diff --git a/3party/boost/boost/algorithm/cxx14/mismatch.hpp b/3party/boost/boost/algorithm/cxx14/mismatch.hpp index 5229e3bdac..926ab1944b 100644 --- a/3party/boost/boost/algorithm/cxx14/mismatch.hpp +++ b/3party/boost/boost/algorithm/cxx14/mismatch.hpp @@ -12,13 +12,11 @@ #ifndef BOOST_ALGORITHM_MISMATCH_HPP #define BOOST_ALGORITHM_MISMATCH_HPP -#include // for std::mismatch -#include // for std::pair +#include // for std::mismatch +#include // for std::pair namespace boost { namespace algorithm { -template - /// \fn mismatch ( InputIterator1 first1, InputIterator1 last1, /// InputIterator2 first2, InputIterator2 last2, /// BinaryPredicate pred ) @@ -29,10 +27,11 @@ template /// \param first2 The start of the second range. /// \param last2 One past the end of the second range. /// \param pred A predicate for comparing the elements of the ranges +template std::pair mismatch ( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - BinaryPredicate pred ) + InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + BinaryPredicate pred ) { for (; first1 != last1 && first2 != last2; ++first1, ++first2) if ( !pred ( *first1, *first2 )) @@ -50,8 +49,8 @@ std::pair mismatch ( /// \param last2 One past the end of the second range. template std::pair mismatch ( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2 ) + InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2 ) { for (; first1 != last1 && first2 != last2; ++first1, ++first2) if ( *first1 != *first2 ) @@ -59,7 +58,7 @@ std::pair mismatch ( return std::pair(first1, first2); } -// There are already range-based versions of these. +// There are already range-based versions of these. }} // namespace boost and algorithm diff --git a/3party/boost/boost/algorithm/searching/detail/bm_traits.hpp b/3party/boost/boost/algorithm/searching/detail/bm_traits.hpp index ea150c3021..9c255404ce 100644 --- a/3party/boost/boost/algorithm/searching/detail/bm_traits.hpp +++ b/3party/boost/boost/algorithm/searching/detail/bm_traits.hpp @@ -20,7 +20,11 @@ #include #include +#ifdef BOOST_NO_CXX11_HDR_UNORDERED_MAP #include +#else +#include +#endif #include @@ -35,7 +39,11 @@ namespace boost { namespace algorithm { namespace detail { template class skip_table { private: +#ifdef BOOST_NO_CXX11_HDR_UNORDERED_MAP typedef std::tr1::unordered_map skip_map; +#else + typedef std::unordered_map skip_map; +#endif const value_type k_default_value; skip_map skip_; diff --git a/3party/boost/boost/algorithm/string/concept.hpp b/3party/boost/boost/algorithm/string/concept.hpp index 9876e98d50..17e8349596 100644 --- a/3party/boost/boost/algorithm/string/concept.hpp +++ b/3party/boost/boost/algorithm/string/concept.hpp @@ -12,7 +12,7 @@ #define BOOST_STRING_CONCEPT_HPP #include -#include +#include #include #include diff --git a/3party/boost/boost/algorithm/string/detail/find_format.hpp b/3party/boost/boost/algorithm/string/detail/find_format.hpp index 1612b93780..b39875024c 100644 --- a/3party/boost/boost/algorithm/string/detail/find_format.hpp +++ b/3party/boost/boost/algorithm/string/detail/find_format.hpp @@ -12,7 +12,7 @@ #define BOOST_STRING_FIND_FORMAT_DETAIL_HPP #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/detail/find_format_all.hpp b/3party/boost/boost/algorithm/string/detail/find_format_all.hpp index 51ad56678d..52930c83ad 100644 --- a/3party/boost/boost/algorithm/string/detail/find_format_all.hpp +++ b/3party/boost/boost/algorithm/string/detail/find_format_all.hpp @@ -12,7 +12,7 @@ #define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/detail/find_format_store.hpp b/3party/boost/boost/algorithm/string/detail/find_format_store.hpp index e8bd84a6fe..b9f4a88d91 100644 --- a/3party/boost/boost/algorithm/string/detail/find_format_store.hpp +++ b/3party/boost/boost/algorithm/string/detail/find_format_store.hpp @@ -12,7 +12,7 @@ #define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP #include -#include +#include namespace boost { namespace algorithm { diff --git a/3party/boost/boost/algorithm/string/detail/find_iterator.hpp b/3party/boost/boost/algorithm/string/detail/find_iterator.hpp index c76993a114..9b78a0f7e1 100644 --- a/3party/boost/boost/algorithm/string/detail/find_iterator.hpp +++ b/3party/boost/boost/algorithm/string/detail/find_iterator.hpp @@ -12,7 +12,7 @@ #define BOOST_STRING_FIND_ITERATOR_DETAIL_HPP #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/detail/finder.hpp b/3party/boost/boost/algorithm/string/detail/finder.hpp index 93310d053a..a2a958212d 100644 --- a/3party/boost/boost/algorithm/string/detail/finder.hpp +++ b/3party/boost/boost/algorithm/string/detail/finder.hpp @@ -15,7 +15,7 @@ #include #include -#include +#include #include #include #include @@ -142,7 +142,6 @@ namespace boost { ForwardIteratorT End, std::forward_iterator_tag ) const { - typedef ForwardIteratorT input_iterator_type; typedef iterator_range result_type; first_finder_type first_finder( @@ -263,7 +262,6 @@ namespace boost { ForwardIteratorT End, unsigned int N) const { - typedef ForwardIteratorT input_iterator_type; typedef iterator_range result_type; // Sanity check @@ -298,7 +296,6 @@ namespace boost { ForwardIteratorT End, unsigned int N) const { - typedef ForwardIteratorT input_iterator_type; typedef iterator_range result_type; // Sanity check @@ -362,7 +359,6 @@ namespace boost { unsigned int N, std::random_access_iterator_tag ) { - typedef ForwardIteratorT input_iterator_type; typedef iterator_range result_type; if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) @@ -436,7 +432,6 @@ namespace boost { unsigned int N, std::random_access_iterator_tag ) { - typedef ForwardIteratorT input_iterator_type; typedef iterator_range result_type; if ( (End<=Begin) || ( static_cast(End-Begin) < N ) ) @@ -627,8 +622,6 @@ namespace boost { { #if BOOST_WORKAROUND( __MWERKS__, <= 0x3003 ) return iterator_range(this->m_Range); -#elif BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - return iterator_range(m_Range.begin(), m_Range.end()); #else return m_Range; #endif diff --git a/3party/boost/boost/algorithm/string/detail/finder_regex.hpp b/3party/boost/boost/algorithm/string/detail/finder_regex.hpp index 01bf5a082a..9cb01cfaf1 100644 --- a/3party/boost/boost/algorithm/string/detail/finder_regex.hpp +++ b/3party/boost/boost/algorithm/string/detail/finder_regex.hpp @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include diff --git a/3party/boost/boost/algorithm/string/detail/formatter.hpp b/3party/boost/boost/algorithm/string/detail/formatter.hpp index 8e7b727e7d..c071822f2a 100644 --- a/3party/boost/boost/algorithm/string/detail/formatter.hpp +++ b/3party/boost/boost/algorithm/string/detail/formatter.hpp @@ -12,7 +12,7 @@ #define BOOST_STRING_FORMATTER_DETAIL_HPP -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/detail/util.hpp b/3party/boost/boost/algorithm/string/detail/util.hpp index 7e8471f711..cf4a8b1c8c 100644 --- a/3party/boost/boost/algorithm/string/detail/util.hpp +++ b/3party/boost/boost/algorithm/string/detail/util.hpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace boost { namespace algorithm { diff --git a/3party/boost/boost/algorithm/string/erase.hpp b/3party/boost/boost/algorithm/string/erase.hpp index e738b86fa2..6883790978 100644 --- a/3party/boost/boost/algorithm/string/erase.hpp +++ b/3party/boost/boost/algorithm/string/erase.hpp @@ -13,7 +13,7 @@ #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/find.hpp b/3party/boost/boost/algorithm/string/find.hpp index da1cb616b1..f2c2926b50 100644 --- a/3party/boost/boost/algorithm/string/find.hpp +++ b/3party/boost/boost/algorithm/string/find.hpp @@ -13,7 +13,7 @@ #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/find_format.hpp b/3party/boost/boost/algorithm/string/find_format.hpp index ef0373912a..0e84a4ee68 100644 --- a/3party/boost/boost/algorithm/string/find_format.hpp +++ b/3party/boost/boost/algorithm/string/find_format.hpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/find_iterator.hpp b/3party/boost/boost/algorithm/string/find_iterator.hpp index e8cede5e8e..5834407f0f 100644 --- a/3party/boost/boost/algorithm/string/find_iterator.hpp +++ b/3party/boost/boost/algorithm/string/find_iterator.hpp @@ -15,7 +15,7 @@ #include #include -#include +#include #include #include #include @@ -132,12 +132,7 @@ namespace boost { // increment void increment() { - if(m_Match.begin() == m_Match.end()) - m_Match=this->do_find(m_Match.end(),m_End); - else { - input_iterator_type last = m_Match.begin(); - m_Match=this->do_find(++last,m_End); - } + m_Match=this->do_find(m_Match.end(),m_End); } // comparison @@ -235,7 +230,7 @@ namespace boost { \post eof()==true */ - split_iterator() {} + split_iterator() { m_bEof = true; } //! Copy constructor /*! Construct a copy of the split_iterator diff --git a/3party/boost/boost/algorithm/string/finder.hpp b/3party/boost/boost/algorithm/string/finder.hpp index 4c7ac38b04..93f7ec304a 100644 --- a/3party/boost/boost/algorithm/string/finder.hpp +++ b/3party/boost/boost/algorithm/string/finder.hpp @@ -13,7 +13,7 @@ #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/formatter.hpp b/3party/boost/boost/algorithm/string/formatter.hpp index c2c13eb2ec..de8681bc3f 100644 --- a/3party/boost/boost/algorithm/string/formatter.hpp +++ b/3party/boost/boost/algorithm/string/formatter.hpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include diff --git a/3party/boost/boost/algorithm/string/iter_find.hpp b/3party/boost/boost/algorithm/string/iter_find.hpp index e10652834b..10424abc74 100644 --- a/3party/boost/boost/algorithm/string/iter_find.hpp +++ b/3party/boost/boost/algorithm/string/iter_find.hpp @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/predicate.hpp b/3party/boost/boost/algorithm/string/predicate.hpp index 6642f427d1..0879829b5a 100644 --- a/3party/boost/boost/algorithm/string/predicate.hpp +++ b/3party/boost/boost/algorithm/string/predicate.hpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include diff --git a/3party/boost/boost/algorithm/string/regex.hpp b/3party/boost/boost/algorithm/string/regex.hpp index 0a4c38bd77..a6c7c60ae8 100644 --- a/3party/boost/boost/algorithm/string/regex.hpp +++ b/3party/boost/boost/algorithm/string/regex.hpp @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/replace.hpp b/3party/boost/boost/algorithm/string/replace.hpp index f2d201f97f..0c04e47e1e 100644 --- a/3party/boost/boost/algorithm/string/replace.hpp +++ b/3party/boost/boost/algorithm/string/replace.hpp @@ -13,7 +13,7 @@ #include -#include +#include #include #include #include diff --git a/3party/boost/boost/algorithm/string/sequence_traits.hpp b/3party/boost/boost/algorithm/string/sequence_traits.hpp index b1ac67e9b3..be151f8d3d 100644 --- a/3party/boost/boost/algorithm/string/sequence_traits.hpp +++ b/3party/boost/boost/algorithm/string/sequence_traits.hpp @@ -36,47 +36,6 @@ namespace boost { // sequence traits -----------------------------------------------// -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - //! Native replace tester - /*! - Declare an override of this tester function with return - type boost::string_algo::yes_type for a sequence with this property. - - \return yes_type if the container has basic_string like native replace - method. - */ - no_type has_native_replace_tester(...); - - //! Stable iterators tester - /*! - Declare an override of this tester function with return - type boost::string_algo::yes_type for a sequence with this property. - - \return yes_type if the sequence's insert/replace/erase methods do not invalidate - existing iterators. - */ - no_type has_stable_iterators_tester(...); - - //! const time insert tester - /*! - Declare an override of this tester function with return - type boost::string_algo::yes_type for a sequence with this property. - - \return yes_type if the sequence's insert method is working in constant time - */ - no_type has_const_time_insert_tester(...); - - //! const time erase tester - /*! - Declare an override of this tester function with return - type boost::string_algo::yes_type for a sequence with this property. - - \return yes_type if the sequence's erase method is working in constant time - */ - no_type has_const_time_erase_tester(...); - -#endif //BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION //! Native replace trait /*! @@ -86,20 +45,12 @@ namespace boost { class has_native_replace { -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - private: - static T* t; - public: - BOOST_STATIC_CONSTANT(bool, value=( - sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) ); -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: # if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) enum { value = false }; # else BOOST_STATIC_CONSTANT(bool, value=false); # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION typedef mpl::bool_::value> type; @@ -114,20 +65,12 @@ namespace boost { template< typename T > class has_stable_iterators { -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - private: - static T* t; - public: - BOOST_STATIC_CONSTANT(bool, value=( - sizeof(has_stable_iterators_tester(t))==sizeof(yes_type) ) ); -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: # if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) enum { value = false }; # else BOOST_STATIC_CONSTANT(bool, value=false); # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION typedef mpl::bool_::value> type; }; @@ -141,20 +84,12 @@ namespace boost { template< typename T > class has_const_time_insert { -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - private: - static T* t; - public: - BOOST_STATIC_CONSTANT(bool, value=( - sizeof(has_const_time_insert_tester(t))==sizeof(yes_type) ) ); -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: # if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) enum { value = false }; # else BOOST_STATIC_CONSTANT(bool, value=false); # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION typedef mpl::bool_::value> type; }; @@ -168,20 +103,12 @@ namespace boost { template< typename T > class has_const_time_erase { -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - private: - static T* t; - public: - BOOST_STATIC_CONSTANT(bool, value=( - sizeof(has_const_time_erase_tester(t))==sizeof(yes_type) ) ); -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: # if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) enum { value = false }; # else BOOST_STATIC_CONSTANT(bool, value=false); # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION typedef mpl::bool_::value> type; }; diff --git a/3party/boost/boost/algorithm/string/std/list_traits.hpp b/3party/boost/boost/algorithm/string/std/list_traits.hpp index ce2379d83b..a3cf7bb18c 100644 --- a/3party/boost/boost/algorithm/string/std/list_traits.hpp +++ b/3party/boost/boost/algorithm/string/std/list_traits.hpp @@ -20,22 +20,6 @@ namespace boost { // std::list<> traits -----------------------------------------------// -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // stable iterators tester - template - yes_type has_stable_iterators_tester( const ::std::list* ); - - // const time insert tester - template - yes_type has_const_time_insert_tester( const ::std::list* ); - - // const time erase tester - template - yes_type has_const_time_erase_tester( const ::std::list* ); - - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // stable iterators trait template @@ -75,7 +59,6 @@ namespace boost { #endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) typedef mpl::bool_::value> type; }; -#endif } // namespace algorithm diff --git a/3party/boost/boost/algorithm/string/std/rope_traits.hpp b/3party/boost/boost/algorithm/string/std/rope_traits.hpp index c2cd549ceb..637059a550 100644 --- a/3party/boost/boost/algorithm/string/std/rope_traits.hpp +++ b/3party/boost/boost/algorithm/string/std/rope_traits.hpp @@ -20,25 +20,6 @@ namespace boost { // SGI's std::rope<> traits -----------------------------------------------// -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // native replace tester - template - yes_type has_native_replace_tester( const std::rope* ); - - // stable iterators tester - template - yes_type has_stable_iterators_tester( const std::rope* ); - - // const time insert tester - template - yes_type has_const_time_insert_tester( const std::rope* ); - - // const time erase tester - template - yes_type has_const_time_erase_tester( const std::rope* ); - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // native replace trait template @@ -91,7 +72,6 @@ namespace boost { #endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) typedef mpl::bool_ type; }; -#endif } // namespace algorithm diff --git a/3party/boost/boost/algorithm/string/std/slist_traits.hpp b/3party/boost/boost/algorithm/string/std/slist_traits.hpp index 7b915a3d4a..c30b93c73a 100644 --- a/3party/boost/boost/algorithm/string/std/slist_traits.hpp +++ b/3party/boost/boost/algorithm/string/std/slist_traits.hpp @@ -21,21 +21,6 @@ namespace boost { // SGI's std::slist<> traits -----------------------------------------------// -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // stable iterators tester - template - yes_type has_stable_iterators_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist* ); - - // const time insert tester - template - yes_type has_const_time_insert_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist* ); - - // const time erase tester - template - yes_type has_const_time_erase_tester( const BOOST_STD_EXTENSION_NAMESPACE::slist* ); - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // stable iterators trait template @@ -75,7 +60,6 @@ namespace boost { #endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) typedef mpl::bool_::value> type; }; -#endif } // namespace algorithm diff --git a/3party/boost/boost/algorithm/string/std/string_traits.hpp b/3party/boost/boost/algorithm/string/std/string_traits.hpp index c466d26b19..c9408307d3 100644 --- a/3party/boost/boost/algorithm/string/std/string_traits.hpp +++ b/3party/boost/boost/algorithm/string/std/string_traits.hpp @@ -20,13 +20,6 @@ namespace boost { // std::basic_string<> traits -----------------------------------------------// -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // native replace tester - template - yes_type has_native_replace_tester( const std::basic_string* ); - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // native replace trait template @@ -43,7 +36,6 @@ namespace boost { }; -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } // namespace algorithm } // namespace boost diff --git a/3party/boost/boost/algorithm/string/trim.hpp b/3party/boost/boost/algorithm/string/trim.hpp index be57cd92ff..e740d57d93 100644 --- a/3party/boost/boost/algorithm/string/trim.hpp +++ b/3party/boost/boost/algorithm/string/trim.hpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include diff --git a/3party/boost/boost/align.hpp b/3party/boost/boost/align.hpp new file mode 100644 index 0000000000..4d60100601 --- /dev/null +++ b/3party/boost/boost/align.hpp @@ -0,0 +1,31 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_HPP +#define BOOST_ALIGN_HPP + +/** + Boost.Align + all headers. + + @note This header includes all public headers + of the Boost.Align library. + + @file + @author Glen Fernandes +*/ + +#include +#include +#include +#include +#include +#include +#include + +#endif diff --git a/3party/boost/boost/align/align.hpp b/3party/boost/boost/align/align.hpp new file mode 100644 index 0000000000..8d29fca466 --- /dev/null +++ b/3party/boost/boost/align/align.hpp @@ -0,0 +1,86 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGN_HPP +#define BOOST_ALIGN_ALIGN_HPP + +/** + Function align. + + @file + @author Glen Fernandes +*/ + +#include + +/** + @cond +*/ +#if !defined(BOOST_NO_CXX11_STD_ALIGN) +#include +#else +#include +#endif + +#if defined(BOOST_NO_CXX11_STD_ALIGN) +/** + @endcond +*/ + +/** + Boost namespace. +*/ +namespace boost { + /** + Alignment namespace. + */ + namespace alignment { + /** + If it is possible to fit `size` bytes of storage + aligned by `alignment` into the buffer pointed to by + `ptr` with length `space`, the function updates `ptr` + to point to the first possible address of such + storage and decreases `space` by the number of bytes + used for alignment. Otherwise, the function does + nothing. + + @param alignment Shall be a fundamental alignment + value or an extended alignment value, and shall be + a power of two. + + @param size The size in bytes of storage to fit into + the buffer. + + @param ptr Shall point to contiguous storage of at + least `space` bytes. + + @param space The length of the buffer. + + @return A null pointer if the requested aligned + buffer would not fit into the available space, + otherwise the adjusted value of `ptr`. + + @remark **Note:** The function updates its `ptr` and + space arguments so that it can be called repeatedly + with possibly different `alignment` and `size` + arguments for the same buffer. + */ + inline void* align(std::size_t alignment, std::size_t size, + void*& ptr, std::size_t& space); + } +} + +/** + @cond +*/ +#endif +/** + @endcond +*/ + +#endif diff --git a/3party/boost/boost/align/aligned_alloc.hpp b/3party/boost/boost/align/aligned_alloc.hpp new file mode 100644 index 0000000000..07035b7207 --- /dev/null +++ b/3party/boost/boost/align/aligned_alloc.hpp @@ -0,0 +1,100 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNED_ALLOC_HPP +#define BOOST_ALIGN_ALIGNED_ALLOC_HPP + +/** + Functions aligned_alloc and aligned_free. + + @file + @author Glen Fernandes +*/ + +#include + +/** + @cond +*/ +#if defined(BOOST_HAS_UNISTD_H) +#include +#endif + +#if defined(__APPLE__) || defined(__APPLE_CC__) || defined(macintosh) +#include +#endif + +#if defined(_MSC_VER) +#include +#elif defined(__MINGW32__) && (__MSVCRT_VERSION__ >= 0x0700) +#include +#elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 +#include +#elif MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 +#include +#elif defined(__ANDROID__) +#include +#elif defined(__SunOS_5_11) || defined(__SunOS_5_12) +#include +#elif defined(sun) || defined(__sun) +#include +#elif (_POSIX_C_SOURCE >= 200112L) || (_XOPEN_SOURCE >= 600) +#include +#else +#include +#endif +/** + @endcond +*/ + +/** + Boost namespace. +*/ +namespace boost { + /** + Alignment namespace. + */ + namespace alignment { + /** + Allocates space for an object whose alignment is + specified by `alignment`, whose size is + specified by `size`, and whose value is + indeterminate. + + @param alignment Shall be a power of two. + + @param size Size of space to allocate. + + @return A null pointer or a pointer to the + allocated space. + + @remark **Note:** On certain platforms, the + alignment may be rounded up to `alignof(void*)` + and the space allocated may be slightly larger + than `size` bytes, by an additional + `sizeof(void*)` and `alignment - 1` bytes. + */ + inline void* aligned_alloc(std::size_t alignment, + std::size_t size) BOOST_NOEXCEPT; + + /** + Causes the space pointed to by `ptr` to be + deallocated, that is, made available for further + allocation. If `ptr` is a null pointer, no + action occurs. Otherwise, if the argument does + not match a pointer earlier returned by the + `aligned_alloc` function, or if the space has + been deallocated by a call to `aligned_free`, + the behavior is undefined. + */ + inline void aligned_free(void* ptr) + BOOST_NOEXCEPT; + } +} + +#endif diff --git a/3party/boost/boost/align/aligned_allocator.hpp b/3party/boost/boost/align/aligned_allocator.hpp new file mode 100644 index 0000000000..03b2546274 --- /dev/null +++ b/3party/boost/boost/align/aligned_allocator.hpp @@ -0,0 +1,287 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNED_ALLOCATOR_HPP +#define BOOST_ALIGN_ALIGNED_ALLOCATOR_HPP + +/** + Class template aligned_allocator. + + @file + @author Glen Fernandes +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#include +#endif + +/** + Boost namespace. +*/ +namespace boost { + /** + Alignment namespace. + */ + namespace alignment { + /** + Class template aligned_allocator. + + @tparam Alignment Is the minimum alignment to specify + for allocations, if it is larger than the alignment + of the value type. It shall be a power of two. + + @remark **Note:** Except for the destructor, member + functions of the aligned allocator shall not + introduce data races as a result of concurrent calls + to those member functions from different threads. + Calls to these functions that allocate or deallocate + a particular unit of storage shall occur in a single + total order, and each such deallocation call shall + happen before the next allocation (if any) in this + order. + + @note Specifying minimum alignment is generally only + suitable for containers such as vector and undesirable + with other, node-based, containers. For node-based + containers, such as list, the node object would have + the minimum alignment specified instead of the value + type object. + */ + template + class aligned_allocator { + /** + @cond + */ + BOOST_STATIC_ASSERT(detail:: + is_alignment_const::value); + /** + @endcond + */ + + public: + typedef T value_type; + typedef T* pointer; + typedef const T* const_pointer; + typedef void* void_pointer; + typedef const void* const_void_pointer; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef T& reference; + typedef const T& const_reference; + + private: + enum { + TypeAlign = alignment_of::value, + + MaxAlign = detail:: + max_align::value + }; + + public: + /** + Rebind allocator. + */ + template + struct rebind { + typedef aligned_allocator other; + }; + +#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) + aligned_allocator() + BOOST_NOEXCEPT = default; +#else + aligned_allocator() + BOOST_NOEXCEPT { + } +#endif + + template + aligned_allocator(const aligned_allocator&) BOOST_NOEXCEPT { + } + + /** + @return The actual address of the object referenced + by `value`, even in the presence of an overloaded + operator&. + */ + pointer address(reference value) const + BOOST_NOEXCEPT { + return detail::addressof(value); + } + + /** + @return The actual address of the object referenced + by `value`, even in the presence of an overloaded + operator&. + */ + const_pointer address(const_reference value) const + BOOST_NOEXCEPT { + return detail::addressof(value); + } + + /** + @return A pointer to the initial element of an array + of storage of size `n * sizeof(T)`, aligned on the + maximum of the minimum alignment specified and the + alignment of objects of type `T`. + + @remark **Throw:** Throws `std::bad_alloc` if the + storage cannot be obtained. + + @remark **Note:** The storage is obtained by calling + `aligned_alloc(std::size_t, std::size_t)`. + */ + pointer allocate(size_type size, const_void_pointer = 0) { + void* p = aligned_alloc(MaxAlign, sizeof(T) * size); + if (!p && size > 0) { + boost::throw_exception(std::bad_alloc()); + } + return static_cast(p); + } + + /** + Deallocates the storage referenced by `ptr`. + + @param ptr Shall be a pointer value obtained from + `allocate()`. + + @remark **Note:** Uses + `alignment::aligned_free(void*)`. + */ + void deallocate(pointer ptr, size_type) { + alignment::aligned_free(ptr); + } + + /** + @return The largest value `N` for which the call + `allocate(N)` might succeed. + */ + BOOST_CONSTEXPR size_type max_size() const + BOOST_NOEXCEPT { + return detail::max_count_of::value; + } + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) + /** + Calls global + `new((void*)ptr) U(std::forward(args)...)`. + */ + template + void construct(U* ptr, Args&&... args) { + void* p = ptr; + ::new(p) U(std::forward(args)...); + } +#else + /** + Calls global + `new((void*)ptr) U(std::forward(value))`. + */ + template + void construct(U* ptr, V&& value) { + void* p = ptr; + ::new(p) U(std::forward(value)); + } +#endif +#else + /** + Calls global `new((void*)ptr) U(value)`. + */ + template + void construct(U* ptr, const V& value) { + void* p = ptr; + ::new(p) U(value); + } +#endif + + /** + Calls global `new((void*)ptr) U()`. + */ + template + void construct(U* ptr) { + void* p = ptr; + ::new(p) U(); + } + + /** + Calls `ptr->~U()`. + */ + template + void destroy(U* ptr) { + (void)ptr; + ptr->~U(); + } + }; + + /** + Class template aligned_allocator + specialization. + */ + template + class aligned_allocator { + /** + @cond + */ + BOOST_STATIC_ASSERT(detail:: + is_alignment_const::value); + /** + @endcond + */ + + public: + typedef void value_type; + typedef void* pointer; + typedef const void* const_pointer; + + /** + Rebind allocator. + */ + template + struct rebind { + typedef aligned_allocator other; + }; + }; + + /** + @return `true`. + */ + template + inline bool operator==(const aligned_allocator&, const aligned_allocator&) BOOST_NOEXCEPT + { + return true; + } + + /** + @return `false`. + */ + template + inline bool operator!=(const aligned_allocator&, const aligned_allocator&) BOOST_NOEXCEPT + { + return false; + } + } +} + +#endif diff --git a/3party/boost/boost/align/aligned_allocator_adaptor.hpp b/3party/boost/boost/align/aligned_allocator_adaptor.hpp new file mode 100644 index 0000000000..2083c949de --- /dev/null +++ b/3party/boost/boost/align/aligned_allocator_adaptor.hpp @@ -0,0 +1,325 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNED_ALLOCATOR_ADAPTOR_HPP +#define BOOST_ALIGN_ALIGNED_ALLOCATOR_ADAPTOR_HPP + +/** + Class template aligned_allocator_adaptor. + + @file + @author Glen Fernandes +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_NO_CXX11_ALLOCATOR) +#include +#endif + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#include +#endif + +/** + Boost namespace. +*/ +namespace boost { + /** + Alignment namespace. + */ + namespace alignment { + /** + Class template aligned_allocator_adaptor. + + @tparam Alignment Is the minimum alignment to specify + for allocations, if it is larger than the alignment + of the value type. The value of `Alignment` shall be + a fundamental alignment value or an extended alignment + value, and shall be a power of two. + + @note This adaptor can be used with a C++11 allocator + whose pointer type is a smart pointer but the adaptor + will expose only raw pointers. + */ + template + class aligned_allocator_adaptor + : public Allocator { + /** + @cond + */ + BOOST_STATIC_ASSERT(detail:: + is_alignment_const::value); + /** + @endcond + */ + +#if !defined(BOOST_NO_CXX11_ALLOCATOR) + /** + Exposition only. + */ + typedef std::allocator_traits Traits; + + typedef typename Traits:: + template rebind_alloc CharAlloc; + + typedef typename Traits:: + template rebind_traits CharTraits; + + typedef typename CharTraits::pointer CharPtr; +#else + typedef typename Allocator:: + template rebind::other CharAlloc; + + typedef typename CharAlloc::pointer CharPtr; +#endif + + public: +#if !defined(BOOST_NO_CXX11_ALLOCATOR) + typedef typename Traits::value_type value_type; + typedef typename Traits::size_type size_type; +#else + typedef typename Allocator::value_type value_type; + typedef typename Allocator::size_type size_type; +#endif + + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef void* void_pointer; + typedef const void* const_void_pointer; + typedef std::ptrdiff_t difference_type; + + private: + enum { + TypeAlign = alignment_of::value, + + PtrAlign = alignment_of::value, + + BlockAlign = detail:: + max_align::value, + + MaxAlign = detail:: + max_align::value + }; + + public: + /** + Rebind allocator. + */ + template + struct rebind { +#if !defined(BOOST_NO_CXX11_ALLOCATOR) + typedef aligned_allocator_adaptor, Alignment> other; +#else + typedef aligned_allocator_adaptor::other, Alignment> other; +#endif + }; + +#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) + /** + Value-initializes the `Allocator` + base class. + */ + aligned_allocator_adaptor() = default; +#else + /** + Value-initializes the `Allocator` + base class. + */ + aligned_allocator_adaptor() + : Allocator() { + } +#endif + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + /** + Initializes the `Allocator` base class with + `std::forward(alloc)`. + + @remark **Require:** `Allocator` shall be + constructible from `A`. + */ + template + explicit aligned_allocator_adaptor(A&& alloc) + BOOST_NOEXCEPT + : Allocator(std::forward(alloc)) { + } +#else + /** + Initializes the `Allocator` base class with + `alloc`. + + @remark **Require:** `Allocator` shall be + constructible from `A`. + */ + template + explicit aligned_allocator_adaptor(const A& alloc) + BOOST_NOEXCEPT + : Allocator(alloc) { + } +#endif + + /** + Initializes the `Allocator` base class with the + base from other. + */ + template + aligned_allocator_adaptor(const + aligned_allocator_adaptor& other) + BOOST_NOEXCEPT + : Allocator(other.base()) { + } + + /** + @return `static_cast(*this)`. + */ + Allocator& base() + BOOST_NOEXCEPT { + return static_cast(*this); + } + + /** + @return `static_cast(*this)`. + */ + const Allocator& base() const + BOOST_NOEXCEPT { + return static_cast(*this); + } + + /** + @param size The size of the value type object to + allocate. + + @return A pointer to the initial element of an + array of storage of size `n * sizeof(value_type)`, + aligned on the maximum of the minimum alignment + specified and the alignment of objects of type + `value_type`. + + @remark **Throw:** Throws an exception thrown from + `A2::allocate` if the storage cannot be obtained. + + @remark **Note:** The storage is obtained by calling + `A2::allocate` on an object `a2`, where `a2` of + type `A2` is a rebound copy of `base()` where its + `value_type` is unspecified. + */ + pointer allocate(size_type size) { + std::size_t n1 = size * sizeof(value_type); + std::size_t n2 = n1 + MaxAlign - 1; + CharAlloc a(base()); + CharPtr p1 = a.allocate(sizeof p1 + n2); + void* p2 = detail::addressof(*p1) + sizeof p1; + (void)align(MaxAlign, n1, p2, n2); + void* p3 = static_cast(p2) - 1; + ::new(p3) CharPtr(p1); + return static_cast(p2); + } + + /** + @param hint is a value obtained by calling + `allocate()` on any equivalent aligned allocator + adaptor object, or else `nullptr`. + + @param size The size of the value type object to + allocate. + + @return A pointer to the initial element of an + array of storage of size `n * sizeof(value_type)`, + aligned on the maximum of the minimum alignment + specified and the alignment of objects of type + `value_type`. + + @remark **Throw:** Throws an exception thrown from + `A2::allocate` if the storage cannot be obtained. + + @remark **Note:** The storage is obtained by calling + `A2::allocate` on an object `a2`, where `a2` of + type `A2` is a rebound copy of `base()` where its + `value_type` is unspecified. + */ + pointer allocate(size_type size, const_void_pointer hint) { + std::size_t n1 = size * sizeof(value_type); + std::size_t n2 = n1 + MaxAlign - 1; + CharPtr h = CharPtr(); + if (hint) { + h = *(static_cast(hint) - 1); + } + CharAlloc a(base()); +#if !defined(BOOST_NO_CXX11_ALLOCATOR) + CharPtr p1 = CharTraits::allocate(a, sizeof p1 + + n2, h); +#else + CharPtr p1 = a.allocate(sizeof p1 + n2, h); +#endif + void* p2 = detail::addressof(*p1) + sizeof p1; + (void)align(MaxAlign, n1, p2, n2); + void* p3 = static_cast(p2) - 1; + ::new(p3) CharPtr(p1); + return static_cast(p2); + } + + /** + Deallocates the storage referenced by `ptr`. + + @param ptr Shall be a pointer value obtained from + `allocate()`. + + @param size Shall equal the value passed as the + first argument to the invocation of `allocate` + which returned `ptr`. + + @remark **Note:** Uses `A2::deallocate` on an object + `a2`, where `a2` of type `A2` is a rebound copy of + `base()` where its `value_type` is unspecified. + */ + void deallocate(pointer ptr, size_type size) { + CharPtr* p1 = reinterpret_cast(ptr) - 1; + CharPtr p2 = *p1; + p1->~CharPtr(); + CharAlloc a(base()); + a.deallocate(p2, size * sizeof(value_type) + + MaxAlign + sizeof p2); + } + }; + + /** + @return `a.base() == b.base()`. + */ + template + inline bool operator==(const aligned_allocator_adaptor& a, const aligned_allocator_adaptor& b) BOOST_NOEXCEPT + { + return a.base() == b.base(); + } + + /** + @return `!(a == b)`. + */ + template + inline bool operator!=(const aligned_allocator_adaptor& a, const aligned_allocator_adaptor& b) BOOST_NOEXCEPT + { + return !(a == b); + } + } +} + +#endif diff --git a/3party/boost/boost/align/aligned_allocator_adaptor_forward.hpp b/3party/boost/boost/align/aligned_allocator_adaptor_forward.hpp new file mode 100644 index 0000000000..524e0676ed --- /dev/null +++ b/3party/boost/boost/align/aligned_allocator_adaptor_forward.hpp @@ -0,0 +1,38 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNED_ALLOCATOR_ADAPTOR_FORWARD_HPP +#define BOOST_ALIGN_ALIGNED_ALLOCATOR_ADAPTOR_FORWARD_HPP + +/** + Class template aligned_allocator_adaptor + forward declaration. + + @note This header provides a forward declaration for + the `aligned_allocator_adaptor` class template. + + @file + @author Glen Fernandes +*/ + +#include + +/** + @cond +*/ +namespace boost { + namespace alignment { + template + class aligned_allocator_adaptor; + } +} +/** + @endcond +*/ + +#endif diff --git a/3party/boost/boost/align/aligned_allocator_forward.hpp b/3party/boost/boost/align/aligned_allocator_forward.hpp new file mode 100644 index 0000000000..6f15423670 --- /dev/null +++ b/3party/boost/boost/align/aligned_allocator_forward.hpp @@ -0,0 +1,38 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNED_ALLOCATOR_FORWARD_HPP +#define BOOST_ALIGN_ALIGNED_ALLOCATOR_FORWARD_HPP + +/** + Class template aligned_allocator + forward declaration. + + @note This header provides a forward declaration + for the `aligned_allocator` class template. + + @file + @author Glen Fernandes +*/ + +#include + +/** + @cond +*/ +namespace boost { + namespace alignment { + template + class aligned_allocator; + } +} +/** + @endcond +*/ + +#endif diff --git a/3party/boost/boost/align/aligned_delete.hpp b/3party/boost/boost/align/aligned_delete.hpp new file mode 100644 index 0000000000..05ebb82f72 --- /dev/null +++ b/3party/boost/boost/align/aligned_delete.hpp @@ -0,0 +1,56 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNED_DELETE_HPP +#define BOOST_ALIGN_ALIGNED_DELETE_HPP + +/** + Class aligned_delete. + + @file + @author Glen Fernandes +*/ + +#include +#include +#include + +/** + Boost namespace. +*/ +namespace boost { + /** + Alignment namespace. + */ + namespace alignment { + /** + Class aligned_delete. + */ + class aligned_delete { + public: + /** + Calls `~T()` on `ptr` to destroy the object and then + calls `aligned_free` on `ptr` to free the allocated + memory. + + @remark **Note:** If `T` is an incomplete type, the + program is ill-formed. + */ + template + void operator()(T* ptr) const + BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(ptr->~T())) { + if (ptr) { + ptr->~T(); + alignment::aligned_free(ptr); + } + } + }; + } +} + +#endif diff --git a/3party/boost/boost/align/aligned_delete_forward.hpp b/3party/boost/boost/align/aligned_delete_forward.hpp new file mode 100644 index 0000000000..efa882274a --- /dev/null +++ b/3party/boost/boost/align/aligned_delete_forward.hpp @@ -0,0 +1,35 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNED_DELETE_FORWARD_HPP +#define BOOST_ALIGN_ALIGNED_DELETE_FORWARD_HPP + +/** + Class aligned_delete + forward declaration. + + @note This header provides a forward declaration + for the `aligned_delete` class. + + @file + @author Glen Fernandes +*/ + +/** + @cond +*/ +namespace boost { + namespace alignment { + class aligned_delete; + } +} +/** + @endcond +*/ + +#endif diff --git a/3party/boost/boost/align/alignment_of.hpp b/3party/boost/boost/align/alignment_of.hpp new file mode 100644 index 0000000000..ebd87aab92 --- /dev/null +++ b/3party/boost/boost/align/alignment_of.hpp @@ -0,0 +1,78 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNMENT_OF_HPP +#define BOOST_ALIGN_ALIGNMENT_OF_HPP + +/** + Class template alignment_of. + + @file + @author Glen Fernandes +*/ + +#include +#include +#include + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include +#elif defined(BOOST_MSVC) +#include +#elif defined(BOOST_CLANG) +#include +#elif defined(__ghs__) && (__GHS_VERSION_NUMBER >= 600) +#include +#elif defined(__CODEGEARC__) +#include +#elif defined(__GNUC__) && defined(__unix__) && !defined(__LP64__) +#include +#elif __GNUC__ > 4 +#include +#elif (__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) +#include +#else +#include +#endif + +/** + Boost namespace. +*/ +namespace boost { + /** + Alignment namespace. + */ + namespace alignment { + /** + Class template alignment_of. + + @remark **Value:** `alignof(T)`. + */ + template + struct alignment_of { + /** + @enum + */ + enum { + /** + @cond + */ + value = detail::alignment_of:: + type>::type>::type>::value + /** + @endcond + */ + }; + }; + } +} + +#endif diff --git a/3party/boost/boost/align/alignment_of_forward.hpp b/3party/boost/boost/align/alignment_of_forward.hpp new file mode 100644 index 0000000000..2abd083866 --- /dev/null +++ b/3party/boost/boost/align/alignment_of_forward.hpp @@ -0,0 +1,36 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_ALIGNMENT_OF_FORWARD_HPP +#define BOOST_ALIGN_ALIGNMENT_OF_FORWARD_HPP + +/** + Class template alignment_of + forward declaration. + + @note This header provides a forward declaration + for the `alignment_of` class template. + + @file + @author Glen Fernandes +*/ + +/** + @cond +*/ +namespace boost { + namespace alignment { + template + struct alignment_of; + } +} +/** + @endcond +*/ + +#endif diff --git a/3party/boost/boost/align/detail/address.hpp b/3party/boost/boost/align/detail/address.hpp new file mode 100644 index 0000000000..a205cbd171 --- /dev/null +++ b/3party/boost/boost/align/detail/address.hpp @@ -0,0 +1,27 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ADDRESS_HPP +#define BOOST_ALIGN_DETAIL_ADDRESS_HPP + +#include +#include + +namespace boost { + namespace alignment { + namespace detail { +#if defined(BOOST_HAS_INTPTR_T) + typedef boost::uintptr_t address_t; +#else + typedef std::size_t address_t; +#endif + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/addressof.hpp b/3party/boost/boost/align/detail/addressof.hpp new file mode 100644 index 0000000000..1b9402f324 --- /dev/null +++ b/3party/boost/boost/align/detail/addressof.hpp @@ -0,0 +1,32 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ADDRESSOF_HPP +#define BOOST_ALIGN_DETAIL_ADDRESSOF_HPP + +#include + +#if !defined(BOOST_NO_CXX11_ADDRESSOF) +#include +#else +#include +#endif + +namespace boost { + namespace alignment { + namespace detail { +#if !defined(BOOST_NO_CXX11_ADDRESSOF) + using std::addressof; +#else + using boost::addressof; +#endif + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/align.hpp b/3party/boost/boost/align/detail/align.hpp new file mode 100644 index 0000000000..d4d4287c58 --- /dev/null +++ b/3party/boost/boost/align/detail/align.hpp @@ -0,0 +1,38 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGN_HPP +#define BOOST_ALIGN_DETAIL_ALIGN_HPP + +#include +#include +#include +#include + +namespace boost { + namespace alignment { + inline void* align(std::size_t alignment, std::size_t size, + void*& ptr, std::size_t& space) + { + BOOST_ASSERT(detail::is_alignment(alignment)); + std::size_t n = detail::address_t(ptr) & (alignment - 1); + if (n != 0) { + n = alignment - n; + } + void* p = 0; + if (n <= space && size <= space - n) { + p = static_cast(ptr) + n; + ptr = p; + space -= n; + } + return p; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/align_cxx11.hpp b/3party/boost/boost/align/detail/align_cxx11.hpp new file mode 100644 index 0000000000..b79ea8e8cd --- /dev/null +++ b/3party/boost/boost/align/detail/align_cxx11.hpp @@ -0,0 +1,20 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGN_CXX11_HPP +#define BOOST_ALIGN_DETAIL_ALIGN_CXX11_HPP + +#include + +namespace boost { + namespace alignment { + using std::align; + } +} + +#endif diff --git a/3party/boost/boost/align/detail/aligned_alloc.hpp b/3party/boost/boost/align/detail/aligned_alloc.hpp new file mode 100644 index 0000000000..3ed58b5d2f --- /dev/null +++ b/3party/boost/boost/align/detail/aligned_alloc.hpp @@ -0,0 +1,53 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost { + namespace alignment { + inline void* aligned_alloc(std::size_t alignment, + std::size_t size) BOOST_NOEXCEPT + { + BOOST_ASSERT(detail::is_alignment(alignment)); + enum { + void_align = alignment_of::value, + }; + if (alignment < void_align) { + alignment = void_align; + } + std::size_t n = size + alignment - 1; + void* p1 = 0; + void* p2 = std::malloc(n + sizeof p1); + if (p2) { + p1 = static_cast(p2) + sizeof p1; + (void)align(alignment, size, p1, n); + *(static_cast(p1) - 1) = p2; + } + return p1; + } + + inline void aligned_free(void* ptr) + BOOST_NOEXCEPT + { + if (ptr) { + void* p = *(static_cast(ptr) - 1); + std::free(p); + } + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/aligned_alloc_android.hpp b/3party/boost/boost/align/detail/aligned_alloc_android.hpp new file mode 100644 index 0000000000..bad569a9c4 --- /dev/null +++ b/3party/boost/boost/align/detail/aligned_alloc_android.hpp @@ -0,0 +1,35 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_ANDROID_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_ANDROID_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace alignment { + inline void* aligned_alloc(std::size_t alignment, + std::size_t size) BOOST_NOEXCEPT + { + BOOST_ASSERT(detail::is_alignment(alignment)); + return ::memalign(alignment, size); + } + + inline void aligned_free(void* ptr) + BOOST_NOEXCEPT + { + ::free(ptr); + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/aligned_alloc_macos.hpp b/3party/boost/boost/align/detail/aligned_alloc_macos.hpp new file mode 100644 index 0000000000..99ce60d3df --- /dev/null +++ b/3party/boost/boost/align/detail/aligned_alloc_macos.hpp @@ -0,0 +1,48 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MACOS_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MACOS_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace alignment { + inline void* aligned_alloc(std::size_t alignment, + std::size_t size) BOOST_NOEXCEPT + { + BOOST_ASSERT(detail::is_alignment(alignment)); + enum { + void_size = sizeof(void*) + }; + if (!size) { + return 0; + } + if (alignment < void_size) { + alignment = void_size; + } + void* p; + if (::posix_memalign(&p, alignment, size) != 0) { + p = 0; + } + return p; + } + + inline void aligned_free(void* ptr) + BOOST_NOEXCEPT + { + ::free(ptr); + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/aligned_alloc_msvc.hpp b/3party/boost/boost/align/detail/aligned_alloc_msvc.hpp new file mode 100644 index 0000000000..93ed594f0b --- /dev/null +++ b/3party/boost/boost/align/detail/aligned_alloc_msvc.hpp @@ -0,0 +1,35 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MSVC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MSVC_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace alignment { + inline void* aligned_alloc(std::size_t alignment, + std::size_t size) BOOST_NOEXCEPT + { + BOOST_ASSERT(detail::is_alignment(alignment)); + return ::_aligned_malloc(size, alignment); + } + + inline void aligned_free(void* ptr) + BOOST_NOEXCEPT + { + ::_aligned_free(ptr); + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/aligned_alloc_posix.hpp b/3party/boost/boost/align/detail/aligned_alloc_posix.hpp new file mode 100644 index 0000000000..3663030a17 --- /dev/null +++ b/3party/boost/boost/align/detail/aligned_alloc_posix.hpp @@ -0,0 +1,45 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_POSIX_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_POSIX_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace alignment { + inline void* aligned_alloc(std::size_t alignment, + std::size_t size) BOOST_NOEXCEPT + { + BOOST_ASSERT(detail::is_alignment(alignment)); + enum { + void_size = sizeof(void*) + }; + if (alignment < void_size) { + alignment = void_size; + } + void* p; + if (::posix_memalign(&p, alignment, size) != 0) { + p = 0; + } + return p; + } + + inline void aligned_free(void* ptr) + BOOST_NOEXCEPT + { + ::free(ptr); + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/aligned_alloc_sunos.hpp b/3party/boost/boost/align/detail/aligned_alloc_sunos.hpp new file mode 100644 index 0000000000..aebf1801f3 --- /dev/null +++ b/3party/boost/boost/align/detail/aligned_alloc_sunos.hpp @@ -0,0 +1,35 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_SUNOS_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_SUNOS_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace alignment { + inline void* aligned_alloc(std::size_t alignment, + std::size_t size) BOOST_NOEXCEPT + { + BOOST_ASSERT(detail::is_alignment(alignment)); + return ::memalign(alignment, size); + } + + inline void aligned_free(void* ptr) + BOOST_NOEXCEPT + { + ::free(ptr); + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/alignment_of.hpp b/3party/boost/boost/align/detail/alignment_of.hpp new file mode 100644 index 0000000000..44745adddf --- /dev/null +++ b/3party/boost/boost/align/detail/alignment_of.hpp @@ -0,0 +1,29 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_HPP + +#include +#include + +namespace boost { + namespace alignment { + namespace detail { + template + struct alignment_of { + enum { + value = detail::min_size) - sizeof(T)>::value + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/alignment_of_clang.hpp b/3party/boost/boost/align/detail/alignment_of_clang.hpp new file mode 100644 index 0000000000..526ff7b58c --- /dev/null +++ b/3party/boost/boost/align/detail/alignment_of_clang.hpp @@ -0,0 +1,25 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CLANG_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CLANG_HPP + +namespace boost { + namespace alignment { + namespace detail { + template + struct alignment_of { + enum { + value = __alignof(T) + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/alignment_of_codegear.hpp b/3party/boost/boost/align/detail/alignment_of_codegear.hpp new file mode 100644 index 0000000000..2af47e91d1 --- /dev/null +++ b/3party/boost/boost/align/detail/alignment_of_codegear.hpp @@ -0,0 +1,25 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CODEGEAR_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CODEGEAR_HPP + +namespace boost { + namespace alignment { + namespace detail { + template + struct alignment_of { + enum { + value = alignof(T) + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/alignment_of_cxx11.hpp b/3party/boost/boost/align/detail/alignment_of_cxx11.hpp new file mode 100644 index 0000000000..16327c6f7b --- /dev/null +++ b/3party/boost/boost/align/detail/alignment_of_cxx11.hpp @@ -0,0 +1,22 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CXX11_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_CXX11_HPP + +#include + +namespace boost { + namespace alignment { + namespace detail { + using std::alignment_of; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/alignment_of_gcc.hpp b/3party/boost/boost/align/detail/alignment_of_gcc.hpp new file mode 100644 index 0000000000..426dbba5e3 --- /dev/null +++ b/3party/boost/boost/align/detail/alignment_of_gcc.hpp @@ -0,0 +1,25 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_GCC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_GCC_HPP + +namespace boost { + namespace alignment { + namespace detail { + template + struct alignment_of { + enum { + value = __alignof__(T) + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/alignment_of_msvc.hpp b/3party/boost/boost/align/detail/alignment_of_msvc.hpp new file mode 100644 index 0000000000..fcf2b7dba0 --- /dev/null +++ b/3party/boost/boost/align/detail/alignment_of_msvc.hpp @@ -0,0 +1,30 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNMENT_OF_MSVC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNMENT_OF_MSVC_HPP + +#include +#include +#include + +namespace boost { + namespace alignment { + namespace detail { + template + struct alignment_of { + enum { + value = detail::min_size, object)>::value + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/is_aligned.hpp b/3party/boost/boost/align/detail/is_aligned.hpp new file mode 100644 index 0000000000..a017e6b83a --- /dev/null +++ b/3party/boost/boost/align/detail/is_aligned.hpp @@ -0,0 +1,29 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_IS_ALIGNED_HPP +#define BOOST_ALIGN_DETAIL_IS_ALIGNED_HPP + +#include +#include +#include +#include +#include + +namespace boost { + namespace alignment { + inline bool is_aligned(std::size_t alignment, + const void* ptr) BOOST_NOEXCEPT + { + BOOST_ASSERT(detail::is_alignment(alignment)); + return (detail::address_t(ptr) & (alignment - 1)) == 0; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/is_alignment.hpp b/3party/boost/boost/align/detail/is_alignment.hpp new file mode 100644 index 0000000000..6e34cacb84 --- /dev/null +++ b/3party/boost/boost/align/detail/is_alignment.hpp @@ -0,0 +1,27 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_IS_ALIGNMENT_HPP +#define BOOST_ALIGN_DETAIL_IS_ALIGNMENT_HPP + +#include +#include + +namespace boost { + namespace alignment { + namespace detail { + BOOST_CONSTEXPR inline bool is_alignment(std::size_t + value) BOOST_NOEXCEPT + { + return (value > 0) && ((value & (value - 1)) == 0); + } + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/is_alignment_const.hpp b/3party/boost/boost/align/detail/is_alignment_const.hpp new file mode 100644 index 0000000000..f6d7e97408 --- /dev/null +++ b/3party/boost/boost/align/detail/is_alignment_const.hpp @@ -0,0 +1,27 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_IS_ALIGNMENT_CONST_HPP +#define BOOST_ALIGN_DETAIL_IS_ALIGNMENT_CONST_HPP + +#include + +namespace boost { + namespace alignment { + namespace detail { + template + struct is_alignment_const { + enum { + value = (N > 0) && ((N & (N - 1)) == 0) + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/max_align.hpp b/3party/boost/boost/align/detail/max_align.hpp new file mode 100644 index 0000000000..8e64e7bb9c --- /dev/null +++ b/3party/boost/boost/align/detail/max_align.hpp @@ -0,0 +1,27 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_MAX_ALIGN_HPP +#define BOOST_ALIGN_DETAIL_MAX_ALIGN_HPP + +#include + +namespace boost { + namespace alignment { + namespace detail { + template + struct max_align { + enum { + value = (A > B) ? A : B + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/max_count_of.hpp b/3party/boost/boost/align/detail/max_count_of.hpp new file mode 100644 index 0000000000..62917ac1f4 --- /dev/null +++ b/3party/boost/boost/align/detail/max_count_of.hpp @@ -0,0 +1,27 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_MAX_COUNT_OF_HPP +#define BOOST_ALIGN_DETAIL_MAX_COUNT_OF_HPP + +#include + +namespace boost { + namespace alignment { + namespace detail { + template + struct max_count_of { + enum { + value = ~static_cast(0) / sizeof(T) + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/min_size.hpp b/3party/boost/boost/align/detail/min_size.hpp new file mode 100644 index 0000000000..20e31fb4b4 --- /dev/null +++ b/3party/boost/boost/align/detail/min_size.hpp @@ -0,0 +1,27 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_MIN_SIZE_HPP +#define BOOST_ALIGN_DETAIL_MIN_SIZE_HPP + +#include + +namespace boost { + namespace alignment { + namespace detail { + template + struct min_size { + enum { + value = (A < B) ? A : B + }; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/padded.hpp b/3party/boost/boost/align/detail/padded.hpp new file mode 100644 index 0000000000..9aeeee8929 --- /dev/null +++ b/3party/boost/boost/align/detail/padded.hpp @@ -0,0 +1,24 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_PADDED_HPP +#define BOOST_ALIGN_DETAIL_PADDED_HPP + +namespace boost { + namespace alignment { + namespace detail { + template + struct padded { + char unit; + T object; + }; + } + } +} + +#endif diff --git a/3party/boost/boost/align/detail/type_traits.hpp b/3party/boost/boost/align/detail/type_traits.hpp new file mode 100644 index 0000000000..b250f18a2e --- /dev/null +++ b/3party/boost/boost/align/detail/type_traits.hpp @@ -0,0 +1,90 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_TYPE_TRAITS_HPP +#define BOOST_ALIGN_DETAIL_TYPE_TRAITS_HPP + +#include + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include +#else +#include +#endif + +namespace boost { + namespace alignment { + namespace detail { +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) + using std::remove_reference; + using std::remove_all_extents; + using std::remove_cv; +#else + template + struct remove_reference { + typedef T type; + }; + + template + struct remove_reference { + typedef T type; + }; + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + struct remove_reference { + typedef T type; + }; +#endif + + template + struct remove_all_extents { + typedef T type; + }; + + template + struct remove_all_extents { + typedef typename remove_all_extents::type type; + }; + + template + struct remove_all_extents { + typedef typename remove_all_extents::type type; + }; + + template + struct remove_const { + typedef T type; + }; + + template + struct remove_const { + typedef T type; + }; + + template + struct remove_volatile { + typedef T type; + }; + + template + struct remove_volatile { + typedef T type; + }; + + template + struct remove_cv { + typedef typename remove_volatile::type>::type type; + }; +#endif + } + } +} + +#endif diff --git a/3party/boost/boost/align/is_aligned.hpp b/3party/boost/boost/align/is_aligned.hpp new file mode 100644 index 0000000000..d59bf8d9b8 --- /dev/null +++ b/3party/boost/boost/align/is_aligned.hpp @@ -0,0 +1,53 @@ +/* + Copyright (c) 2014 Glen Joseph Fernandes + glenfe at live dot com + + Distributed under the Boost Software License, + Version 1.0. (See accompanying file LICENSE_1_0.txt + or copy at http://boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_IS_ALIGNED_HPP +#define BOOST_ALIGN_IS_ALIGNED_HPP + +/** + Function is_aligned. + + @file + @author Glen Fernandes +*/ + +/** + @cond +*/ +#include +/** + @endcond +*/ + +/** + Boost namespace. +*/ +namespace boost { + /** + Alignment namespace. + */ + namespace alignment { + /** + Determines whether the space pointed to by + `ptr` has alignment specified by + `alignment`. + + @param alignment Shall be a power of two. + + @param ptr Pointer to test for alignment. + + @return `true` if and only if `ptr` points + to space that has alignment specified by + `alignment`. + */ + inline bool is_aligned(std::size_t alignment, + const void* ptr) BOOST_NOEXCEPT; + } +} + +#endif diff --git a/3party/boost/boost/aligned_storage.hpp b/3party/boost/boost/aligned_storage.hpp index ce277ab702..b5455f00b6 100644 --- a/3party/boost/boost/aligned_storage.hpp +++ b/3party/boost/boost/aligned_storage.hpp @@ -48,10 +48,10 @@ struct aligned_storage_imp { char buf[size_]; - typename mpl::eval_if_c< + typename ::boost::mpl::eval_if_c< alignment_ == std::size_t(-1) - , mpl::identity - , type_with_alignment + , ::boost::mpl::identity< ::boost::detail::max_align > + , ::boost::type_with_alignment >::type align_; } data_; void* address() const { return const_cast(this); } @@ -76,12 +76,12 @@ class aligned_storage : #else public #endif - detail::aligned_storage::aligned_storage_imp + ::boost::detail::aligned_storage::aligned_storage_imp { public: // constants - typedef detail::aligned_storage::aligned_storage_imp type; + typedef ::boost::detail::aligned_storage::aligned_storage_imp type; BOOST_STATIC_CONSTANT( std::size_t @@ -96,25 +96,11 @@ public: // constants ) ); -#if defined(__GNUC__) &&\ - (__GNUC__ > 3) ||\ - (__GNUC__ == 3 && (__GNUC_MINOR__ > 2 ||\ - (__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ >=3))) - private: // noncopyable aligned_storage(const aligned_storage&); aligned_storage& operator=(const aligned_storage&); -#else // gcc less than 3.2.3 - -public: // _should_ be noncopyable, but GCC compiler emits error - - aligned_storage(const aligned_storage&); - aligned_storage& operator=(const aligned_storage&); - -#endif // gcc < 3.2.3 workaround - public: // structors aligned_storage() @@ -132,46 +118,22 @@ public: // accessors return static_cast(this)->address(); } -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - const void* address() const { return static_cast(this)->address(); } - -#else // MSVC6 - - const void* address() const; - -#endif // MSVC6 workaround - }; -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - -// MSVC6 seems not to like inline functions with const void* returns, so we -// declare the following here: - -template -const void* aligned_storage::address() const -{ - return const_cast< aligned_storage* >(this)->address(); -} - -#endif // MSVC6 workaround - -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // // Make sure that is_pod recognises aligned_storage<>::type // as a POD (Note that aligned_storage<> itself is not a POD): // template -struct is_pod > +struct is_pod< ::boost::detail::aligned_storage::aligned_storage_imp > BOOST_TT_AUX_BOOL_C_BASE(true) { BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(true) }; -#endif } // namespace boost diff --git a/3party/boost/boost/any.hpp b/3party/boost/boost/any.hpp index 22ee76e452..a63fea42ad 100644 --- a/3party/boost/boost/any.hpp +++ b/3party/boost/boost/any.hpp @@ -3,7 +3,7 @@ #ifndef BOOST_ANY_INCLUDED #define BOOST_ANY_INCLUDED -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -12,22 +12,26 @@ // with features contributed and bugs found by // Antony Polukhin, Ed Brey, Mark Rodgers, // Peter Dimov, and James Curran -// when: July 2001, Aplril 2013 +// when: July 2001, April 2013 - May 2013 #include #include #include "boost/config.hpp" #include +#include +#include #include +#include #include #include #include #include +#include // See boost/python/type_id.hpp // TODO: add BOOST_TYPEID_COMPARE_BY_NAME to config.hpp -# if (defined(__GNUC__) && __GNUC__ >= 3) \ +# if defined(__GNUC__) \ || defined(_AIX) \ || ( defined(__sgi) && defined(__host_mips)) \ || (defined(__hpux) && defined(__HP_aCC)) \ @@ -49,7 +53,7 @@ namespace boost template any(const ValueType & value) - : content(new holder(value)) + : content(new holder::type>(value)) { } @@ -68,8 +72,10 @@ namespace boost // Perfect forwarding of ValueType template - any(ValueType&& value, typename boost::disable_if >::type* = 0) - : content(new holder< typename remove_reference::type >(static_cast(value))) + any(ValueType&& value + , typename boost::disable_if >::type* = 0 // disable if value has type `any&` + , typename boost::disable_if >::type* = 0) // disable if value has type `const ValueType&&` + : content(new holder< typename decay::type >(static_cast(value))) { } #endif @@ -133,7 +139,12 @@ namespace boost return !content; } - const std::type_info & type() const + void clear() BOOST_NOEXCEPT + { + any().swap(*this); + } + + const std::type_info & type() const BOOST_NOEXCEPT { return content ? content->type() : typeid(void); } @@ -154,7 +165,7 @@ namespace boost public: // queries - virtual const std::type_info & type() const = 0; + virtual const std::type_info & type() const BOOST_NOEXCEPT = 0; virtual placeholder * clone() const = 0; @@ -178,7 +189,7 @@ namespace boost #endif public: // queries - virtual const std::type_info & type() const + virtual const std::type_info & type() const BOOST_NOEXCEPT { return typeid(ValueType); } @@ -221,10 +232,10 @@ namespace boost lhs.swap(rhs); } - class bad_any_cast : public std::bad_cast + class BOOST_SYMBOL_VISIBLE bad_any_cast : public std::bad_cast { public: - virtual const char * what() const throw() + virtual const char * what() const BOOST_NOEXCEPT_OR_NOTHROW { return "boost::bad_any_cast: " "failed conversion using boost::any_cast"; @@ -255,36 +266,45 @@ namespace boost { typedef BOOST_DEDUCED_TYPENAME remove_reference::type nonref; -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // If 'nonref' is still reference type, it means the user has not - // specialized 'remove_reference'. - - // Please use BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION macro - // to generate specialization of remove_reference for your class - // See type traits library documentation for details - BOOST_STATIC_ASSERT(!is_reference::value); -#endif nonref * result = any_cast(&operand); if(!result) boost::throw_exception(bad_any_cast()); - return *result; + + // Attempt to avoid construction of a temporary object in cases when + // `ValueType` is not a reference. Example: + // `static_cast(*result);` + // which is equal to `std::string(*result);` + typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_< + boost::is_reference, + ValueType, + BOOST_DEDUCED_TYPENAME boost::add_reference::type + >::type ref_type; + + return static_cast(*result); } template inline ValueType any_cast(const any & operand) { typedef BOOST_DEDUCED_TYPENAME remove_reference::type nonref; - -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - // The comment in the above version of 'any_cast' explains when this - // assert is fired and what to do. - BOOST_STATIC_ASSERT(!is_reference::value); -#endif - return any_cast(const_cast(operand)); } +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + template + inline ValueType any_cast(any&& operand) + { + BOOST_STATIC_ASSERT_MSG( + boost::is_rvalue_reference::value /*true if ValueType is rvalue or just a value*/ + || boost::is_const< typename boost::remove_reference::type >::value, + "boost::any_cast shall not be used for getting nonconst references to temporary objects" + ); + return any_cast(operand); + } +#endif + + // Note: The "unsafe" versions of any_cast are not part of the // public interface and may be removed at any time. They are // required where we know what type is stored in the any and can't diff --git a/3party/boost/boost/archive/add_facet.hpp b/3party/boost/boost/archive/add_facet.hpp index 6bafe9bdb2..242bdd9001 100644 --- a/3party/boost/boost/archive/add_facet.hpp +++ b/3party/boost/boost/archive/add_facet.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ADD_FACET_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/archive_exception.hpp b/3party/boost/boost/archive/archive_exception.hpp index e27807bc26..ffb430c6a8 100644 --- a/3party/boost/boost/archive/archive_exception.hpp +++ b/3party/boost/boost/archive/archive_exception.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -49,7 +49,7 @@ public: typedef enum { no_exception, // initialized without code other_exception, // any excepton not listed below - unregistered_class, // attempt to serialize a pointer of an + unregistered_class, // attempt to serialize a pointer of // an unregistered class invalid_signature, // first line of archive does not contain // expected string @@ -57,8 +57,8 @@ public: // subsequent to this one pointer_conflict, // an attempt has been made to directly // serialize an object which has - // already been serialzed through a pointer. - // Were this permited, the archive load would result + // already been serialized through a pointer. + // Were this permitted, the archive load would result // in the creation of an extra copy of the obect. incompatible_native_format, // attempt to read native binary format // on incompatible platform @@ -70,7 +70,7 @@ public: unregistered_cast, // base - derived relationship not registered with // void_cast_register unsupported_class_version, // type saved with a version # greater than the - // one used by the program. This indicates that the proggram + // one used by the program. This indicates that the program // needs to be rebuilt. multiple_code_instantiation, // code for implementing serialization for some // type has been instantiated in more than one module. diff --git a/3party/boost/boost/archive/basic_archive.hpp b/3party/boost/boost/archive/basic_archive.hpp index c5ac8808e5..0412112352 100644 --- a/3party/boost/boost/archive/basic_archive.hpp +++ b/3party/boost/boost/archive/basic_archive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_ARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -15,7 +15,7 @@ // http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for updates, documentation, and revision history. - +#include // count #include #include #include // size_t @@ -221,6 +221,9 @@ struct class_name_type : operator char * () { return t; } + std::size_t size() const { + return std::strlen(t); + } explicit class_name_type(const char *key_) : t(const_cast(key_)){} explicit class_name_type(char *key_) diff --git a/3party/boost/boost/archive/basic_binary_iarchive.hpp b/3party/boost/boost/archive/basic_binary_iarchive.hpp index d851dab4dc..a649d5e919 100644 --- a/3party/boost/boost/archive/basic_binary_iarchive.hpp +++ b/3party/boost/boost/archive/basic_binary_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_BINARY_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -44,21 +44,27 @@ namespace boost { namespace archive { +namespace detail { + template class interface_iarchive; +} // namespace detail + ///////////////////////////////////////////////////////////////////////// // class basic_binary_iarchive - read serialized objects from a input binary stream template class basic_binary_iarchive : public detail::common_iarchive { -protected: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: -#elif defined(BOOST_MSVC) - // for some inexplicable reason insertion of "class" generates compile erro - // on msvc 7.1 - friend detail::interface_iarchive; #else - friend class detail::interface_iarchive; +protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_iarchive; + #else + friend class detail::interface_iarchive; + #endif #endif // intermediate level to support override of operators // fot templates in the absence of partial function diff --git a/3party/boost/boost/archive/basic_binary_iprimitive.hpp b/3party/boost/boost/archive/basic_binary_iprimitive.hpp index fc27123ded..2e72a1c6fa 100644 --- a/3party/boost/boost/archive/basic_binary_iprimitive.hpp +++ b/3party/boost/boost/archive/basic_binary_iprimitive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BINARY_IPRIMITIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -126,7 +126,7 @@ public: template #if defined(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS) struct apply { - typedef BOOST_DEDUCED_TYPENAME boost::serialization::is_bitwise_serializable< T >::type type; + typedef typename boost::serialization::is_bitwise_serializable< T >::type type; }; #else struct apply : public boost::serialization::is_bitwise_serializable< T > {}; @@ -178,7 +178,7 @@ basic_binary_iprimitive::load_binary( boost::serialization::throw_exception( archive_exception(archive_exception::input_stream_error) ); - std::memcpy(static_cast(address) + (count - s), &t, s); + std::memcpy(static_cast(address) + (count - s), &t, static_cast(s)); } } diff --git a/3party/boost/boost/archive/basic_binary_oarchive.hpp b/3party/boost/boost/archive/basic_binary_oarchive.hpp index 01622b9f3d..f8b53e9d7c 100644 --- a/3party/boost/boost/archive/basic_binary_oarchive.hpp +++ b/3party/boost/boost/archive/basic_binary_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_BINARY_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -46,6 +46,10 @@ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + ////////////////////////////////////////////////////////////////////// // class basic_binary_oarchive - write serialized objects to a binary output stream // note: this archive has no pretensions to portability. Archive format @@ -58,15 +62,17 @@ template class basic_binary_oarchive : public archive::detail::common_oarchive { -protected: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: -#elif defined(BOOST_MSVC) - // for some inexplicable reason insertion of "class" generates compile erro - // on msvc 7.1 - friend detail::interface_oarchive; #else - friend class detail::interface_oarchive; +protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_oarchive; + #else + friend class detail::interface_oarchive; + #endif #endif // any datatype not specifed below will be handled by base class typedef detail::common_oarchive detail_common_oarchive; diff --git a/3party/boost/boost/archive/basic_binary_oprimitive.hpp b/3party/boost/boost/archive/basic_binary_oprimitive.hpp index 53e44e4fa9..ba070cd39a 100644 --- a/3party/boost/boost/archive/basic_binary_oprimitive.hpp +++ b/3party/boost/boost/archive/basic_binary_oprimitive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_BINARY_OPRIMITIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -58,8 +58,7 @@ namespace archive { // class basic_binary_oprimitive - binary output of prmitives template -class basic_binary_oprimitive -{ +class basic_binary_oprimitive { #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS friend class save_access; protected: @@ -122,7 +121,7 @@ public: template #if defined(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS) struct apply { - typedef BOOST_DEDUCED_TYPENAME boost::serialization::is_bitwise_serializable< T >::type type; + typedef typename boost::serialization::is_bitwise_serializable< T >::type type; }; #else struct apply : public boost::serialization::is_bitwise_serializable< T > {}; @@ -170,7 +169,7 @@ basic_binary_oprimitive::save_binary( archive_exception(archive_exception::output_stream_error) ); //os.write( - // static_cast(address), + // static_cast(address), // count //); //BOOST_ASSERT(os.good()); diff --git a/3party/boost/boost/archive/basic_streambuf_locale_saver.hpp b/3party/boost/boost/archive/basic_streambuf_locale_saver.hpp index ca764e1048..6bf8f715cb 100644 --- a/3party/boost/boost/archive/basic_streambuf_locale_saver.hpp +++ b/3party/boost/boost/archive/basic_streambuf_locale_saver.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_STREAMBUF_LOCALE_SAVER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -50,7 +50,7 @@ public: explicit basic_streambuf_locale_saver( state_type &s ) : s_save_( s ), a_save_( s.getloc() ) {} - basic_streambuf_locale_saver( state_type &s, aspect_type const &a ) + explicit basic_streambuf_locale_saver( state_type &s, aspect_type const &a ) : s_save_( s ), a_save_( s.pubimbue(a) ) {} ~basic_streambuf_locale_saver() diff --git a/3party/boost/boost/archive/basic_text_iarchive.hpp b/3party/boost/boost/archive/basic_text_iarchive.hpp index 729d51aadf..0e78ff6d14 100644 --- a/3party/boost/boost/archive/basic_text_iarchive.hpp +++ b/3party/boost/boost/archive/basic_text_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_TEXT_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -40,21 +40,27 @@ namespace boost { namespace archive { +namespace detail { + template class interface_iarchive; +} // namespace detail + ///////////////////////////////////////////////////////////////////////// // class basic_text_iarchive - read serialized objects from a input text stream template class basic_text_iarchive : public detail::common_iarchive { -protected: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: -#elif defined(BOOST_MSVC) - // for some inexplicable reason insertion of "class" generates compile erro - // on msvc 7.1 - friend detail::interface_iarchive; #else - friend class detail::interface_iarchive; +protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_iarchive; + #else + friend class detail::interface_iarchive; + #endif #endif // intermediate level to support override of operators // fot templates in the absence of partial function diff --git a/3party/boost/boost/archive/basic_text_iprimitive.hpp b/3party/boost/boost/archive/basic_text_iprimitive.hpp index b927ec91a0..dabc3c8710 100644 --- a/3party/boost/boost/archive/basic_text_iprimitive.hpp +++ b/3party/boost/boost/archive/basic_text_iprimitive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_TEXT_IPRIMITIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -64,13 +64,8 @@ namespace archive { #endif template -class basic_text_iprimitive -{ -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +class basic_text_iprimitive { protected: -#else -public: -#endif IStream &is; io::ios_flags_saver flags_saver; io::ios_precision_saver precision_saver; @@ -78,18 +73,16 @@ public: #ifndef BOOST_NO_STD_LOCALE boost::scoped_ptr archive_locale; basic_streambuf_locale_saver< - BOOST_DEDUCED_TYPENAME IStream::char_type, - BOOST_DEDUCED_TYPENAME IStream::traits_type + typename IStream::char_type, + typename IStream::traits_type > locale_saver; #endif template void load(T & t) { - if(! is.fail()){ - is >> t; + if(is >> t) return; - } boost::serialization::throw_exception( archive_exception(archive_exception::input_stream_error) ); diff --git a/3party/boost/boost/archive/basic_text_oarchive.hpp b/3party/boost/boost/archive/basic_text_oarchive.hpp index dd10f65981..bed9cd34d6 100644 --- a/3party/boost/boost/archive/basic_text_oarchive.hpp +++ b/3party/boost/boost/archive/basic_text_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_TEXT_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -42,23 +42,29 @@ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + ///////////////////////////////////////////////////////////////////////// // class basic_text_oarchive template class basic_text_oarchive : public detail::common_oarchive { -protected: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ -|| BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x560)) +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: -#elif defined(BOOST_MSVC) - // for some inexplicable reason insertion of "class" generates compile erro - // on msvc 7.1 - friend detail::interface_oarchive; #else - friend class detail::interface_oarchive; +protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_oarchive; + #else + friend class detail::interface_oarchive; + #endif #endif + enum { none, eol, diff --git a/3party/boost/boost/archive/basic_text_oprimitive.hpp b/3party/boost/boost/archive/basic_text_oprimitive.hpp index 06885ad35e..73a0a62e56 100644 --- a/3party/boost/boost/archive/basic_text_oprimitive.hpp +++ b/3party/boost/boost/archive/basic_text_oprimitive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_TEXT_OPRIMITIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -26,13 +26,14 @@ #include #include -#include // isnan #include #include // size_t #include #include #include +#include + #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) #include #endif @@ -46,6 +47,8 @@ namespace std{ } // namespace std #endif +#include +#include #include #include #include @@ -65,11 +68,7 @@ class save_access; template class basic_text_oprimitive { -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS protected: -#else -public: -#endif OStream &os; io::ios_flags_saver flags_saver; io::ios_precision_saver precision_saver; @@ -77,21 +76,11 @@ public: #ifndef BOOST_NO_STD_LOCALE boost::scoped_ptr archive_locale; basic_streambuf_locale_saver< - BOOST_DEDUCED_TYPENAME OStream::char_type, - BOOST_DEDUCED_TYPENAME OStream::traits_type + typename OStream::char_type, + typename OStream::traits_type > locale_saver; #endif - // default saving of primitives. - template - void save(const T &t){ - if(os.fail()) - boost::serialization::throw_exception( - archive_exception(archive_exception::output_stream_error) - ); - os << t; - } - ///////////////////////////////////////////////////////// // fundamental types that need special treatment void save(const bool t){ @@ -123,33 +112,77 @@ public: save(static_cast(t)); } #endif - void save(const float t) - { + + ///////////////////////////////////////////////////////// + // saving of any types not listed above + + template + void save_impl(const T &t, boost::mpl::bool_ &){ + if(os.fail()) + boost::serialization::throw_exception( + archive_exception(archive_exception::output_stream_error) + ); + os << t; + } + + ///////////////////////////////////////////////////////// + // floating point types need even more special treatment + // the following determines whether the type T is some sort + // of floating point type. Note that we then assume that + // the stream << operator is defined on that type - if not + // we'll get a compile time error. This is meant to automatically + // support synthesized types which support floating point + // operations. Also it should handle compiler dependent types + // such long double. Due to John Maddock. + + template + struct is_float { + typedef typename mpl::bool_< + boost::is_floating_point::value + || (std::numeric_limits::is_specialized + && !std::numeric_limits::is_integer + && !std::numeric_limits::is_exact + && std::numeric_limits::max_exponent) + >::type type; + }; + + template + void save_impl(const T &t, boost::mpl::bool_ &){ // must be a user mistake - can't serialize un-initialized data if(os.fail()) boost::serialization::throw_exception( archive_exception(archive_exception::output_stream_error) ); - os << std::setprecision(std::numeric_limits::digits10 + 2); - os << t; + // The formulae for the number of decimla digits required is given in + // http://www2.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf + // which is derived from Kahan's paper: + // www.eecs.berkeley.edu/~wkahan/ieee754status/ieee754.ps + // const unsigned int digits = (std::numeric_limits::digits * 3010) / 10000; + // note: I've commented out the above because I didn't get good results. e.g. + // in one case I got a difference of 19 units. + #ifndef BOOST_NO_CXX11_NUMERIC_LIMITS + const unsigned int digits = std::numeric_limits::max_digits10; + #else + const unsigned int digits = std::numeric_limits::digits10 + 2; + #endif + os << std::setprecision(digits) << std::scientific << t; } - void save(const double t) - { - // must be a user mistake - can't serialize un-initialized data - if(os.fail()) - boost::serialization::throw_exception( - archive_exception(archive_exception::output_stream_error) - ); - os << std::setprecision(std::numeric_limits::digits10 + 2); - os << t; + + template + void save(const T & t){ + boost::io::ios_flags_saver fs(os); + boost::io::ios_precision_saver ps(os); + typename is_float::type tf; + save_impl(t, tf); } + BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY()) basic_text_oprimitive(OStream & os, bool no_codecvt); BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY()) ~basic_text_oprimitive(); public: // unformatted append of one character - void put(BOOST_DEDUCED_TYPENAME OStream::char_type c){ + void put(typename OStream::char_type c){ if(os.fail()) boost::serialization::throw_exception( archive_exception(archive_exception::output_stream_error) diff --git a/3party/boost/boost/archive/basic_xml_archive.hpp b/3party/boost/boost/archive/basic_xml_archive.hpp index c99d94fa65..a4ad3a2f06 100644 --- a/3party/boost/boost/archive/basic_xml_archive.hpp +++ b/3party/boost/boost/archive/basic_xml_archive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_XML_TEXT_ARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/basic_xml_iarchive.hpp b/3party/boost/boost/archive/basic_xml_iarchive.hpp index d7b8bfd0ce..5047fef26c 100644 --- a/3party/boost/boost/archive/basic_xml_iarchive.hpp +++ b/3party/boost/boost/archive/basic_xml_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_XML_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -37,21 +37,27 @@ namespace boost { namespace archive { +namespace detail { + template class interface_iarchive; +} // namespace detail + ///////////////////////////////////////////////////////////////////////// // class xml_iarchive - read serialized objects from a input text stream template class basic_xml_iarchive : public detail::common_iarchive { -protected: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: -#elif defined(BOOST_MSVC) - // for some inexplicable reason insertion of "class" generates compile erro - // on msvc 7.1 - friend detail::interface_oarchive; #else - friend class detail::interface_oarchive; +protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_iarchive; + #else + friend class detail::interface_iarchive; + #endif #endif unsigned int depth; BOOST_ARCHIVE_OR_WARCHIVE_DECL(void) diff --git a/3party/boost/boost/archive/basic_xml_oarchive.hpp b/3party/boost/boost/archive/basic_xml_oarchive.hpp index b571372ca7..c986833c27 100644 --- a/3party/boost/boost/archive/basic_xml_oarchive.hpp +++ b/3party/boost/boost/archive/basic_xml_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_XML_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -36,24 +36,29 @@ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + ////////////////////////////////////////////////////////////////////// // class basic_xml_oarchive - write serialized objects to a xml output stream template class basic_xml_oarchive : public detail::common_oarchive { -protected: -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: -#elif defined(BOOST_MSVC) +#else +protected: +#endif +#if BOOST_WORKAROUND(BOOST_MSVC, < 1500) // for some inexplicable reason insertion of "class" generates compile erro // on msvc 7.1 friend detail::interface_oarchive; - friend class save_access; #else friend class detail::interface_oarchive; - friend class save_access; #endif + friend class save_access; // special stuff for xml output unsigned int depth; bool indent_next; diff --git a/3party/boost/boost/archive/binary_iarchive.hpp b/3party/boost/boost/archive/binary_iarchive.hpp index 638d996729..ce67ccabd0 100644 --- a/3party/boost/boost/archive/binary_iarchive.hpp +++ b/3party/boost/boost/archive/binary_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BINARY_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -25,44 +25,7 @@ # pragma warning(disable : 4511 4512) #endif -namespace boost { -namespace archive { - -// do not derive from the classes below. If you want to extend this functionality -// via inhertance, derived from text_iarchive_impl instead. This will -// preserve correct static polymorphism. - -// same as binary_iarchive below - without the shared_ptr_helper -class naked_binary_iarchive : - public binary_iarchive_impl< - boost::archive::naked_binary_iarchive, - std::istream::char_type, - std::istream::traits_type - > -{ -public: - naked_binary_iarchive(std::istream & is, unsigned int flags = 0) : - binary_iarchive_impl< - naked_binary_iarchive, std::istream::char_type, std::istream::traits_type - >(is, flags) - {} - naked_binary_iarchive(std::streambuf & bsb, unsigned int flags = 0) : - binary_iarchive_impl< - naked_binary_iarchive, std::istream::char_type, std::istream::traits_type - >(bsb, flags) - {} -}; - -} // namespace archive -} // namespace boost - -// note special treatment of shared_ptr. This type needs a special -// structure associated with every archive. We created a "mix-in" -// class to provide this functionality. Since shared_ptr holds a -// special esteem in the boost library - we included it here by default. -#include - -namespace boost { +namespace boost { namespace archive { // do not derive from this class. If you want to extend this functionality @@ -73,9 +36,7 @@ class binary_iarchive : boost::archive::binary_iarchive, std::istream::char_type, std::istream::traits_type - >, - public detail::shared_ptr_helper -{ + >{ public: binary_iarchive(std::istream & is, unsigned int flags = 0) : binary_iarchive_impl< diff --git a/3party/boost/boost/archive/binary_iarchive_impl.hpp b/3party/boost/boost/archive/binary_iarchive_impl.hpp index 32c476d645..a9afe61688 100644 --- a/3party/boost/boost/archive/binary_iarchive_impl.hpp +++ b/3party/boost/boost/archive/binary_iarchive_impl.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BINARY_IARCHIVE_IMPL_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -29,6 +29,10 @@ namespace boost { namespace archive { +namespace detail { + template class interface_iarchive; +} // namespace detail + template class binary_iarchive_impl : public basic_binary_iprimitive, @@ -37,10 +41,18 @@ class binary_iarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_binary_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_iarchive; + friend basic_binary_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class basic_binary_iarchive; + friend class load_access; + #endif #endif // note: the following should not needed - but one compiler (vc 7.1) // fails to compile one test (test_shared_ptr) without it !!! diff --git a/3party/boost/boost/archive/binary_oarchive.hpp b/3party/boost/boost/archive/binary_oarchive.hpp index 2aac14f908..89a86da418 100644 --- a/3party/boost/boost/archive/binary_oarchive.hpp +++ b/3party/boost/boost/archive/binary_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BINARY_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -50,8 +50,6 @@ public: {} }; -typedef binary_oarchive naked_binary_oarchive; - } // namespace archive } // namespace boost diff --git a/3party/boost/boost/archive/binary_oarchive_impl.hpp b/3party/boost/boost/archive/binary_oarchive_impl.hpp index 7ca773b601..a8c97333ec 100644 --- a/3party/boost/boost/archive/binary_oarchive_impl.hpp +++ b/3party/boost/boost/archive/binary_oarchive_impl.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BINARY_OARCHIVE_IMPL_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -30,6 +30,10 @@ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + template class binary_oarchive_impl : public basic_binary_oprimitive, @@ -38,10 +42,18 @@ class binary_oarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_binary_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_oarchive; + friend basic_binary_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_binary_oarchive; + friend class save_access; + #endif #endif // note: the following should not needed - but one compiler (vc 7.1) // fails to compile one test (test_shared_ptr) without it !!! diff --git a/3party/boost/boost/archive/binary_wiarchive.hpp b/3party/boost/boost/archive/binary_wiarchive.hpp index b5f6a7106b..775d8f8272 100644 --- a/3party/boost/boost/archive/binary_wiarchive.hpp +++ b/3party/boost/boost/archive/binary_wiarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BINARY_WIARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -28,43 +28,6 @@ namespace boost { namespace archive { -// same as binary_wiarchive below - without the shared_ptr_helper -class naked_binary_wiarchive : - public binary_iarchive_impl< - boost::archive::naked_binary_wiarchive, - std::wistream::char_type, - std::wistream::traits_type - > -{ -public: - naked_binary_wiarchive(std::wistream & is, unsigned int flags = 0) : - binary_iarchive_impl< - naked_binary_wiarchive, - std::wistream::char_type, - std::wistream::traits_type - >(is, flags) - {} - naked_binary_wiarchive(std::wstreambuf & bsb, unsigned int flags = 0) : - binary_iarchive_impl< - naked_binary_wiarchive, - std::wistream::char_type, - std::wistream::traits_type - >(bsb, flags) - {} -}; - -} // namespace archive -} // namespace boost - -// note special treatment of shared_ptr. This type needs a special -// structure associated with every archive. We created a "mix-in" -// class to provide this functionality. Since shared_ptr holds a -// special esteem in the boost library - we included it here by default. -#include - -namespace boost { -namespace archive { - class binary_wiarchive : public binary_iarchive_impl< binary_wiarchive, std::wistream::char_type, std::wistream::traits_type diff --git a/3party/boost/boost/archive/binary_woarchive.hpp b/3party/boost/boost/archive/binary_woarchive.hpp index 2075dac8bc..a8817d6f8b 100644 --- a/3party/boost/boost/archive/binary_woarchive.hpp +++ b/3party/boost/boost/archive/binary_woarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BINARY_WOARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -49,8 +49,6 @@ public: {} }; -typedef binary_woarchive naked_binary_woarchive; - } // namespace archive } // namespace boost diff --git a/3party/boost/boost/archive/codecvt_null.hpp b/3party/boost/boost/archive/codecvt_null.hpp index 910b26156a..caeefee5c0 100644 --- a/3party/boost/boost/archive/codecvt_null.hpp +++ b/3party/boost/boost/archive/codecvt_null.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_CODECVT_NULL_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/archive_serializer_map.hpp b/3party/boost/boost/archive/detail/archive_serializer_map.hpp index 6d2eec4a85..53fcae4045 100644 --- a/3party/boost/boost/archive/detail/archive_serializer_map.hpp +++ b/3party/boost/boost/archive/detail/archive_serializer_map.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_SERIALIZER_MAP_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/auto_link_archive.hpp b/3party/boost/boost/archive/detail/auto_link_archive.hpp index 05956f0e8f..79b0e490d6 100644 --- a/3party/boost/boost/archive/detail/auto_link_archive.hpp +++ b/3party/boost/boost/archive/detail/auto_link_archive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_AUTO_LINK_ARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/auto_link_warchive.hpp b/3party/boost/boost/archive/detail/auto_link_warchive.hpp index 4d4efcd44f..683d191c20 100644 --- a/3party/boost/boost/archive/detail/auto_link_warchive.hpp +++ b/3party/boost/boost/archive/detail/auto_link_warchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_AUTO_LINK_WARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/basic_archive_impl.hpp b/3party/boost/boost/archive/detail/basic_archive_impl.hpp index 589368ddc1..b84a509837 100644 --- a/3party/boost/boost/archive/detail/basic_archive_impl.hpp +++ b/3party/boost/boost/archive/detail/basic_archive_impl.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_BASIC_ARCHIVE_IMPL_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/basic_config.hpp b/3party/boost/boost/archive/detail/basic_config.hpp index 5e37cae40b..4bd2723eb2 100644 --- a/3party/boost/boost/archive/detail/basic_config.hpp +++ b/3party/boost/boost/archive/detail/basic_config.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_BASIC_CONFIG_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/basic_iarchive.hpp b/3party/boost/boost/archive/detail/basic_iarchive.hpp index f62987ecee..fdafbbf841 100644 --- a/3party/boost/boost/archive/detail/basic_iarchive.hpp +++ b/3party/boost/boost/archive/detail/basic_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_BASIC_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -22,10 +22,10 @@ #include #include -#include #include #include #include +#include #include // must be the last header namespace boost { @@ -42,7 +42,8 @@ class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_iserializer; ////////////////////////////////////////////////////////////////////// // class basic_iarchive - read serialized objects from a input stream class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iarchive : - private boost::noncopyable + private boost::noncopyable, + public boost::archive::detail::helper_collection { friend class basic_iarchive_impl; // hide implementation of this class to minimize header conclusion @@ -99,12 +100,6 @@ public: } // namespace archive } // namespace boost -// required by smart_cast for compilers not implementing -// partial template specialization -BOOST_TT_BROKEN_COMPILER_SPEC( - boost::archive::detail::basic_iarchive -) - #include // pops abi_suffix.hpp pragmas #endif //BOOST_ARCHIVE_DETAIL_BASIC_IARCHIVE_HPP diff --git a/3party/boost/boost/archive/detail/basic_iserializer.hpp b/3party/boost/boost/archive/detail/basic_iserializer.hpp index 2f4f6d811f..3bff3e1256 100644 --- a/3party/boost/boost/archive/detail/basic_iserializer.hpp +++ b/3party/boost/boost/archive/detail/basic_iserializer.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_BASIC_ISERIALIZER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/basic_oarchive.hpp b/3party/boost/boost/archive/detail/basic_oarchive.hpp index 402e569a61..f65d11036c 100644 --- a/3party/boost/boost/archive/detail/basic_oarchive.hpp +++ b/3party/boost/boost/archive/detail/basic_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -20,14 +20,12 @@ #include #include -#include - // can't use this - much as I'd like to as borland doesn't support it // #include #include #include - +#include #include // must be the last header namespace boost { @@ -41,10 +39,12 @@ namespace detail { class basic_oarchive_impl; class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oserializer; class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_oserializer; + ////////////////////////////////////////////////////////////////////// // class basic_oarchive - write serialized objects to an output stream class BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oarchive : - private boost::noncopyable + private boost::noncopyable, + public boost::archive::detail::helper_collection { friend class basic_oarchive_impl; // hide implementation of this class to minimize header conclusion @@ -95,12 +95,6 @@ public: } // namespace archive } // namespace boost -// required by smart_cast for compilers not implementing -// partial template specialization -BOOST_TT_BROKEN_COMPILER_SPEC( - boost::archive::detail::basic_oarchive -) - #include // pops abi_suffix.hpp pragmas #endif //BOOST_ARCHIVE_BASIC_OARCHIVE_HPP diff --git a/3party/boost/boost/archive/detail/basic_oserializer.hpp b/3party/boost/boost/archive/detail/basic_oserializer.hpp index 74af7e6577..6ae063f55d 100644 --- a/3party/boost/boost/archive/detail/basic_oserializer.hpp +++ b/3party/boost/boost/archive/detail/basic_oserializer.hpp @@ -2,7 +2,7 @@ #define BOOST_SERIALIZATION_BASIC_OSERIALIZER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/basic_pointer_iserializer.hpp b/3party/boost/boost/archive/detail/basic_pointer_iserializer.hpp index d957b83e64..86badc1937 100644 --- a/3party/boost/boost/archive/detail/basic_pointer_iserializer.hpp +++ b/3party/boost/boost/archive/detail/basic_pointer_iserializer.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_POINTER_ISERIALIZER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -52,10 +52,11 @@ protected: #endif ~basic_pointer_iserializer(); public: + virtual void * heap_allocation() const = 0; virtual const basic_iserializer & get_basic_serializer() const = 0; virtual void load_object_ptr( basic_iarchive & ar, - void * & x, + void * x, const unsigned int file_version ) const = 0; }; diff --git a/3party/boost/boost/archive/detail/basic_pointer_oserializer.hpp b/3party/boost/boost/archive/detail/basic_pointer_oserializer.hpp index b0d3fb9597..bafc46a1d7 100644 --- a/3party/boost/boost/archive/detail/basic_pointer_oserializer.hpp +++ b/3party/boost/boost/archive/detail/basic_pointer_oserializer.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_POINTER_OSERIALIZER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/basic_serializer.hpp b/3party/boost/boost/archive/detail/basic_serializer.hpp index 5dbd886525..c7d3b4befc 100644 --- a/3party/boost/boost/archive/detail/basic_serializer.hpp +++ b/3party/boost/boost/archive/detail/basic_serializer.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_SERIALIZER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/basic_serializer_map.hpp b/3party/boost/boost/archive/detail/basic_serializer_map.hpp index a991ea1dc1..202c20e1ff 100644 --- a/3party/boost/boost/archive/detail/basic_serializer_map.hpp +++ b/3party/boost/boost/archive/detail/basic_serializer_map.hpp @@ -2,7 +2,7 @@ #define BOOST_SERIALIZER_MAP_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/check.hpp b/3party/boost/boost/archive/detail/check.hpp index c9cba519f8..10034e7d10 100644 --- a/3party/boost/boost/archive/detail/check.hpp +++ b/3party/boost/boost/archive/detail/check.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_CHECK_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #pragma inline_depth(511) #pragma inline_recursion(on) @@ -50,7 +50,7 @@ namespace detail { template inline void check_object_level(){ typedef - BOOST_DEDUCED_TYPENAME mpl::greater_equal< + typename mpl::greater_equal< serialization::implementation_level< T >, mpl::int_ >::type typex; @@ -63,12 +63,12 @@ inline void check_object_level(){ template inline void check_object_versioning(){ typedef - BOOST_DEDUCED_TYPENAME mpl::or_< - BOOST_DEDUCED_TYPENAME mpl::greater< + typename mpl::or_< + typename mpl::greater< serialization::implementation_level< T >, mpl::int_ >, - BOOST_DEDUCED_TYPENAME mpl::equal_to< + typename mpl::equal_to< serialization::version< T >, mpl::int_<0> > @@ -83,7 +83,7 @@ inline void check_object_tracking(){ // presume it has already been determined that // T is not a const BOOST_STATIC_ASSERT(! boost::is_const< T >::value); - typedef BOOST_DEDUCED_TYPENAME mpl::equal_to< + typedef typename mpl::equal_to< serialization::tracking_level< T >, mpl::int_ >::type typex; @@ -105,13 +105,13 @@ inline void check_pointer_level(){ // we should only invoke this once we KNOW that T // has been used as a pointer!! typedef - BOOST_DEDUCED_TYPENAME mpl::or_< - BOOST_DEDUCED_TYPENAME mpl::greater< + typename mpl::or_< + typename mpl::greater< serialization::implementation_level< T >, mpl::int_ >, - BOOST_DEDUCED_TYPENAME mpl::not_< - BOOST_DEDUCED_TYPENAME mpl::equal_to< + typename mpl::not_< + typename mpl::equal_to< serialization::tracking_level< T >, mpl::int_ > @@ -139,7 +139,7 @@ inline void check_pointer_level(){ template void inline check_pointer_tracking(){ - typedef BOOST_DEDUCED_TYPENAME mpl::greater< + typedef typename mpl::greater< serialization::tracking_level< T >, mpl::int_ >::type typex; @@ -151,10 +151,10 @@ void inline check_pointer_tracking(){ template inline void check_const_loading(){ typedef - BOOST_DEDUCED_TYPENAME mpl::or_< - BOOST_DEDUCED_TYPENAME boost::serialization::is_wrapper< T >, - BOOST_DEDUCED_TYPENAME mpl::not_< - BOOST_DEDUCED_TYPENAME boost::is_const< T > + typename mpl::or_< + typename boost::serialization::is_wrapper< T >, + typename mpl::not_< + typename boost::is_const< T > > >::type typex; // cannot load data into a "const" object unless it's a diff --git a/3party/boost/boost/archive/detail/common_iarchive.hpp b/3party/boost/boost/archive/detail/common_iarchive.hpp index 54c07c39c4..45e6d34b3e 100644 --- a/3party/boost/boost/archive/detail/common_iarchive.hpp +++ b/3party/boost/boost/archive/detail/common_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_COMMON_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/common_oarchive.hpp b/3party/boost/boost/archive/detail/common_oarchive.hpp index 7962063a58..0d7474bcdc 100644 --- a/3party/boost/boost/archive/detail/common_oarchive.hpp +++ b/3party/boost/boost/archive/detail/common_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_COMMON_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/decl.hpp b/3party/boost/boost/archive/detail/decl.hpp index 9695001abe..44e22be96b 100644 --- a/3party/boost/boost/archive/detail/decl.hpp +++ b/3party/boost/boost/archive/detail/decl.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_DECL_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/helper_collection.hpp b/3party/boost/boost/archive/detail/helper_collection.hpp new file mode 100644 index 0000000000..ba3c60cd16 --- /dev/null +++ b/3party/boost/boost/archive/detail/helper_collection.hpp @@ -0,0 +1,111 @@ +#ifndef BOOST_ARCHIVE_DETAIL_HELPER_COLLECTION_HPP +#define BOOST_ARCHIVE_DETAIL_HELPER_COLLECTION_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// helper_collection.hpp: archive support for run-time helpers + +// (C) Copyright 2002-2008 Robert Ramey and Joaquin M Lopez Munoz +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for updates, documentation, and revision history. + +#include // NULL +#include +#include +#include +#include +#include + +#include + +#ifdef BOOST_NO_CXX11_SMART_PTR + #include + #include +#endif + +namespace boost { + +namespace archive { +namespace detail { + +class helper_collection +{ + helper_collection(const helper_collection&); // non-copyable + helper_collection& operator = (const helper_collection&); // non-copyable + + // note: we dont' actually "share" the function object pointer + // we only use shared_ptr to make sure that it get's deleted + + #ifndef BOOST_NO_CXX11_SMART_PTR + typedef std::pair< + const std::type_info *, + std::shared_ptr + > helper_value_type; + template + std::shared_ptr make_helper_ptr(){ + return std::make_shared(); + } + #else + typedef std::pair< + const std::type_info *, + boost::shared_ptr + > helper_value_type; + template + boost::shared_ptr make_helper_ptr(){ + return boost::make_shared(); + } + #endif + typedef std::vector collection; + collection m_collection; + + struct predicate { + const std::type_info * m_ti; + bool operator()(helper_value_type const &rhs) const { + return *m_ti == *rhs.first; + } + predicate(const std::type_info * ti) : + m_ti(ti) + {} + }; +protected: + helper_collection(){} + ~helper_collection(){} +public: + template + Helper& get_helper(Helper * = NULL) { + + const std::type_info * eti = & typeid(Helper); + + collection::const_iterator it = + std::find_if( + m_collection.begin(), + m_collection.end(), + predicate(eti) + ); + + void * rval; + if(it == m_collection.end()){ + m_collection.push_back( + std::make_pair(eti, make_helper_ptr()) + ); + rval = m_collection.back().second.get(); + } + else{ + rval = it->second.get(); + } + return *static_cast(rval); + } +}; + +} // namespace detail +} // namespace serialization +} // namespace boost + +#endif // BOOST_ARCHIVE_DETAIL_HELPER_COLLECTION_HPP diff --git a/3party/boost/boost/archive/detail/interface_iarchive.hpp b/3party/boost/boost/archive/detail/interface_iarchive.hpp index 06487521fa..b7bd1659f3 100644 --- a/3party/boost/boost/archive/detail/interface_iarchive.hpp +++ b/3party/boost/boost/archive/detail/interface_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_INTERFACE_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/interface_oarchive.hpp b/3party/boost/boost/archive/detail/interface_oarchive.hpp index e8db7a2bc8..7ae71768a8 100644 --- a/3party/boost/boost/archive/detail/interface_oarchive.hpp +++ b/3party/boost/boost/archive/detail/interface_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_INTERFACE_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/iserializer.hpp b/3party/boost/boost/archive/detail/iserializer.hpp index 53765af315..cf547de0dd 100644 --- a/3party/boost/boost/archive/detail/iserializer.hpp +++ b/3party/boost/boost/archive/detail/iserializer.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_ISERIALIZER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #pragma inline_depth(511) #pragma inline_recursion(on) @@ -23,7 +23,6 @@ // See http://www.boost.org for updates, documentation, and revision history. #include // for placement new -#include // for auto_ptr #include // size_t, NULL #include @@ -59,14 +58,11 @@ namespace std{ #include -#define DONT_USE_HAS_NEW_OPERATOR ( \ +#if ! ( \ defined(__BORLANDC__) \ || BOOST_WORKAROUND(__IBMCPP__, < 1210) \ - || defined(BOOST_MSVC) && (BOOST_MSVC <= 1300) \ || defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590) \ ) - -#if ! DONT_USE_HAS_NEW_OPERATOR #include #endif @@ -127,7 +123,7 @@ protected: explicit iserializer() : basic_iserializer( boost::serialization::singleton< - BOOST_DEDUCED_TYPENAME + typename boost::serialization::type_info_implementation< T >::type >::get_const_instance() ) @@ -197,11 +193,109 @@ BOOST_DLLEXPORT void iserializer::load_object_data( # pragma warning(disable : 4511 4512) #endif +// the purpose of this code is to allocate memory for an object +// without requiring the constructor to be called. Presumably +// the allocated object will be subsequently initialized with +// "placement new". +// note: we have the boost type trait has_new_operator but we +// have no corresponding has_delete_operator. So we presume +// that the former being true would imply that the a delete +// operator is also defined for the class T. + +template +struct heap_allocation { + // boost::has_new_operator< T > doesn't work on these compilers + #if DONT_USE_HAS_NEW_OPERATOR + // This doesn't handle operator new overload for class T + static T * invoke_new(){ + return static_cast(operator new(sizeof(T))); + } + static viod invoke_delete(){ + (operator delete(sizeof(T))); + } + #else + // note: we presume that a true value for has_new_operator + // implies the existence of a class specific delete operator as well + // as a class specific new operator. + struct has_new_operator { + static T * invoke_new() { + return static_cast((T::operator new)(sizeof(T))); + } + static void invoke_delete(T * t) { + // if compilation fails here, the likely cause that the class + // T has a class specific new operator but no class specific + // delete operator which matches the following signature. Fix + // your program to have this. Note that adding operator delete + // with only one parameter doesn't seem correct to me since + // the standard(3.7.4.2) says " + // "If a class T has a member deallocation function named + // 'operator delete' with exactly one parameter, then that function + // is a usual (non-placement) deallocation function" which I take + // to mean that it will call the destructor of type T which we don't + // want to do here. + // Note: reliance upon automatic conversion from T * to void * here + (T::operator delete)(t, sizeof(T)); + } + }; + struct doesnt_have_new_operator { + static T* invoke_new() { + return static_cast(operator new(sizeof(T))); + } + static void invoke_delete(T * t) { + // Note: I'm reliance upon automatic conversion from T * to void * here + (operator delete)(t); + } + }; + static T * invoke_new() { + typedef typename + mpl::eval_if< + boost::has_new_operator< T >, + mpl::identity, + mpl::identity + >::type typex; + return typex::invoke_new(); + } + static void invoke_delete(T *t) { + typedef typename + mpl::eval_if< + boost::has_new_operator< T >, + mpl::identity, + mpl::identity + >::type typex; + typex::invoke_delete(t); + } + #endif + explicit heap_allocation(){ + m_p = invoke_new(); + } + ~heap_allocation(){ + if (0 != m_p) + invoke_delete(m_p); + } + T* get() const { + return m_p; + } + + T* release() { + T* p = m_p; + m_p = 0; + return p; + } +private: + T* m_p; +}; + template class pointer_iserializer : public basic_pointer_iserializer { private: + virtual void * heap_allocation() const { + detail::heap_allocation h; + T * t = h.get(); + h.release(); + return t; + } virtual const basic_iserializer & get_basic_serializer() const { return boost::serialization::singleton< iserializer @@ -209,7 +303,7 @@ private: } BOOST_DLLEXPORT virtual void load_object_ptr( basic_iarchive & ar, - void * & x, + void * x, const unsigned int file_version ) const BOOST_USED; protected: @@ -222,121 +316,50 @@ protected: # pragma warning(pop) #endif -// note trick to be sure that operator new is using class specific -// version if such exists. Due to Peter Dimov. -// note: the following fails if T has no default constructor. -// otherwise it would have been ideal -//struct heap_allocator : public T -//{ -// T * invoke(){ -// return ::new(sizeof(T)); -// } -//} - -template -struct heap_allocator -{ - // boost::has_new_operator< T > doesn't work on these compilers - #if DONT_USE_HAS_NEW_OPERATOR - // This doesn't handle operator new overload for class T - static T * invoke(){ - return static_cast(operator new(sizeof(T))); - } - #else - struct has_new_operator { - static T* invoke() { - return static_cast((T::operator new)(sizeof(T))); - } - }; - struct doesnt_have_new_operator { - static T* invoke() { - return static_cast(operator new(sizeof(T))); - } - }; - static T * invoke() { - typedef BOOST_DEDUCED_TYPENAME - mpl::eval_if< - boost::has_new_operator< T >, - mpl::identity, - mpl::identity - >::type typex; - return typex::invoke(); - } - #endif -}; - -// due to Martin Ecker -template -class auto_ptr_with_deleter -{ -public: - explicit auto_ptr_with_deleter(T* p) : - m_p(p) - {} - ~auto_ptr_with_deleter(){ - if (m_p) - boost::serialization::access::destroy(m_p); - } - T* get() const { - return m_p; - } - - T* release() { - T* p = m_p; - m_p = NULL; - return p; - } -private: - T* m_p; -}; - // note: BOOST_DLLEXPORT is so that code for polymorphic class // serialized only through base class won't get optimized out template BOOST_DLLEXPORT void pointer_iserializer::load_object_ptr( basic_iarchive & ar, - void * & x, + void * t, const unsigned int file_version ) const { Archive & ar_impl = boost::serialization::smart_cast_reference(ar); - auto_ptr_with_deleter< T > ap(heap_allocator< T >::invoke()); - if(NULL == ap.get()) - boost::serialization::throw_exception(std::bad_alloc()) ; - - T * t = ap.get(); - x = t; + // note that the above will throw std::bad_alloc if the allocation + // fails so we don't have to address this contingency here. // catch exception during load_construct_data so that we don't // automatically delete the t which is most likely not fully // constructed BOOST_TRY { - // this addresses an obscure situtation that occurs when + // this addresses an obscure situation that occurs when // load_constructor de-serializes something through a pointer. ar.next_object_pointer(t); boost::serialization::load_construct_data_adl( ar_impl, - t, + static_cast(t), file_version ); } BOOST_CATCH(...){ - ap.release(); + // if we get here the load_construct failed. The heap_allocation + // will be automatically deleted so we don't have to do anything + // special here. BOOST_RETHROW; } BOOST_CATCH_END - ar_impl >> boost::serialization::make_nvp(NULL, * t); - ap.release(); + ar_impl >> boost::serialization::make_nvp(NULL, * static_cast(t)); } template pointer_iserializer::pointer_iserializer() : basic_pointer_iserializer( boost::serialization::singleton< - BOOST_DEDUCED_TYPENAME + typename boost::serialization::type_info_implementation< T >::type >::get_const_instance() ) @@ -405,7 +428,7 @@ struct load_non_pointer_type { template static void invoke(Archive & ar, T &t){ - typedef BOOST_DEDUCED_TYPENAME mpl::eval_if< + typedef typename mpl::eval_if< // if its primitive mpl::equal_to< boost::serialization::implementation_level< T >, @@ -413,7 +436,7 @@ struct load_non_pointer_type { >, mpl::identity, // else - BOOST_DEDUCED_TYPENAME mpl::eval_if< + typename mpl::eval_if< // class info / version mpl::greater_equal< boost::serialization::implementation_level< T >, @@ -422,7 +445,7 @@ struct load_non_pointer_type { // do standard load mpl::identity, // else - BOOST_DEDUCED_TYPENAME mpl::eval_if< + typename mpl::eval_if< // no tracking mpl::equal_to< boost::serialization::tracking_level< T >, @@ -466,7 +489,7 @@ struct load_pointer_type { // class pointer. Inhibiting code generation for this // permits abstract base classes to be used - note: exception // virtual serialize functions used for plug-ins - typedef BOOST_DEDUCED_TYPENAME + typedef typename mpl::eval_if< boost::serialization::is_abstract, boost::mpl::identity, @@ -482,18 +505,21 @@ struct load_pointer_type { const T & ) { // tweak the pointer back to the base class - return static_cast( - const_cast( - boost::serialization::void_upcast( - eti, - boost::serialization::singleton< - BOOST_DEDUCED_TYPENAME - boost::serialization::type_info_implementation< T >::type - >::get_const_instance(), - t - ) + void * upcast = const_cast( + boost::serialization::void_upcast( + eti, + boost::serialization::singleton< + typename + boost::serialization::type_info_implementation< T >::type + >::get_const_instance(), + t ) ); + if(NULL == upcast) + boost::serialization::throw_exception( + archive_exception(archive_exception::unregistered_class) + ); + return static_cast(upcast); } template @@ -544,7 +570,7 @@ template struct load_array_type { template static void invoke(Archive &ar, T &t){ - typedef BOOST_DEDUCED_TYPENAME remove_extent< T >::type value_type; + typedef typename remove_extent< T >::type value_type; // convert integers to correct enum to load // determine number of elements in the array. Consider the @@ -576,13 +602,13 @@ inline void load(Archive & ar, T &t){ // handled below. detail::check_const_loading< T >(); typedef - BOOST_DEDUCED_TYPENAME mpl::eval_if, + typename mpl::eval_if, mpl::identity > ,//else - BOOST_DEDUCED_TYPENAME mpl::eval_if, + typename mpl::eval_if, mpl::identity > ,//else - BOOST_DEDUCED_TYPENAME mpl::eval_if, + typename mpl::eval_if, mpl::identity > ,//else mpl::identity > diff --git a/3party/boost/boost/archive/detail/oserializer.hpp b/3party/boost/boost/archive/detail/oserializer.hpp index 7d2694d770..7a7e239376 100644 --- a/3party/boost/boost/archive/detail/oserializer.hpp +++ b/3party/boost/boost/archive/detail/oserializer.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_OSERIALIZER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #pragma inline_depth(511) #pragma inline_recursion(on) @@ -106,7 +106,7 @@ public: explicit BOOST_DLLEXPORT oserializer() : basic_oserializer( boost::serialization::singleton< - BOOST_DEDUCED_TYPENAME + typename boost::serialization::type_info_implementation< T >::type >::get_const_instance() ) @@ -205,7 +205,7 @@ template pointer_oserializer::pointer_oserializer() : basic_pointer_oserializer( boost::serialization::singleton< - BOOST_DEDUCED_TYPENAME + typename boost::serialization::type_info_implementation< T >::type >::get_const_instance() ) @@ -275,7 +275,7 @@ struct save_non_pointer_type { template static void invoke(Archive & ar, const T & t){ typedef - BOOST_DEDUCED_TYPENAME mpl::eval_if< + typename mpl::eval_if< // if its primitive mpl::equal_to< boost::serialization::implementation_level< T >, @@ -283,7 +283,7 @@ struct save_non_pointer_type { >, mpl::identity, // else - BOOST_DEDUCED_TYPENAME mpl::eval_if< + typename mpl::eval_if< // class info / version mpl::greater_equal< boost::serialization::implementation_level< T >, @@ -292,7 +292,7 @@ struct save_non_pointer_type { // do standard save mpl::identity, // else - BOOST_DEDUCED_TYPENAME mpl::eval_if< + typename mpl::eval_if< // no tracking mpl::equal_to< boost::serialization::tracking_level< T >, @@ -342,7 +342,7 @@ struct save_pointer_type { // permits abstract base classes to be used - note: exception // virtual serialize functions used for plug-ins typedef - BOOST_DEDUCED_TYPENAME mpl::eval_if< + typename mpl::eval_if< boost::serialization::is_abstract< T >, mpl::identity, mpl::identity @@ -373,10 +373,10 @@ struct save_pointer_type { Archive &ar, T & t ){ - BOOST_DEDUCED_TYPENAME + typename boost::serialization::type_info_implementation< T >::type const & i = boost::serialization::singleton< - BOOST_DEDUCED_TYPENAME + typename boost::serialization::type_info_implementation< T >::type >::get_const_instance(); @@ -452,7 +452,7 @@ struct save_pointer_type { ){ check_pointer_level< T >(); check_pointer_tracking< T >(); - typedef BOOST_DEDUCED_TYPENAME mpl::eval_if< + typedef typename mpl::eval_if< is_polymorphic< T >, mpl::identity, mpl::identity @@ -490,7 +490,7 @@ struct save_array_type { template static void invoke(Archive &ar, const T &t){ - typedef BOOST_DEDUCED_TYPENAME boost::remove_extent< T >::type value_type; + typedef typename boost::remove_extent< T >::type value_type; save_access::end_preamble(ar); // consider alignment @@ -509,13 +509,13 @@ struct save_array_type template inline void save(Archive & ar, /*const*/ T &t){ typedef - BOOST_DEDUCED_TYPENAME mpl::eval_if, + typename mpl::eval_if, mpl::identity >, //else - BOOST_DEDUCED_TYPENAME mpl::eval_if, + typename mpl::eval_if, mpl::identity >, //else - BOOST_DEDUCED_TYPENAME mpl::eval_if, + typename mpl::eval_if, mpl::identity >, //else mpl::identity > diff --git a/3party/boost/boost/archive/detail/polymorphic_iarchive_route.hpp b/3party/boost/boost/archive/detail/polymorphic_iarchive_route.hpp index d93bb79cb1..a8eb7aa94a 100644 --- a/3party/boost/boost/archive/detail/polymorphic_iarchive_route.hpp +++ b/3party/boost/boost/archive/detail/polymorphic_iarchive_route.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_POLYMORPHIC_IARCHIVE_ROUTE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/polymorphic_oarchive_route.hpp b/3party/boost/boost/archive/detail/polymorphic_oarchive_route.hpp index f1b20f8bf1..9211df2aa7 100644 --- a/3party/boost/boost/archive/detail/polymorphic_oarchive_route.hpp +++ b/3party/boost/boost/archive/detail/polymorphic_oarchive_route.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DETAIL_POLYMORPHIC_OARCHIVE_ROUTE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/detail/register_archive.hpp b/3party/boost/boost/archive/detail/register_archive.hpp index e31ae46c05..81a19b9cf5 100644 --- a/3party/boost/boost/archive/detail/register_archive.hpp +++ b/3party/boost/boost/archive/detail/register_archive.hpp @@ -81,7 +81,7 @@ void instantiate_ptr_serialization(Serializable*, int, adl_tag ) {} namespace boost { namespace archive { namespace detail { \ \ template \ -BOOST_DEDUCED_TYPENAME _ptr_serialization_support::type \ +typename _ptr_serialization_support::type \ instantiate_ptr_serialization( Serializable*, Archive*, adl_tag ); \ \ }}} diff --git a/3party/boost/boost/archive/detail/utf8_codecvt_facet.hpp b/3party/boost/boost/archive/detail/utf8_codecvt_facet.hpp index bd859ffebd..b2430d5a43 100644 --- a/3party/boost/boost/archive/detail/utf8_codecvt_facet.hpp +++ b/3party/boost/boost/archive/detail/utf8_codecvt_facet.hpp @@ -7,15 +7,17 @@ #ifndef BOOST_ARCHIVE_DETAIL_UTF8_CODECVT_FACET_HPP #define BOOST_ARCHIVE_DETAIL_UTF8_CODECVT_FACET_HPP -#define BOOST_UTF8_BEGIN_NAMESPACE \ - namespace boost { namespace archive { namespace detail { -#define BOOST_UTF8_DECL -#define BOOST_UTF8_END_NAMESPACE }}} +#ifdef BOOST_NO_CXX11_HDR_CODECVT + #define BOOST_UTF8_BEGIN_NAMESPACE \ + namespace boost { namespace archive { namespace detail { + #define BOOST_UTF8_DECL + #define BOOST_UTF8_END_NAMESPACE }}} -#include - -#undef BOOST_UTF8_END_NAMESPACE -#undef BOOST_UTF8_DECL -#undef BOOST_UTF8_BEGIN_NAMESPACE + #include + #undef BOOST_UTF8_END_NAMESPACE + #undef BOOST_UTF8_DECL + #undef BOOST_UTF8_BEGIN_NAMESPACE +#endif // BOOST_NO_CXX11_HDR_CODECVT #endif // BOOST_ARCHIVE_DETAIL_UTF8_CODECVT_FACET_HPP + diff --git a/3party/boost/boost/archive/dinkumware.hpp b/3party/boost/boost/archive/dinkumware.hpp index bfa828d53d..90ba6271cd 100644 --- a/3party/boost/boost/archive/dinkumware.hpp +++ b/3party/boost/boost/archive/dinkumware.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_DINKUMWARE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/impl/basic_binary_iarchive.ipp b/3party/boost/boost/archive/impl/basic_binary_iarchive.ipp index 8ea39f7005..b8e7f454c5 100644 --- a/3party/boost/boost/archive/impl/basic_binary_iarchive.ipp +++ b/3party/boost/boost/archive/impl/basic_binary_iarchive.ipp @@ -12,7 +12,7 @@ #include #include -#include // for BOOST_DEDUCED_TYPENAME +#include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::memcpy; @@ -51,6 +51,8 @@ BOOST_ARCHIVE_OR_WARCHIVE_DECL(void) basic_binary_iarchive::init(){ // read signature in an archive version independent manner std::string file_signature; + + #if 0 // commented out since it interfers with derivation try { std::size_t l; this->This()->load(l); @@ -69,6 +71,11 @@ basic_binary_iarchive::init(){ // will cause invalid_signature archive exception to be thrown below file_signature = ""; } + #else + // https://svn.boost.org/trac/boost/ticket/7301 + * this->This() >> file_signature; + #endif + if(file_signature != BOOST_ARCHIVE_SIGNATURE()) boost::serialization::throw_exception( archive_exception(archive_exception::invalid_signature) @@ -113,10 +120,7 @@ basic_binary_iarchive::init(){ #if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205)) this->set_library_version(input_library_version); #else - #if ! BOOST_WORKAROUND(BOOST_MSVC, <= 1200) - detail:: - #endif - basic_iarchive::set_library_version(input_library_version); + detail::basic_iarchive::set_library_version(input_library_version); #endif if(BOOST_ARCHIVE_VERSION() < input_library_version) diff --git a/3party/boost/boost/archive/impl/basic_binary_iprimitive.ipp b/3party/boost/boost/archive/impl/basic_binary_iprimitive.ipp index e0f5c2ea10..9e2340eb2d 100644 --- a/3party/boost/boost/archive/impl/basic_binary_iprimitive.ipp +++ b/3party/boost/boost/archive/impl/basic_binary_iprimitive.ipp @@ -28,6 +28,7 @@ namespace std{ #include #include #include +#include namespace boost { namespace archive { diff --git a/3party/boost/boost/archive/impl/basic_binary_oarchive.ipp b/3party/boost/boost/archive/impl/basic_binary_oarchive.ipp index dec2cd77ab..467fd6fe96 100644 --- a/3party/boost/boost/archive/impl/basic_binary_oarchive.ipp +++ b/3party/boost/boost/archive/impl/basic_binary_oarchive.ipp @@ -12,7 +12,7 @@ #include #include -#include // for BOOST_DEDUCED_TYPENAME +#include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::memcpy; diff --git a/3party/boost/boost/archive/impl/basic_binary_oprimitive.ipp b/3party/boost/boost/archive/impl/basic_binary_oprimitive.ipp index 02b5ffab9e..509decb4e6 100644 --- a/3party/boost/boost/archive/impl/basic_binary_oprimitive.ipp +++ b/3party/boost/boost/archive/impl/basic_binary_oprimitive.ipp @@ -31,6 +31,7 @@ namespace std{ using ::wcslen; } #include #include +#include namespace boost { namespace archive { diff --git a/3party/boost/boost/archive/impl/basic_text_iarchive.ipp b/3party/boost/boost/archive/impl/basic_text_iarchive.ipp index 0a246b76c9..8d364f9b5f 100644 --- a/3party/boost/boost/archive/impl/basic_text_iarchive.ipp +++ b/3party/boost/boost/archive/impl/basic_text_iarchive.ipp @@ -11,7 +11,7 @@ #include #include -#include // for BOOST_DEDUCED_TYPENAME +#include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::memcpy; @@ -62,10 +62,7 @@ basic_text_iarchive::init(void){ #if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205)) this->set_library_version(input_library_version); #else - #if ! BOOST_WORKAROUND(BOOST_MSVC, <= 1200) - detail:: - #endif - basic_iarchive::set_library_version(input_library_version); + detail::basic_iarchive::set_library_version(input_library_version); #endif // extra little .t is to get around borland quirk diff --git a/3party/boost/boost/archive/impl/basic_text_iprimitive.ipp b/3party/boost/boost/archive/impl/basic_text_iprimitive.ipp index 16378b8437..d0da2840d5 100644 --- a/3party/boost/boost/archive/impl/basic_text_iprimitive.ipp +++ b/3party/boost/boost/archive/impl/basic_text_iprimitive.ipp @@ -30,10 +30,10 @@ namespace std{ #include #include -namespace boost { +namespace boost { namespace archive { -namespace { +namespace detail { template bool is_whitespace(CharType c); @@ -48,7 +48,7 @@ namespace { return 0 != std::iswspace(t); } #endif -} +} // detail // translate base64 text into binary and copy into buffer // until buffer is full. @@ -58,7 +58,7 @@ basic_text_iprimitive::load_binary( void *address, std::size_t count ){ - typedef BOOST_DEDUCED_TYPENAME IStream::char_type CharType; + typedef typename IStream::char_type CharType; if(0 == count) return; @@ -73,7 +73,7 @@ basic_text_iprimitive::load_binary( archive_exception(archive_exception::input_stream_error) ); // convert from base64 to binary - typedef BOOST_DEDUCED_TYPENAME + typedef typename iterators::transform_width< iterators::binary_from_base64< iterators::remove_whitespace< @@ -102,11 +102,11 @@ basic_text_iprimitive::load_binary( // skip over any excess input for(;;){ - BOOST_DEDUCED_TYPENAME IStream::int_type r; + typename IStream::int_type r; r = is.get(); if(is.eof()) break; - if(is_whitespace(static_cast(r))) + if(detail::is_whitespace(static_cast(r))) break; } } @@ -128,7 +128,7 @@ basic_text_iprimitive::basic_text_iprimitive( archive_locale.reset( add_facet( std::locale::classic(), - new codecvt_null + new codecvt_null ) ); is.imbue(* archive_locale); diff --git a/3party/boost/boost/archive/impl/basic_text_oarchive.ipp b/3party/boost/boost/archive/impl/basic_text_oarchive.ipp index 34e6995ce5..4170c9718f 100644 --- a/3party/boost/boost/archive/impl/basic_text_oarchive.ipp +++ b/3party/boost/boost/archive/impl/basic_text_oarchive.ipp @@ -11,7 +11,7 @@ #include #include -#include // for BOOST_DEDUCED_TYPENAME +#include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::memcpy; diff --git a/3party/boost/boost/archive/impl/basic_text_oprimitive.ipp b/3party/boost/boost/archive/impl/basic_text_oprimitive.ipp index 7e4315c0da..33ab4a8b65 100644 --- a/3party/boost/boost/archive/impl/basic_text_oprimitive.ipp +++ b/3party/boost/boost/archive/impl/basic_text_oprimitive.ipp @@ -9,6 +9,7 @@ // See http://www.boost.org for updates, documentation, and revision history. #include // NULL +#include // std::copy #include #include @@ -30,7 +31,7 @@ basic_text_oprimitive::save_binary( const void *address, std::size_t count ){ - typedef BOOST_DEDUCED_TYPENAME OStream::char_type CharType; + typedef typename OStream::char_type CharType; if(0 == count) return; @@ -90,7 +91,7 @@ basic_text_oprimitive::basic_text_oprimitive( archive_locale.reset( add_facet( std::locale::classic(), - new codecvt_null + new codecvt_null ) ); os.imbue(* archive_locale); diff --git a/3party/boost/boost/archive/impl/basic_xml_grammar.hpp b/3party/boost/boost/archive/impl/basic_xml_grammar.hpp index 807ed07223..66ca1f0b29 100644 --- a/3party/boost/boost/archive/impl/basic_xml_grammar.hpp +++ b/3party/boost/boost/archive/impl/basic_xml_grammar.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_BASIC_XML_GRAMMAR_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -50,11 +50,6 @@ #include #include -// supress noise -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1200) -# pragma warning (disable : 4786) // too long name, harmless warning -#endif - #include #include diff --git a/3party/boost/boost/archive/impl/xml_iarchive_impl.ipp b/3party/boost/boost/archive/impl/xml_iarchive_impl.ipp index c7cbc7fcdc..dc62eed331 100644 --- a/3party/boost/boost/archive/impl/xml_iarchive_impl.ipp +++ b/3party/boost/boost/archive/impl/xml_iarchive_impl.ipp @@ -98,9 +98,9 @@ xml_iarchive_impl::load(wchar_t * ws){ const char * end = start + s.size(); while(start < end){ wchar_t wc; - int result = std::mbtowc(&wc, start, end - start); - if(0 < result){ - start += result; + int length = std::mbtowc(&wc, start, end - start); + if(0 < length){ + start += length; *ws++ = wc; continue; } diff --git a/3party/boost/boost/archive/impl/xml_oarchive_impl.ipp b/3party/boost/boost/archive/impl/xml_oarchive_impl.ipp index 8ab954f4a3..ab1a2177bc 100644 --- a/3party/boost/boost/archive/impl/xml_oarchive_impl.ipp +++ b/3party/boost/boost/archive/impl/xml_oarchive_impl.ipp @@ -8,7 +8,7 @@ #include #include -#include +#include // std::copy #include #include // strlen diff --git a/3party/boost/boost/archive/impl/xml_wiarchive_impl.ipp b/3party/boost/boost/archive/impl/xml_wiarchive_impl.ipp index 9dde66c878..a4665ad4ce 100644 --- a/3party/boost/boost/archive/impl/xml_wiarchive_impl.ipp +++ b/3party/boost/boost/archive/impl/xml_wiarchive_impl.ipp @@ -1,5 +1,5 @@ /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 -// xml_wiprimitive.cpp: +// xml_wiarchive_impl.ipp: // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Distributed under the Boost Software License, Version 1.0. (See @@ -8,8 +8,6 @@ // See http://www.boost.org for updates, documentation, and revision history. -#include // for BOOST_DEDUCED_TYPENAME - #include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ @@ -21,7 +19,7 @@ namespace std{ #ifndef BOOST_NO_STD_WSTREAMBUF #include -#include +#include // std::copy #include // Dinkumware and RogueWave #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) @@ -34,9 +32,16 @@ namespace std{ #include #include -#include -#include +#ifndef BOOST_NO_CXX11_HDR_CODECVT + #include + namespace boost { namespace archive { namespace detail { + typedef std::codecvt_utf8 utf8_codecvt_facet; + } } } +#else + #include +#endif +#include #include #include @@ -167,7 +172,7 @@ xml_wiarchive_impl::xml_wiarchive_impl( if(0 == (flags & no_codecvt)){ archive_locale.reset( add_facet( - std::locale::classic(), + is_.getloc(), new boost::archive::detail::utf8_codecvt_facet ) ); diff --git a/3party/boost/boost/archive/impl/xml_woarchive_impl.ipp b/3party/boost/boost/archive/impl/xml_woarchive_impl.ipp index 3bf42bdace..6092a91524 100644 --- a/3party/boost/boost/archive/impl/xml_woarchive_impl.ipp +++ b/3party/boost/boost/archive/impl/xml_woarchive_impl.ipp @@ -11,15 +11,14 @@ #include #include -#include +#include // std::copy #include -#include // msvc 6.0 needs this to suppress warnings - // for BOOST_DEDUCED_TYPENAME #include // strlen #include // mbtowc #include // wcslen +#include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::strlen; @@ -39,7 +38,14 @@ namespace std{ #include #include -#include +#ifndef BOOST_NO_CXX11_HDR_CODECVT + #include + namespace boost { namespace archive { namespace detail { + typedef std::codecvt_utf8 utf8_codecvt_facet; + } } } +#else + #include +#endif namespace boost { namespace archive { @@ -128,26 +134,27 @@ xml_woarchive_impl::xml_woarchive_impl( // a) before output is invoked or // b) after flush has been called. This prevents one-to-many // transforms (such as one to many transforms from getting - // mixed up. Unfortunately, STLPort doesn't respect b) above - // so the restoration of the original archive locale done by - // the locale_saver doesn't get processed, - // before the current one is destroyed. - // so the codecvt doesn't get replaced with the orginal - // so closing the stream invokes codecvt::do_unshift - // so it crashes because the corresponding locale that contained - // the codecvt isn't around any more. - // we can hack around this by using a static codecvt that never - // gets destroyed. + // mixed up. if(0 == (flags & no_codecvt)){ boost::archive::detail::utf8_codecvt_facet *pfacet; #if defined(__SGI_STL_PORT) - static boost::archive::detail::utf8_codecvt_facet + // Unfortunately, STLPort doesn't respect b) above + // so the restoration of the original archive locale done by + // the locale_saver doesn't get processed, + // before the current one is destroyed. + // so the codecvt doesn't get replaced with the orginal + // so closing the stream invokes codecvt::do_unshift + // so it crashes because the corresponding locale that contained + // the codecvt isn't around any more. + // we can hack around this by using a static codecvt that never + // gets destroyed. + static boost::archive::detail::utf8_codecvt_facet facet(static_cast(1)); pfacet = & facet; #else pfacet = new boost::archive::detail::utf8_codecvt_facet; #endif - archive_locale.reset(add_facet(std::locale::classic(), pfacet)); + archive_locale.reset(add_facet(os_.getloc(), pfacet)); os.imbue(* archive_locale); } if(0 == (flags & no_header)) diff --git a/3party/boost/boost/archive/iterators/base64_exception.hpp b/3party/boost/boost/archive/iterators/base64_exception.hpp index 81ad28ed81..8f9208b60e 100644 --- a/3party/boost/boost/archive/iterators/base64_exception.hpp +++ b/3party/boost/boost/archive/iterators/base64_exception.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_BASE64_EXCEPTION_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/iterators/base64_from_binary.hpp b/3party/boost/boost/archive/iterators/base64_from_binary.hpp index ecb916a06e..836d93de35 100644 --- a/3party/boost/boost/archive/iterators/base64_from_binary.hpp +++ b/3party/boost/boost/archive/iterators/base64_from_binary.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_BASE64_FROM_BINARY_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -19,7 +19,6 @@ #include #include // size_t -#include // for BOOST_DEDUCED_TYPENAME #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::size_t; @@ -57,7 +56,7 @@ struct from_6_bit { } // namespace detail // note: what we would like to do is -// template +// template // typedef transform_iterator< // from_6_bit, // transform_width @@ -69,10 +68,10 @@ struct from_6_bit { // a templated constructor. This makes it incompatible with the dataflow // ideal. This is also addressed here. -//template +//template template< class Base, - class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value::type + class CharType = typename boost::iterator_value::type > class base64_from_binary : public transform_iterator< @@ -82,7 +81,7 @@ class base64_from_binary : { friend class boost::iterator_core_access; typedef transform_iterator< - BOOST_DEDUCED_TYPENAME detail::from_6_bit, + typename detail::from_6_bit, Base > super_t; diff --git a/3party/boost/boost/archive/iterators/binary_from_base64.hpp b/3party/boost/boost/archive/iterators/binary_from_base64.hpp index 2fe8292f14..9d2c87ebee 100644 --- a/3party/boost/boost/archive/iterators/binary_from_base64.hpp +++ b/3party/boost/boost/archive/iterators/binary_from_base64.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_BINARY_FROM_BASE64_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -18,7 +18,6 @@ #include -#include // for BOOST_DEDUCED_TYPENAME #include #include #include @@ -67,7 +66,7 @@ struct to_6_bit { } // namespace detail // note: what we would like to do is -// template +// template // typedef transform_iterator< // from_6_bit, // transform_width @@ -81,7 +80,7 @@ struct to_6_bit { template< class Base, - class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value::type + class CharType = typename boost::iterator_value::type > class binary_from_base64 : public transform_iterator< diff --git a/3party/boost/boost/archive/iterators/dataflow.hpp b/3party/boost/boost/archive/iterators/dataflow.hpp index 1623b67b73..6f8001d3ce 100644 --- a/3party/boost/boost/archive/iterators/dataflow.hpp +++ b/3party/boost/boost/archive/iterators/dataflow.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_DATAFLOW_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -18,8 +18,6 @@ #include -#include // for BOOST_DEDUCED_TYPENAME - #include #include #include diff --git a/3party/boost/boost/archive/iterators/dataflow_exception.hpp b/3party/boost/boost/archive/iterators/dataflow_exception.hpp index 1d655a1e48..e3e18605b3 100644 --- a/3party/boost/boost/archive/iterators/dataflow_exception.hpp +++ b/3party/boost/boost/archive/iterators/dataflow_exception.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_DATAFLOW_EXCEPTION_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/iterators/escape.hpp b/3party/boost/boost/archive/iterators/escape.hpp index bb527d439a..a1fee91420 100644 --- a/3party/boost/boost/archive/iterators/escape.hpp +++ b/3party/boost/boost/archive/iterators/escape.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_ESCAPE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -19,7 +19,6 @@ #include #include // NULL -#include // for BOOST_DEDUCED_TYPENAME #include #include @@ -35,16 +34,16 @@ class escape : public boost::iterator_adaptor< Derived, Base, - BOOST_DEDUCED_TYPENAME boost::iterator_value::type, + typename boost::iterator_value::type, single_pass_traversal_tag, - BOOST_DEDUCED_TYPENAME boost::iterator_value::type + typename boost::iterator_value::type > { - typedef BOOST_DEDUCED_TYPENAME boost::iterator_value::type base_value_type; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference::type reference_type; + typedef typename boost::iterator_value::type base_value_type; + typedef typename boost::iterator_reference::type reference_type; friend class boost::iterator_core_access; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor< + typedef typename boost::iterator_adaptor< Derived, Base, base_value_type, diff --git a/3party/boost/boost/archive/iterators/head_iterator.hpp b/3party/boost/boost/archive/iterators/head_iterator.hpp index 2fdd475e11..6ad7d6b32b 100644 --- a/3party/boost/boost/archive/iterators/head_iterator.hpp +++ b/3party/boost/boost/archive/iterators/head_iterator.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_HEAD_ITERATOR_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/iterators/insert_linebreaks.hpp b/3party/boost/boost/archive/iterators/insert_linebreaks.hpp index 5f826cacc1..7fbc79f13a 100644 --- a/3party/boost/boost/archive/iterators/insert_linebreaks.hpp +++ b/3party/boost/boost/archive/iterators/insert_linebreaks.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_INSERT_LINEBREAKS_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -18,7 +18,7 @@ #include -#include // for BOOST_DEDUCED_TYPENAME +#include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::memcpy; } #endif @@ -37,7 +37,7 @@ namespace iterators { template< class Base, int N, - class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value::type + class CharType = typename boost::iterator_value::type > class insert_linebreaks : public iterator_adaptor< diff --git a/3party/boost/boost/archive/iterators/istream_iterator.hpp b/3party/boost/boost/archive/iterators/istream_iterator.hpp index 478f112ff8..41aa0be37b 100644 --- a/3party/boost/boost/archive/iterators/istream_iterator.hpp +++ b/3party/boost/boost/archive/iterators/istream_iterator.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_ISTREAM_ITERATOR_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -41,13 +41,13 @@ class istream_iterator : { friend class boost::iterator_core_access; typedef istream_iterator this_t ; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_facade< + typedef typename boost::iterator_facade< istream_iterator, Elem, std::input_iterator_tag, Elem > super_t; - typedef BOOST_DEDUCED_TYPENAME std::basic_istream istream_type; + typedef typename std::basic_istream istream_type; bool equal(const this_t & rhs) const { // note: only works for comparison against end of stream diff --git a/3party/boost/boost/archive/iterators/mb_from_wchar.hpp b/3party/boost/boost/archive/iterators/mb_from_wchar.hpp index d8f8a129f2..04e7c7e9fe 100644 --- a/3party/boost/boost/archive/iterators/mb_from_wchar.hpp +++ b/3party/boost/boost/archive/iterators/mb_from_wchar.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_MB_FROM_WCHAR_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -20,7 +20,7 @@ #include // size_t #include // for wctomb() -#include // for BOOST_DEDUCED_TYPENAME +#include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::size_t; @@ -50,7 +50,7 @@ class mb_from_wchar { friend class boost::iterator_core_access; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor< + typedef typename boost::iterator_adaptor< mb_from_wchar, Base, wchar_t, diff --git a/3party/boost/boost/archive/iterators/ostream_iterator.hpp b/3party/boost/boost/archive/iterators/ostream_iterator.hpp index 7c3203f125..49a9b99034 100644 --- a/3party/boost/boost/archive/iterators/ostream_iterator.hpp +++ b/3party/boost/boost/archive/iterators/ostream_iterator.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_OSTREAM_ITERATOR_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/iterators/remove_whitespace.hpp b/3party/boost/boost/archive/iterators/remove_whitespace.hpp index a01049faf0..4383987051 100644 --- a/3party/boost/boost/archive/iterators/remove_whitespace.hpp +++ b/3party/boost/boost/archive/iterators/remove_whitespace.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_REMOVE_WHITESPACE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -18,17 +18,12 @@ #include -#include // for BOOST_DEDUCED_TYPENAME - #include #include #include #include -//#include -//#if ! BOOST_WORKAROUND(BOOST_MSVC, <=1300) - // here is the default standard implementation of the functor used // by the filter iterator to remove spaces. Unfortunately usage // of this implementation in combination with spirit trips a bug @@ -53,8 +48,6 @@ namespace std{ using ::isspace; } #undef iswspace #endif -//#endif // BOOST_WORKAROUND - namespace { // anonymous template @@ -100,14 +93,14 @@ class filter_iterator > { friend class boost::iterator_core_access; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor< + typedef typename boost::iterator_adaptor< filter_iterator, Base, use_default, single_pass_traversal_tag > super_t; typedef filter_iterator this_t; - typedef BOOST_DEDUCED_TYPENAME super_t::reference reference_type; + typedef typename super_t::reference reference_type; reference_type dereference_impl(){ if(! m_full){ @@ -142,8 +135,8 @@ template class remove_whitespace : public filter_iterator< remove_whitespace_predicate< - BOOST_DEDUCED_TYPENAME boost::iterator_value::type - //BOOST_DEDUCED_TYPENAME Base::value_type + typename boost::iterator_value::type + //typename Base::value_type >, Base > @@ -151,8 +144,8 @@ class remove_whitespace : friend class boost::iterator_core_access; typedef filter_iterator< remove_whitespace_predicate< - BOOST_DEDUCED_TYPENAME boost::iterator_value::type - //BOOST_DEDUCED_TYPENAME Base::value_type + typename boost::iterator_value::type + //typename Base::value_type >, Base > super_t; diff --git a/3party/boost/boost/archive/iterators/transform_width.hpp b/3party/boost/boost/archive/iterators/transform_width.hpp index 5a5c7b757a..4e11953bc5 100644 --- a/3party/boost/boost/archive/iterators/transform_width.hpp +++ b/3party/boost/boost/archive/iterators/transform_width.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_TRANSFORM_WIDTH_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -24,12 +24,13 @@ // character and 8 bit bytes. Lowest common multiple is 24 => 4 6 bit characters // or 3 8 bit characters -#include // for BOOST_DEDUCED_TYPENAME & PTFO #include #include #include +#include // std::min + namespace boost { namespace archive { namespace iterators { @@ -41,7 +42,7 @@ template< class Base, int BitsOut, int BitsIn, - class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value::type // output character + class CharType = typename boost::iterator_value::type // output character > class transform_width : public boost::iterator_adaptor< @@ -53,7 +54,7 @@ class transform_width : > { friend class boost::iterator_core_access; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor< + typedef typename boost::iterator_adaptor< transform_width, Base, CharType, @@ -62,7 +63,7 @@ class transform_width : > super_t; typedef transform_width this_t; - typedef BOOST_DEDUCED_TYPENAME iterator_value::type base_value_type; + typedef typename iterator_value::type base_value_type; void fill(); @@ -112,6 +113,10 @@ public: transform_width(BOOST_PFTO_WRAPPER(T) start) : super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast< T >(start)))), m_buffer_out_full(false), + // To disable GCC warning, but not truly necessary + //(m_buffer_in will be initialized later before being + //used because m_remaining_bits == 0) + m_buffer_in(0), m_remaining_bits(0), m_end_of_sequence(false) {} @@ -119,8 +124,8 @@ public: transform_width(const transform_width & rhs) : super_t(rhs.base_reference()), m_buffer_out_full(rhs.m_buffer_out_full), - m_remaining_bits(rhs.m_remaining_bits), m_buffer_in(rhs.m_buffer_in), + m_remaining_bits(rhs.m_remaining_bits), m_end_of_sequence(false) {} }; diff --git a/3party/boost/boost/archive/iterators/unescape.hpp b/3party/boost/boost/archive/iterators/unescape.hpp index 9cbd3161c6..abf6240608 100644 --- a/3party/boost/boost/archive/iterators/unescape.hpp +++ b/3party/boost/boost/archive/iterators/unescape.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_UNESCAPE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -18,9 +18,7 @@ #include -#include // for BOOST_DEDUCED_TYPENAME #include -//#include #include namespace boost { @@ -35,24 +33,24 @@ class unescape : public boost::iterator_adaptor< unescape, Base, - BOOST_DEDUCED_TYPENAME pointee::type, + typename pointee::type, single_pass_traversal_tag, - BOOST_DEDUCED_TYPENAME pointee::type + typename pointee::type > { friend class boost::iterator_core_access; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor< + typedef typename boost::iterator_adaptor< unescape, Base, - BOOST_DEDUCED_TYPENAME pointee::type, + typename pointee::type, single_pass_traversal_tag, - BOOST_DEDUCED_TYPENAME pointee::type + typename pointee::type > super_t; typedef unescape this_t; public: - typedef BOOST_DEDUCED_TYPENAME this_t::value_type value_type; - typedef BOOST_DEDUCED_TYPENAME this_t::reference reference; + typedef typename this_t::value_type value_type; + typedef typename this_t::reference reference; private: value_type dereference_impl() { if(! m_full){ diff --git a/3party/boost/boost/archive/iterators/wchar_from_mb.hpp b/3party/boost/boost/archive/iterators/wchar_from_mb.hpp index 4da81215ff..ab81f17b68 100644 --- a/3party/boost/boost/archive/iterators/wchar_from_mb.hpp +++ b/3party/boost/boost/archive/iterators/wchar_from_mb.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_WCHAR_FROM_MB_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -21,7 +21,7 @@ #include // size_t #include // mblen -#include // for BOOST_DEDUCED_TYPENAME +#include #if defined(BOOST_NO_STDC_NAMESPACE) namespace std{ using ::mblen; @@ -53,7 +53,7 @@ class wchar_from_mb > { friend class boost::iterator_core_access; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor< + typedef typename boost::iterator_adaptor< wchar_from_mb, Base, wchar_t, diff --git a/3party/boost/boost/archive/iterators/xml_escape.hpp b/3party/boost/boost/archive/iterators/xml_escape.hpp index eadb96e8bf..a5d2c5120f 100644 --- a/3party/boost/boost/archive/iterators/xml_escape.hpp +++ b/3party/boost/boost/archive/iterators/xml_escape.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_XML_ESCAPE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -17,10 +17,7 @@ // See http://www.boost.org for updates, documentation, and revision history. #include - -#include // for BOOST_DEDUCED_TYPENAME #include - #include namespace boost { diff --git a/3party/boost/boost/archive/iterators/xml_unescape.hpp b/3party/boost/boost/archive/iterators/xml_unescape.hpp index 3295adb393..69438ed044 100644 --- a/3party/boost/boost/archive/iterators/xml_unescape.hpp +++ b/3party/boost/boost/archive/iterators/xml_unescape.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_XML_UNESCAPE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -18,8 +18,6 @@ #include -#include // for BOOST_DEDUCED_TYPENAME - #include #include @@ -39,7 +37,7 @@ class xml_unescape friend class boost::iterator_core_access; typedef xml_unescape this_t; typedef unescape super_t; - typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference reference_type; + typedef typename boost::iterator_reference reference_type; reference_type dereference() const { return unescape, Base>::dereference(); @@ -49,7 +47,7 @@ public: #if defined(BOOST_MSVC) typedef int value_type; #else - typedef BOOST_DEDUCED_TYPENAME this_t::value_type value_type; + typedef typename this_t::value_type value_type; #endif void drain_residue(const char *literal); @@ -83,7 +81,7 @@ void xml_unescape::drain_residue(const char * literal){ // iterator refenence which would make subsequent iterator comparisons // incorrect and thereby break the composiblity of iterators. template -BOOST_DEDUCED_TYPENAME xml_unescape::value_type +typename xml_unescape::value_type //int xml_unescape::drain(){ value_type retval = * this->base_reference(); diff --git a/3party/boost/boost/archive/iterators/xml_unescape_exception.hpp b/3party/boost/boost/archive/iterators/xml_unescape_exception.hpp index 259d2ba26b..71a64378c2 100644 --- a/3party/boost/boost/archive/iterators/xml_unescape_exception.hpp +++ b/3party/boost/boost/archive/iterators/xml_unescape_exception.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_ITERATORS_XML_UNESCAPE_EXCEPTION_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/polymorphic_binary_iarchive.hpp b/3party/boost/boost/archive/polymorphic_binary_iarchive.hpp index ce7e3b0609..4a898a8ad1 100644 --- a/3party/boost/boost/archive/polymorphic_binary_iarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_binary_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_BINARY_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -29,11 +29,11 @@ namespace boost { namespace archive { class polymorphic_binary_iarchive : - public detail::polymorphic_iarchive_route + public detail::polymorphic_iarchive_route { public: polymorphic_binary_iarchive(std::istream & is, unsigned int flags = 0) : - detail::polymorphic_iarchive_route(is, flags) + detail::polymorphic_iarchive_route(is, flags) {} ~polymorphic_binary_iarchive(){} }; diff --git a/3party/boost/boost/archive/polymorphic_binary_oarchive.hpp b/3party/boost/boost/archive/polymorphic_binary_oarchive.hpp index a66ebddca6..931b243feb 100644 --- a/3party/boost/boost/archive/polymorphic_binary_oarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_binary_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_BINARY_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -25,7 +25,7 @@ namespace archive { typedef detail::polymorphic_oarchive_route< binary_oarchive_impl< - naked_binary_oarchive, + binary_oarchive, std::ostream::char_type, std::ostream::traits_type > diff --git a/3party/boost/boost/archive/polymorphic_iarchive.hpp b/3party/boost/boost/archive/polymorphic_iarchive.hpp index 2f76cf267a..50488a331f 100644 --- a/3party/boost/boost/archive/polymorphic_iarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -39,8 +39,6 @@ namespace std{ #include // must be the last header namespace boost { -template -class shared_ptr; namespace serialization { class extended_type_info; } // namespace serialization @@ -155,18 +153,11 @@ public: #include // pops abi_suffix.hpp pragmas -// note special treatment of shared_ptr. This type needs a special -// structure associated with every archive. We created a "mix-in" -// class to provide this functionality. Since shared_ptr holds a -// special esteem in the boost library - we included it here by default. -#include - -namespace boost { +namespace boost { namespace archive { class polymorphic_iarchive : - public polymorphic_iarchive_impl, - public detail::shared_ptr_helper + public polymorphic_iarchive_impl { public: virtual ~polymorphic_iarchive(){}; diff --git a/3party/boost/boost/archive/polymorphic_oarchive.hpp b/3party/boost/boost/archive/polymorphic_oarchive.hpp index 420029b5b6..1eb9e0b419 100644 --- a/3party/boost/boost/archive/polymorphic_oarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -38,8 +38,6 @@ namespace std{ #include // must be the last header namespace boost { -template -class shared_ptr; namespace serialization { class extended_type_info; } // namespace serialization diff --git a/3party/boost/boost/archive/polymorphic_text_iarchive.hpp b/3party/boost/boost/archive/polymorphic_text_iarchive.hpp index 931a9287c7..7bef292786 100644 --- a/3party/boost/boost/archive/polymorphic_text_iarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_text_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_TEXT_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -29,11 +29,11 @@ namespace boost { namespace archive { class polymorphic_text_iarchive : - public detail::polymorphic_iarchive_route + public detail::polymorphic_iarchive_route { public: polymorphic_text_iarchive(std::istream & is, unsigned int flags = 0) : - detail::polymorphic_iarchive_route(is, flags) + detail::polymorphic_iarchive_route(is, flags) {} ~polymorphic_text_iarchive(){} }; diff --git a/3party/boost/boost/archive/polymorphic_text_oarchive.hpp b/3party/boost/boost/archive/polymorphic_text_oarchive.hpp index 82b48924f9..457aad9fd7 100644 --- a/3party/boost/boost/archive/polymorphic_text_oarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_text_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_TEXT_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -24,7 +24,7 @@ namespace boost { namespace archive { typedef detail::polymorphic_oarchive_route< - text_oarchive_impl + text_oarchive_impl > polymorphic_text_oarchive; } // namespace archive diff --git a/3party/boost/boost/archive/polymorphic_text_wiarchive.hpp b/3party/boost/boost/archive/polymorphic_text_wiarchive.hpp index 4df3d47351..8466f05d6a 100644 --- a/3party/boost/boost/archive/polymorphic_text_wiarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_text_wiarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_TEXT_WIARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -33,11 +33,11 @@ namespace boost { namespace archive { class polymorphic_text_wiarchive : - public detail::polymorphic_iarchive_route + public detail::polymorphic_iarchive_route { public: polymorphic_text_wiarchive(std::wistream & is, unsigned int flags = 0) : - detail::polymorphic_iarchive_route(is, flags) + detail::polymorphic_iarchive_route(is, flags) {} ~polymorphic_text_wiarchive(){} }; diff --git a/3party/boost/boost/archive/polymorphic_text_woarchive.hpp b/3party/boost/boost/archive/polymorphic_text_woarchive.hpp index bc44947416..295625d1bc 100644 --- a/3party/boost/boost/archive/polymorphic_text_woarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_text_woarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_TEXT_WOARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -28,7 +28,7 @@ namespace boost { namespace archive { typedef detail::polymorphic_oarchive_route< - text_woarchive_impl + text_woarchive_impl > polymorphic_text_woarchive; } // namespace archive diff --git a/3party/boost/boost/archive/polymorphic_xml_iarchive.hpp b/3party/boost/boost/archive/polymorphic_xml_iarchive.hpp index feb0b99bc2..4dc3f894b3 100644 --- a/3party/boost/boost/archive/polymorphic_xml_iarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_xml_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_XML_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -29,11 +29,11 @@ namespace boost { namespace archive { class polymorphic_xml_iarchive : - public detail::polymorphic_iarchive_route + public detail::polymorphic_iarchive_route { public: polymorphic_xml_iarchive(std::istream & is, unsigned int flags = 0) : - detail::polymorphic_iarchive_route(is, flags) + detail::polymorphic_iarchive_route(is, flags) {} ~polymorphic_xml_iarchive(){} }; diff --git a/3party/boost/boost/archive/polymorphic_xml_oarchive.hpp b/3party/boost/boost/archive/polymorphic_xml_oarchive.hpp index 8576694288..514f9e530a 100644 --- a/3party/boost/boost/archive/polymorphic_xml_oarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_xml_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_XML_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -24,7 +24,7 @@ namespace boost { namespace archive { typedef detail::polymorphic_oarchive_route< - xml_oarchive_impl + xml_oarchive_impl > polymorphic_xml_oarchive; } // namespace archive diff --git a/3party/boost/boost/archive/polymorphic_xml_wiarchive.hpp b/3party/boost/boost/archive/polymorphic_xml_wiarchive.hpp index b3f7db2582..d4ab731267 100644 --- a/3party/boost/boost/archive/polymorphic_xml_wiarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_xml_wiarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_XML_WIARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -28,11 +28,11 @@ namespace boost { namespace archive { class polymorphic_xml_wiarchive : - public detail::polymorphic_iarchive_route + public detail::polymorphic_iarchive_route { public: polymorphic_xml_wiarchive(std::wistream & is, unsigned int flags = 0) : - detail::polymorphic_iarchive_route(is, flags) + detail::polymorphic_iarchive_route(is, flags) {} ~polymorphic_xml_wiarchive(){} }; diff --git a/3party/boost/boost/archive/polymorphic_xml_woarchive.hpp b/3party/boost/boost/archive/polymorphic_xml_woarchive.hpp index 8884b43c75..dd8963fbb1 100644 --- a/3party/boost/boost/archive/polymorphic_xml_woarchive.hpp +++ b/3party/boost/boost/archive/polymorphic_xml_woarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_POLYMORPHIC_XML_WOARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -28,7 +28,7 @@ namespace boost { namespace archive { typedef detail::polymorphic_oarchive_route< - xml_woarchive_impl + xml_woarchive_impl > polymorphic_xml_woarchive; } // namespace archive diff --git a/3party/boost/boost/archive/shared_ptr_helper.hpp b/3party/boost/boost/archive/shared_ptr_helper.hpp index 39e6eb82c8..3df4605551 100644 --- a/3party/boost/boost/archive/shared_ptr_helper.hpp +++ b/3party/boost/boost/archive/shared_ptr_helper.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_SHARED_PTR_HELPER_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/text_iarchive.hpp b/3party/boost/boost/archive/text_iarchive.hpp index 298928b3e7..1fd0f608d3 100644 --- a/3party/boost/boost/archive/text_iarchive.hpp +++ b/3party/boost/boost/archive/text_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_TEXT_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -35,6 +35,10 @@ namespace boost { namespace archive { +namespace detail { + template class interface_iarchive; +} // namespace detail + template class text_iarchive_impl : public basic_text_iprimitive, @@ -43,10 +47,16 @@ class text_iarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_text_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class load_access; + #endif #endif template void load(T & t){ @@ -92,22 +102,6 @@ protected: ~text_iarchive_impl(){}; }; -// do not derive from the classes below. If you want to extend this functionality -// via inhertance, derived from text_iarchive_impl instead. This will -// preserve correct static polymorphism. - -// same as text_iarchive below - without the shared_ptr_helper -class naked_text_iarchive : - public text_iarchive_impl -{ -public: - naked_text_iarchive(std::istream & is_, unsigned int flags = 0) : - // note: added _ to suppress useless gcc warning - text_iarchive_impl(is_, flags) - {} - ~naked_text_iarchive(){} -}; - } // namespace archive } // namespace boost @@ -117,12 +111,6 @@ public: #include // pops abi_suffix.hpp pragmas -// note special treatment of shared_ptr. This type needs a special -// structure associated with every archive. We created a "mix-in" -// class to provide this functionality. Since shared_ptr holds a -// special esteem in the boost library - we included it here by default. -#include - #ifdef BOOST_MSVC # pragma warning(push) # pragma warning(disable : 4511 4512) @@ -132,9 +120,7 @@ namespace boost { namespace archive { class text_iarchive : - public text_iarchive_impl, - public detail::shared_ptr_helper -{ + public text_iarchive_impl{ public: text_iarchive(std::istream & is_, unsigned int flags = 0) : // note: added _ to suppress useless gcc warning diff --git a/3party/boost/boost/archive/text_oarchive.hpp b/3party/boost/boost/archive/text_oarchive.hpp index 2100d539ef..9fd63a9b97 100644 --- a/3party/boost/boost/archive/text_oarchive.hpp +++ b/3party/boost/boost/archive/text_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_TEXT_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -42,6 +42,10 @@ namespace std{ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + template class text_oarchive_impl : /* protected ? */ public basic_text_oprimitive, @@ -50,10 +54,18 @@ class text_oarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_text_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_oarchive; + friend basic_text_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_text_oarchive; + friend class save_access; + #endif #endif template void save(const T & t){ @@ -102,8 +114,6 @@ public: ~text_oarchive(){} }; -typedef text_oarchive naked_text_oarchive; - } // namespace archive } // namespace boost diff --git a/3party/boost/boost/archive/text_wiarchive.hpp b/3party/boost/boost/archive/text_wiarchive.hpp index 7451f3a620..5105d351ca 100644 --- a/3party/boost/boost/archive/text_wiarchive.hpp +++ b/3party/boost/boost/archive/text_wiarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_TEXT_WIARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -39,6 +39,10 @@ namespace boost { namespace archive { +namespace detail { + template class interface_iarchive; +} // namespace detail + template class text_wiarchive_impl : public basic_text_iprimitive, @@ -47,10 +51,16 @@ class text_wiarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_text_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class load_access; + #endif #endif template void load(T & t){ @@ -89,21 +99,6 @@ protected: ~text_wiarchive_impl(){}; }; -// do not derive from the classes below. If you want to extend this functionality -// via inhertance, derived from text_iarchive_impl instead. This will -// preserve correct static polymorphism. - -// same as text_wiarchive below - without the shared_ptr_helper -class naked_text_wiarchive : - public text_wiarchive_impl -{ -public: - naked_text_wiarchive(std::wistream & is, unsigned int flags = 0) : - text_wiarchive_impl(is, flags) - {} - ~naked_text_wiarchive(){} -}; - } // namespace archive } // namespace boost @@ -113,12 +108,6 @@ public: #include // pops abi_suffix.hpp pragmas -// note special treatment of shared_ptr. This type needs a special -// structure associated with every archive. We created a "mix-in" -// class to provide this functionality. Since shared_ptr holds a -// special esteem in the boost library - we included it here by default. -#include - #ifdef BOOST_MSVC # pragma warning(push) # pragma warning(disable : 4511 4512) @@ -128,9 +117,7 @@ namespace boost { namespace archive { class text_wiarchive : - public text_wiarchive_impl, - public detail::shared_ptr_helper -{ + public text_wiarchive_impl{ public: text_wiarchive(std::wistream & is, unsigned int flags = 0) : text_wiarchive_impl(is, flags) diff --git a/3party/boost/boost/archive/text_woarchive.hpp b/3party/boost/boost/archive/text_woarchive.hpp index 7ed0c820b8..2f75204d2f 100644 --- a/3party/boost/boost/archive/text_woarchive.hpp +++ b/3party/boost/boost/archive/text_woarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_TEXT_WOARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -47,6 +47,10 @@ namespace std{ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + template class text_woarchive_impl : public basic_text_oprimitive, @@ -55,10 +59,18 @@ class text_woarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_text_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_oarchive; + friend basic_text_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_text_oarchive; + friend class save_access; + #endif #endif template void save(const T & t){ @@ -127,8 +139,6 @@ public: ~text_woarchive(){} }; -typedef text_woarchive naked_text_woarchive; - } // namespace archive } // namespace boost diff --git a/3party/boost/boost/archive/tmpdir.hpp b/3party/boost/boost/archive/tmpdir.hpp index 9e6ada4cea..400d23b9f6 100644 --- a/3party/boost/boost/archive/tmpdir.hpp +++ b/3party/boost/boost/archive/tmpdir.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_TMPDIR_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/wcslen.hpp b/3party/boost/boost/archive/wcslen.hpp index 5c14acfff3..2a3d6351d4 100644 --- a/3party/boost/boost/archive/wcslen.hpp +++ b/3party/boost/boost/archive/wcslen.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_WCSLEN_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/xml_archive_exception.hpp b/3party/boost/boost/archive/xml_archive_exception.hpp index 48e6cb3299..622cafea41 100644 --- a/3party/boost/boost/archive/xml_archive_exception.hpp +++ b/3party/boost/boost/archive/xml_archive_exception.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_XML_ARCHIVE_EXCEPTION_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/archive/xml_iarchive.hpp b/3party/boost/boost/archive/xml_iarchive.hpp index be6cfe494e..ba50d7cc48 100644 --- a/3party/boost/boost/archive/xml_iarchive.hpp +++ b/3party/boost/boost/archive/xml_iarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_XML_IARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -35,6 +35,10 @@ namespace boost { namespace archive { +namespace detail { + template class interface_iarchive; +} // namespace detail + template class basic_xml_grammar; typedef basic_xml_grammar xml_grammar; @@ -47,10 +51,18 @@ class xml_iarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_xml_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_iarchive; + friend basic_xml_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class basic_xml_iarchive; + friend class load_access; + #endif #endif // instances of micro xml parser to parse start preambles // scoped_ptr doesn't play nice with borland - so use a naked pointer @@ -102,21 +114,6 @@ protected: ~xml_iarchive_impl(); }; -// do not derive from the classes below. If you want to extend this functionality -// via inhertance, derived from text_iarchive_impl instead. This will -// preserve correct static polymorphism. - -// same as xml_iarchive below - without the shared_ptr_helper -class naked_xml_iarchive : - public xml_iarchive_impl -{ -public: - naked_xml_iarchive(std::istream & is, unsigned int flags = 0) : - xml_iarchive_impl(is, flags) - {} - ~naked_xml_iarchive(){} -}; - } // namespace archive } // namespace boost @@ -125,13 +122,6 @@ public: #endif #include // pops abi_suffix.hpp pragmas - -// note special treatment of shared_ptr. This type needs a special -// structure associated with every archive. We created a "mix-in" -// class to provide this functionality. Since shared_ptr holds a -// special esteem in the boost library - we included it here by default. -#include - #ifdef BOOST_MSVC # pragma warning(push) # pragma warning(disable : 4511 4512) @@ -141,9 +131,7 @@ namespace boost { namespace archive { class xml_iarchive : - public xml_iarchive_impl, - public detail::shared_ptr_helper -{ + public xml_iarchive_impl{ public: xml_iarchive(std::istream & is, unsigned int flags = 0) : xml_iarchive_impl(is, flags) diff --git a/3party/boost/boost/archive/xml_oarchive.hpp b/3party/boost/boost/archive/xml_oarchive.hpp index 167ba09370..2ac4ae1d69 100644 --- a/3party/boost/boost/archive/xml_oarchive.hpp +++ b/3party/boost/boost/archive/xml_oarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_XML_OARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -42,6 +42,10 @@ namespace std{ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + template class xml_oarchive_impl : public basic_text_oprimitive, @@ -50,10 +54,18 @@ class xml_oarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_xml_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_oarchive; + friend basic_xml_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_xml_oarchive; + friend class save_access; + #endif #endif //void end_preamble(){ // basic_xml_oarchive::end_preamble(); @@ -116,8 +128,6 @@ public: ~xml_oarchive(){} }; -typedef xml_oarchive naked_xml_oarchive; - } // namespace archive } // namespace boost diff --git a/3party/boost/boost/archive/xml_wiarchive.hpp b/3party/boost/boost/archive/xml_wiarchive.hpp index 59ebbb5e7c..31aff88ad0 100644 --- a/3party/boost/boost/archive/xml_wiarchive.hpp +++ b/3party/boost/boost/archive/xml_wiarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_XML_WIARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -40,6 +40,10 @@ namespace boost { namespace archive { +namespace detail { + template class interface_iarchive; +} // namespace detail + template class basic_xml_grammar; typedef basic_xml_grammar xml_wgrammar; @@ -52,10 +56,18 @@ class xml_wiarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_xml_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_iarchive; + friend basic_xml_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class basic_xml_iarchive; + friend class load_access; + #endif #endif // instances of micro xml parser to parse start preambles // scoped_ptr doesn't play nice with borland - so use a naked pointer @@ -107,21 +119,6 @@ protected: ~xml_wiarchive_impl(); }; -// do not derive from the classes below. If you want to extend this functionality -// via inhertance, derived from xml_wiarchive_impl instead. This will -// preserve correct static polymorphism. - -// same as xml_wiarchive below - without the shared_ptr_helper -class naked_xml_wiarchive : - public xml_wiarchive_impl -{ -public: - naked_xml_wiarchive(std::wistream & is, unsigned int flags = 0) : - xml_wiarchive_impl(is, flags) - {} - ~naked_xml_wiarchive(){} -}; - } // namespace archive } // namespace boost @@ -131,12 +128,6 @@ public: #include // pops abi_suffix.hpp pragmas -// note special treatment of shared_ptr. This type needs a special -// structure associated with every archive. We created a "mix-in" -// class to provide this functionality. Since shared_ptr holds a -// special esteem in the boost library - we included it here by default. -#include - #ifdef BOOST_MSVC # pragma warning(push) # pragma warning(disable : 4511 4512) @@ -146,9 +137,7 @@ namespace boost { namespace archive { class xml_wiarchive : - public xml_wiarchive_impl, - public detail::shared_ptr_helper -{ + public xml_wiarchive_impl{ public: xml_wiarchive(std::wistream & is, unsigned int flags = 0) : xml_wiarchive_impl(is, flags) diff --git a/3party/boost/boost/archive/xml_woarchive.hpp b/3party/boost/boost/archive/xml_woarchive.hpp index 08c0fdc6a4..7fcaeb9634 100644 --- a/3party/boost/boost/archive/xml_woarchive.hpp +++ b/3party/boost/boost/archive/xml_woarchive.hpp @@ -2,7 +2,7 @@ #define BOOST_ARCHIVE_XML_WOARCHIVE_HPP // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -46,6 +46,10 @@ namespace std{ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + template class xml_woarchive_impl : public basic_text_oprimitive, @@ -54,11 +58,20 @@ class xml_woarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_xml_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, < 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 7.1 + friend detail::interface_oarchive; + friend basic_xml_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_xml_oarchive; + friend class save_access; + #endif #endif + //void end_preamble(){ // basic_xml_oarchive::end_preamble(); //} @@ -122,8 +135,6 @@ public: ~xml_woarchive(){} }; -typedef xml_woarchive naked_xml_woarchive; - } // namespace archive } // namespace boost diff --git a/3party/boost/boost/asio.hpp b/3party/boost/boost/asio.hpp index a810967cc3..871fcbe41f 100644 --- a/3party/boost/boost/asio.hpp +++ b/3party/boost/boost/asio.hpp @@ -2,7 +2,7 @@ // asio.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/async_result.hpp b/3party/boost/boost/asio/async_result.hpp index 845fb02b2b..7a24ce5334 100644 --- a/3party/boost/boost/asio/async_result.hpp +++ b/3party/boost/boost/asio/async_result.hpp @@ -2,7 +2,7 @@ // async_result.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_datagram_socket.hpp b/3party/boost/boost/asio/basic_datagram_socket.hpp index a9b2211e70..1be3c78235 100644 --- a/3party/boost/boost/asio/basic_datagram_socket.hpp +++ b/3party/boost/boost/asio/basic_datagram_socket.hpp @@ -2,7 +2,7 @@ // basic_datagram_socket.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -300,9 +300,8 @@ public: /// Start an asynchronous send on a connected socket. /** - * This function is used to send data on the datagram socket. The function - * call will block until the data has been sent successfully or an error - * occurs. + * This function is used to asynchronously send data on the datagram socket. + * The function call always returns immediately. * * @param buffers One or more data buffers to be sent on the socket. Although * the buffers object may be copied as necessary, ownership of the underlying @@ -350,9 +349,8 @@ public: /// Start an asynchronous send on a connected socket. /** - * This function is used to send data on the datagram socket. The function - * call will block until the data has been sent successfully or an error - * occurs. + * This function is used to asynchronously send data on the datagram socket. + * The function call always returns immediately. * * @param buffers One or more data buffers to be sent on the socket. Although * the buffers object may be copied as necessary, ownership of the underlying @@ -878,7 +876,7 @@ public: * To receive into a single data buffer use the @ref buffer function as * follows: * @code socket.async_receive_from( - * boost::asio::buffer(data, size), 0, sender_endpoint, handler); @endcode + * boost::asio::buffer(data, size), sender_endpoint, handler); @endcode * See the @ref buffer documentation for information on receiving into * multiple buffers in one go, and how to use it with arrays, boost::array or * std::vector. diff --git a/3party/boost/boost/asio/basic_deadline_timer.hpp b/3party/boost/boost/asio/basic_deadline_timer.hpp index a5acea7e2c..767e85990f 100644 --- a/3party/boost/boost/asio/basic_deadline_timer.hpp +++ b/3party/boost/boost/asio/basic_deadline_timer.hpp @@ -2,7 +2,7 @@ // basic_deadline_timer.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_io_object.hpp b/3party/boost/boost/asio/basic_io_object.hpp index 89e2bed731..784fcc9bed 100644 --- a/3party/boost/boost/asio/basic_io_object.hpp +++ b/3party/boost/boost/asio/basic_io_object.hpp @@ -2,7 +2,7 @@ // basic_io_object.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_raw_socket.hpp b/3party/boost/boost/asio/basic_raw_socket.hpp index 9b9f45b3a8..4f3c7c24c5 100644 --- a/3party/boost/boost/asio/basic_raw_socket.hpp +++ b/3party/boost/boost/asio/basic_raw_socket.hpp @@ -2,7 +2,7 @@ // basic_raw_socket.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_seq_packet_socket.hpp b/3party/boost/boost/asio/basic_seq_packet_socket.hpp index aee3b6853c..630296c38e 100644 --- a/3party/boost/boost/asio/basic_seq_packet_socket.hpp +++ b/3party/boost/boost/asio/basic_seq_packet_socket.hpp @@ -2,7 +2,7 @@ // basic_seq_packet_socket.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_serial_port.hpp b/3party/boost/boost/asio/basic_serial_port.hpp index 4d6f23f226..dda2c88ca1 100644 --- a/3party/boost/boost/asio/basic_serial_port.hpp +++ b/3party/boost/boost/asio/basic_serial_port.hpp @@ -2,7 +2,7 @@ // basic_serial_port.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/basic_signal_set.hpp b/3party/boost/boost/asio/basic_signal_set.hpp index eb270b85ec..d7f60fa8ff 100644 --- a/3party/boost/boost/asio/basic_signal_set.hpp +++ b/3party/boost/boost/asio/basic_signal_set.hpp @@ -2,7 +2,7 @@ // basic_signal_set.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_socket.hpp b/3party/boost/boost/asio/basic_socket.hpp index f3e68b9989..a28f365e58 100644 --- a/3party/boost/boost/asio/basic_socket.hpp +++ b/3party/boost/boost/asio/basic_socket.hpp @@ -2,7 +2,7 @@ // basic_socket.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_socket_acceptor.hpp b/3party/boost/boost/asio/basic_socket_acceptor.hpp index 12528b8d9a..ed019a0d97 100644 --- a/3party/boost/boost/asio/basic_socket_acceptor.hpp +++ b/3party/boost/boost/asio/basic_socket_acceptor.hpp @@ -2,7 +2,7 @@ // basic_socket_acceptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_socket_iostream.hpp b/3party/boost/boost/asio/basic_socket_iostream.hpp index 6135ea6ab5..221de7fcf7 100644 --- a/3party/boost/boost/asio/basic_socket_iostream.hpp +++ b/3party/boost/boost/asio/basic_socket_iostream.hpp @@ -2,7 +2,7 @@ // basic_socket_iostream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -26,14 +26,7 @@ #if !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) -# include -# include -# include -# include - -# if !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY) -# define BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY 5 -# endif // !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY) +# include // A macro that should expand to: // template @@ -48,16 +41,16 @@ // } // This macro should only persist within this file. -# define BOOST_ASIO_PRIVATE_CTR_DEF(z, n, data) \ - template \ - explicit basic_socket_iostream(BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \ +# define BOOST_ASIO_PRIVATE_CTR_DEF(n) \ + template \ + explicit basic_socket_iostream(BOOST_ASIO_VARIADIC_PARAMS(n)) \ : std::basic_iostream( \ &this->detail::socket_iostream_base< \ Protocol, StreamSocketService, Time, \ TimeTraits, TimerService>::streambuf_) \ { \ this->setf(std::ios_base::unitbuf); \ - if (rdbuf()->connect(BOOST_PP_ENUM_PARAMS(n, x)) == 0) \ + if (rdbuf()->connect(BOOST_ASIO_VARIADIC_ARGS(n)) == 0) \ this->setstate(std::ios_base::failbit); \ } \ /**/ @@ -71,11 +64,11 @@ // } // This macro should only persist within this file. -# define BOOST_ASIO_PRIVATE_CONNECT_DEF(z, n, data) \ - template \ - void connect(BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \ +# define BOOST_ASIO_PRIVATE_CONNECT_DEF(n) \ + template \ + void connect(BOOST_ASIO_VARIADIC_PARAMS(n)) \ { \ - if (rdbuf()->connect(BOOST_PP_ENUM_PARAMS(n, x)) == 0) \ + if (rdbuf()->connect(BOOST_ASIO_VARIADIC_ARGS(n)) == 0) \ this->setstate(std::ios_base::failbit); \ } \ /**/ @@ -175,9 +168,7 @@ public: this->setstate(std::ios_base::failbit); } #else - BOOST_PP_REPEAT_FROM_TO( - 1, BOOST_PP_INC(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY), - BOOST_ASIO_PRIVATE_CTR_DEF, _ ) + BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_CTR_DEF) #endif #if defined(GENERATING_DOCUMENTATION) @@ -197,9 +188,7 @@ public: this->setstate(std::ios_base::failbit); } #else - BOOST_PP_REPEAT_FROM_TO( - 1, BOOST_PP_INC(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY), - BOOST_ASIO_PRIVATE_CONNECT_DEF, _ ) + BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_CONNECT_DEF) #endif /// Close the connection. diff --git a/3party/boost/boost/asio/basic_socket_streambuf.hpp b/3party/boost/boost/asio/basic_socket_streambuf.hpp index eca21eb93a..d5e056d1ed 100644 --- a/3party/boost/boost/asio/basic_socket_streambuf.hpp +++ b/3party/boost/boost/asio/basic_socket_streambuf.hpp @@ -2,7 +2,7 @@ // basic_socket_streambuf.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -35,14 +35,7 @@ #if !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) -# include -# include -# include -# include - -# if !defined(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY) -# define BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY 5 -# endif // !defined(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY) +# include // A macro that should expand to: // template @@ -60,17 +53,16 @@ // } // This macro should only persist within this file. -# define BOOST_ASIO_PRIVATE_CONNECT_DEF( z, n, data ) \ - template \ +# define BOOST_ASIO_PRIVATE_CONNECT_DEF(n) \ + template \ basic_socket_streambuf* connect( \ - BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \ + Time, TimeTraits, TimerService>* connect(BOOST_ASIO_VARIADIC_PARAMS(n)) \ { \ init_buffers(); \ this->basic_socket::close(ec_); \ typedef typename Protocol::resolver resolver_type; \ typedef typename resolver_type::query resolver_query; \ - resolver_query query(BOOST_PP_ENUM_PARAMS(n, x)); \ + resolver_query query(BOOST_ASIO_VARIADIC_ARGS(n)); \ resolve_and_connect(query); \ return !ec_ ? this : 0; \ } \ @@ -216,9 +208,7 @@ public: return !ec_ ? this : 0; } #else - BOOST_PP_REPEAT_FROM_TO( - 1, BOOST_PP_INC(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY), - BOOST_ASIO_PRIVATE_CONNECT_DEF, _ ) + BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_CONNECT_DEF) #endif /// Close the connection. diff --git a/3party/boost/boost/asio/basic_stream_socket.hpp b/3party/boost/boost/asio/basic_stream_socket.hpp index c0f5ca73d5..1a73c862df 100644 --- a/3party/boost/boost/asio/basic_stream_socket.hpp +++ b/3party/boost/boost/asio/basic_stream_socket.hpp @@ -2,7 +2,7 @@ // basic_stream_socket.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_streambuf.hpp b/3party/boost/boost/asio/basic_streambuf.hpp index a66dcfb807..7884ebe8a8 100644 --- a/3party/boost/boost/asio/basic_streambuf.hpp +++ b/3party/boost/boost/asio/basic_streambuf.hpp @@ -2,7 +2,7 @@ // basic_streambuf.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -218,8 +218,8 @@ public: * Requires a preceding call prepare(x) where x >= n, and * no intervening operations that modify the input or output sequence. * - * @throws std::length_error If @c n is greater than the size of the output - * sequence. + * @note If @c n is greater than the size of the output sequence, the entire + * output sequence is moved to the input sequence and no error is issued. */ void commit(std::size_t n) { @@ -233,7 +233,8 @@ public: /** * Removes @c n characters from the beginning of the input sequence. * - * @throws std::length_error If n > size(). + * @note If @c n is greater than the size of the input sequence, the entire + * input sequence is consumed and no error is issued. */ void consume(std::size_t n) { diff --git a/3party/boost/boost/asio/basic_streambuf_fwd.hpp b/3party/boost/boost/asio/basic_streambuf_fwd.hpp index 87a3754926..87909ed6e6 100644 --- a/3party/boost/boost/asio/basic_streambuf_fwd.hpp +++ b/3party/boost/boost/asio/basic_streambuf_fwd.hpp @@ -2,7 +2,7 @@ // basic_streambuf_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/basic_waitable_timer.hpp b/3party/boost/boost/asio/basic_waitable_timer.hpp index adefcaaac8..664c1bc2a8 100644 --- a/3party/boost/boost/asio/basic_waitable_timer.hpp +++ b/3party/boost/boost/asio/basic_waitable_timer.hpp @@ -2,7 +2,7 @@ // basic_waitable_timer.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/buffer.hpp b/3party/boost/boost/asio/buffer.hpp index 9e87c08c75..450face65e 100644 --- a/3party/boost/boost/asio/buffer.hpp +++ b/3party/boost/boost/asio/buffer.hpp @@ -2,7 +2,7 @@ // buffer.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -618,6 +618,9 @@ private: * vector data(boost::asio::buffer_size(buffers)); * boost::asio::buffer_copy(boost::asio::buffer(data), buffers); @endcode * + * Note that @ref buffer_copy is implemented in terms of @c memcpy, and + * consequently it cannot be used to copy between overlapping memory regions. + * * @par Buffer Invalidation * * A buffer object does not have any ownership of the memory it refers to. It @@ -1265,6 +1268,9 @@ inline const_buffers_1 buffer( * * This prevents buffer overflow, regardless of the buffer sizes used in the * copy operation. + * + * Note that @ref buffer_copy is implemented in terms of @c memcpy, and + * consequently it cannot be used to copy between overlapping memory regions. */ /*@{*/ @@ -1283,6 +1289,9 @@ inline const_buffers_1 buffer( * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffer& target, const const_buffer& source) @@ -1310,6 +1319,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffer& target, const const_buffers_1& source) @@ -1333,6 +1345,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffer& target, const mutable_buffer& source) @@ -1356,6 +1371,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffer& target, const mutable_buffers_1& source) @@ -1378,6 +1396,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template std::size_t buffer_copy(const mutable_buffer& target, @@ -1415,6 +1436,9 @@ std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffers_1& target, const const_buffer& source) @@ -1437,6 +1461,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffers_1& target, const const_buffers_1& source) @@ -1461,6 +1488,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffers_1& target, const mutable_buffer& source) @@ -1485,6 +1515,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffers_1& target, const mutable_buffers_1& source) @@ -1508,6 +1541,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const mutable_buffers_1& target, @@ -1531,6 +1567,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template std::size_t buffer_copy(const MutableBufferSequence& target, @@ -1568,6 +1607,9 @@ std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const MutableBufferSequence& target, @@ -1592,6 +1634,9 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const MutableBufferSequence& target, @@ -1616,6 +1661,9 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const MutableBufferSequence& target, @@ -1639,6 +1687,9 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(target) * * @li @c buffer_size(source) + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template std::size_t buffer_copy(const MutableBufferSequence& target, @@ -1704,6 +1755,9 @@ std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffer& target, const const_buffer& source, std::size_t max_bytes_to_copy) @@ -1730,6 +1784,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffer& target, const const_buffers_1& source, std::size_t max_bytes_to_copy) @@ -1757,6 +1814,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffer& target, const mutable_buffer& source, std::size_t max_bytes_to_copy) @@ -1784,6 +1844,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffer& target, const mutable_buffers_1& source, std::size_t max_bytes_to_copy) @@ -1811,6 +1874,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const mutable_buffer& target, @@ -1838,6 +1904,9 @@ inline std::size_t buffer_copy(const mutable_buffer& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffers_1& target, const const_buffer& source, std::size_t max_bytes_to_copy) @@ -1864,6 +1933,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffers_1& target, const const_buffers_1& source, std::size_t max_bytes_to_copy) @@ -1891,6 +1963,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffers_1& target, const mutable_buffer& source, std::size_t max_bytes_to_copy) @@ -1918,6 +1993,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ inline std::size_t buffer_copy(const mutable_buffers_1& target, const mutable_buffers_1& source, std::size_t max_bytes_to_copy) @@ -1945,6 +2023,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const mutable_buffers_1& target, @@ -1973,6 +2054,9 @@ inline std::size_t buffer_copy(const mutable_buffers_1& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const MutableBufferSequence& target, @@ -2001,6 +2085,9 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const MutableBufferSequence& target, @@ -2030,6 +2117,9 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const MutableBufferSequence& target, @@ -2059,6 +2149,9 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template inline std::size_t buffer_copy(const MutableBufferSequence& target, @@ -2087,6 +2180,9 @@ inline std::size_t buffer_copy(const MutableBufferSequence& target, * @li @c buffer_size(source) * * @li @c max_bytes_to_copy + * + * This function is implemented in terms of @c memcpy, and consequently it + * cannot be used to copy between overlapping memory regions. */ template std::size_t buffer_copy(const MutableBufferSequence& target, diff --git a/3party/boost/boost/asio/buffered_read_stream.hpp b/3party/boost/boost/asio/buffered_read_stream.hpp index f53d583b41..91493e3577 100644 --- a/3party/boost/boost/asio/buffered_read_stream.hpp +++ b/3party/boost/boost/asio/buffered_read_stream.hpp @@ -2,7 +2,7 @@ // buffered_read_stream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -42,7 +43,7 @@ namespace asio { * @e Shared @e objects: Unsafe. * * @par Concepts: - * AsyncReadStream, AsyncWriteStream, Stream, Sync_Read_Stream, SyncWriteStream. + * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream. */ template class buffered_read_stream @@ -134,199 +135,65 @@ public: /// Start an asynchronous write. The data being written must be valid for the /// lifetime of the asynchronous operation. template - void async_write_some(const ConstBufferSequence& buffers, - WriteHandler handler) + BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)) + async_write_some(const ConstBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - next_layer_.async_write_some(buffers, handler); + detail::async_result_init< + WriteHandler, void (boost::system::error_code, std::size_t)> init( + BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); + + next_layer_.async_write_some(buffers, + BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)))(init.handler)); + + return init.result.get(); } /// Fill the buffer with some data. Returns the number of bytes placed in the /// buffer as a result of the operation. Throws an exception on failure. - std::size_t fill() - { - detail::buffer_resize_guard - resize_guard(storage_); - std::size_t previous_size = storage_.size(); - storage_.resize(storage_.capacity()); - storage_.resize(previous_size + next_layer_.read_some(buffer( - storage_.data() + previous_size, - storage_.size() - previous_size))); - resize_guard.commit(); - return storage_.size() - previous_size; - } + std::size_t fill(); /// Fill the buffer with some data. Returns the number of bytes placed in the /// buffer as a result of the operation, or 0 if an error occurred. - std::size_t fill(boost::system::error_code& ec) - { - detail::buffer_resize_guard - resize_guard(storage_); - std::size_t previous_size = storage_.size(); - storage_.resize(storage_.capacity()); - storage_.resize(previous_size + next_layer_.read_some(buffer( - storage_.data() + previous_size, - storage_.size() - previous_size), - ec)); - resize_guard.commit(); - return storage_.size() - previous_size; - } - - template - class fill_handler - { - public: - fill_handler(boost::asio::io_service& io_service, - detail::buffered_stream_storage& storage, - std::size_t previous_size, ReadHandler handler) - : io_service_(io_service), - storage_(storage), - previous_size_(previous_size), - handler_(handler) - { - } - - void operator()(const boost::system::error_code& ec, - std::size_t bytes_transferred) - { - storage_.resize(previous_size_ + bytes_transferred); - io_service_.dispatch(detail::bind_handler( - handler_, ec, bytes_transferred)); - } - - private: - boost::asio::io_service& io_service_; - detail::buffered_stream_storage& storage_; - std::size_t previous_size_; - ReadHandler handler_; - }; + std::size_t fill(boost::system::error_code& ec); /// Start an asynchronous fill. template - void async_fill(ReadHandler handler) - { - std::size_t previous_size = storage_.size(); - storage_.resize(storage_.capacity()); - next_layer_.async_read_some( - buffer( - storage_.data() + previous_size, - storage_.size() - previous_size), - fill_handler(get_io_service(), - storage_, previous_size, handler)); - } + BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)) + async_fill(BOOST_ASIO_MOVE_ARG(ReadHandler) handler); /// Read some data from the stream. Returns the number of bytes read. Throws /// an exception on failure. template - std::size_t read_some(const MutableBufferSequence& buffers) - { - if (boost::asio::buffer_size(buffers) == 0) - return 0; - - if (storage_.empty()) - fill(); - - return copy(buffers); - } + std::size_t read_some(const MutableBufferSequence& buffers); /// Read some data from the stream. Returns the number of bytes read or 0 if /// an error occurred. template std::size_t read_some(const MutableBufferSequence& buffers, - boost::system::error_code& ec) - { - ec = boost::system::error_code(); - - if (boost::asio::buffer_size(buffers) == 0) - return 0; - - if (storage_.empty() && !fill(ec)) - return 0; - - return copy(buffers); - } - - template - class read_some_handler - { - public: - read_some_handler(boost::asio::io_service& io_service, - detail::buffered_stream_storage& storage, - const MutableBufferSequence& buffers, ReadHandler handler) - : io_service_(io_service), - storage_(storage), - buffers_(buffers), - handler_(handler) - { - } - - void operator()(const boost::system::error_code& ec, std::size_t) - { - if (ec || storage_.empty()) - { - std::size_t length = 0; - io_service_.dispatch(detail::bind_handler(handler_, ec, length)); - } - else - { - std::size_t bytes_copied = boost::asio::buffer_copy( - buffers_, storage_.data(), storage_.size()); - storage_.consume(bytes_copied); - io_service_.dispatch(detail::bind_handler(handler_, ec, bytes_copied)); - } - } - - private: - boost::asio::io_service& io_service_; - detail::buffered_stream_storage& storage_; - MutableBufferSequence buffers_; - ReadHandler handler_; - }; + boost::system::error_code& ec); /// Start an asynchronous read. The buffer into which the data will be read /// must be valid for the lifetime of the asynchronous operation. template - void async_read_some(const MutableBufferSequence& buffers, - ReadHandler handler) - { - if (boost::asio::buffer_size(buffers) == 0) - { - get_io_service().post(detail::bind_handler( - handler, boost::system::error_code(), 0)); - } - else if (storage_.empty()) - { - async_fill(read_some_handler( - get_io_service(), storage_, buffers, handler)); - } - else - { - std::size_t length = copy(buffers); - get_io_service().post(detail::bind_handler( - handler, boost::system::error_code(), length)); - } - } + BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)) + async_read_some(const MutableBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler); /// Peek at the incoming data on the stream. Returns the number of bytes read. /// Throws an exception on failure. template - std::size_t peek(const MutableBufferSequence& buffers) - { - if (storage_.empty()) - fill(); - return peek_copy(buffers); - } + std::size_t peek(const MutableBufferSequence& buffers); /// Peek at the incoming data on the stream. Returns the number of bytes read, /// or 0 if an error occurred. template std::size_t peek(const MutableBufferSequence& buffers, - boost::system::error_code& ec) - { - ec = boost::system::error_code(); - if (storage_.empty() && !fill(ec)) - return 0; - return peek_copy(buffers); - } + boost::system::error_code& ec); /// Determine the amount of data that may be read without blocking. std::size_t in_avail() @@ -374,4 +241,6 @@ private: #include +#include + #endif // BOOST_ASIO_BUFFERED_READ_STREAM_HPP diff --git a/3party/boost/boost/asio/buffered_read_stream_fwd.hpp b/3party/boost/boost/asio/buffered_read_stream_fwd.hpp index 6d518e1ab6..0f8a59e0b8 100644 --- a/3party/boost/boost/asio/buffered_read_stream_fwd.hpp +++ b/3party/boost/boost/asio/buffered_read_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_read_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/buffered_stream.hpp b/3party/boost/boost/asio/buffered_stream.hpp index 19d40f11f1..b9ca771002 100644 --- a/3party/boost/boost/asio/buffered_stream.hpp +++ b/3party/boost/boost/asio/buffered_stream.hpp @@ -2,7 +2,7 @@ // buffered_stream.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -123,9 +124,12 @@ public: /// Start an asynchronous flush. template - void async_flush(WriteHandler handler) + BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)) + async_flush(BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - return stream_impl_.next_layer().async_flush(handler); + return stream_impl_.next_layer().async_flush( + BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Write the given data to the stream. Returns the number of bytes written. @@ -148,10 +152,13 @@ public: /// Start an asynchronous write. The data being written must be valid for the /// lifetime of the asynchronous operation. template - void async_write_some(const ConstBufferSequence& buffers, - WriteHandler handler) + BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)) + async_write_some(const ConstBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - stream_impl_.async_write_some(buffers, handler); + return stream_impl_.async_write_some(buffers, + BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); } /// Fill the buffer with some data. Returns the number of bytes placed in the @@ -170,9 +177,11 @@ public: /// Start an asynchronous fill. template - void async_fill(ReadHandler handler) + BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)) + async_fill(BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - stream_impl_.async_fill(handler); + return stream_impl_.async_fill(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } /// Read some data from the stream. Returns the number of bytes read. Throws @@ -195,10 +204,13 @@ public: /// Start an asynchronous read. The buffer into which the data will be read /// must be valid for the lifetime of the asynchronous operation. template - void async_read_some(const MutableBufferSequence& buffers, - ReadHandler handler) + BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)) + async_read_some(const MutableBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - stream_impl_.async_read_some(buffers, handler); + return stream_impl_.async_read_some(buffers, + BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); } /// Peek at the incoming data on the stream. Returns the number of bytes read. diff --git a/3party/boost/boost/asio/buffered_stream_fwd.hpp b/3party/boost/boost/asio/buffered_stream_fwd.hpp index b4b85106c1..d51b3d1ac6 100644 --- a/3party/boost/boost/asio/buffered_stream_fwd.hpp +++ b/3party/boost/boost/asio/buffered_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/buffered_write_stream.hpp b/3party/boost/boost/asio/buffered_write_stream.hpp index e909a95b8b..d7bf68c4a7 100644 --- a/3party/boost/boost/asio/buffered_write_stream.hpp +++ b/3party/boost/boost/asio/buffered_write_stream.hpp @@ -2,7 +2,7 @@ // buffered_write_stream.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -118,156 +118,37 @@ public: /// Flush all data from the buffer to the next layer. Returns the number of /// bytes written to the next layer on the last write operation. Throws an /// exception on failure. - std::size_t flush() - { - std::size_t bytes_written = write(next_layer_, - buffer(storage_.data(), storage_.size())); - storage_.consume(bytes_written); - return bytes_written; - } + std::size_t flush(); /// Flush all data from the buffer to the next layer. Returns the number of /// bytes written to the next layer on the last write operation, or 0 if an /// error occurred. - std::size_t flush(boost::system::error_code& ec) - { - std::size_t bytes_written = write(next_layer_, - buffer(storage_.data(), storage_.size()), - transfer_all(), ec); - storage_.consume(bytes_written); - return bytes_written; - } - - template - class flush_handler - { - public: - flush_handler(boost::asio::io_service& io_service, - detail::buffered_stream_storage& storage, WriteHandler handler) - : io_service_(io_service), - storage_(storage), - handler_(handler) - { - } - - void operator()(const boost::system::error_code& ec, - std::size_t bytes_written) - { - storage_.consume(bytes_written); - io_service_.dispatch(detail::bind_handler(handler_, ec, bytes_written)); - } - - private: - boost::asio::io_service& io_service_; - detail::buffered_stream_storage& storage_; - WriteHandler handler_; - }; + std::size_t flush(boost::system::error_code& ec); /// Start an asynchronous flush. template - void async_flush(WriteHandler handler) - { - async_write(next_layer_, buffer(storage_.data(), storage_.size()), - flush_handler(get_io_service(), storage_, handler)); - } + BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)) + async_flush(BOOST_ASIO_MOVE_ARG(WriteHandler) handler); /// Write the given data to the stream. Returns the number of bytes written. /// Throws an exception on failure. template - std::size_t write_some(const ConstBufferSequence& buffers) - { - if (boost::asio::buffer_size(buffers) == 0) - return 0; - - if (storage_.size() == storage_.capacity()) - flush(); - - return copy(buffers); - } + std::size_t write_some(const ConstBufferSequence& buffers); /// Write the given data to the stream. Returns the number of bytes written, /// or 0 if an error occurred and the error handler did not throw. template std::size_t write_some(const ConstBufferSequence& buffers, - boost::system::error_code& ec) - { - ec = boost::system::error_code(); - - if (boost::asio::buffer_size(buffers) == 0) - return 0; - - if (storage_.size() == storage_.capacity() && !flush(ec)) - return 0; - - return copy(buffers); - } - - template - class write_some_handler - { - public: - write_some_handler(boost::asio::io_service& io_service, - detail::buffered_stream_storage& storage, - const ConstBufferSequence& buffers, WriteHandler handler) - : io_service_(io_service), - storage_(storage), - buffers_(buffers), - handler_(handler) - { - } - - void operator()(const boost::system::error_code& ec, std::size_t) - { - if (ec) - { - std::size_t length = 0; - io_service_.dispatch(detail::bind_handler(handler_, ec, length)); - } - else - { - std::size_t orig_size = storage_.size(); - std::size_t space_avail = storage_.capacity() - orig_size; - std::size_t bytes_avail = boost::asio::buffer_size(buffers_); - std::size_t length = bytes_avail < space_avail - ? bytes_avail : space_avail; - storage_.resize(orig_size + length); - std::size_t bytes_copied = boost::asio::buffer_copy( - storage_.data() + orig_size, buffers_, length); - - io_service_.dispatch(detail::bind_handler(handler_, ec, bytes_copied)); - } - } - - private: - boost::asio::io_service& io_service_; - detail::buffered_stream_storage& storage_; - ConstBufferSequence buffers_; - WriteHandler handler_; - }; + boost::system::error_code& ec); /// Start an asynchronous write. The data being written must be valid for the /// lifetime of the asynchronous operation. template - void async_write_some(const ConstBufferSequence& buffers, - WriteHandler handler) - { - if (boost::asio::buffer_size(buffers) == 0) - { - get_io_service().post(detail::bind_handler( - handler, boost::system::error_code(), 0)); - } - else if (storage_.size() == storage_.capacity()) - { - async_flush(write_some_handler( - get_io_service(), storage_, buffers, handler)); - } - else - { - std::size_t bytes_copied = copy(buffers); - get_io_service().post(detail::bind_handler( - handler, boost::system::error_code(), bytes_copied)); - } - } + BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)) + async_write_some(const ConstBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler); /// Read some data from the stream. Returns the number of bytes read. Throws /// an exception on failure. @@ -289,10 +170,20 @@ public: /// Start an asynchronous read. The buffer into which the data will be read /// must be valid for the lifetime of the asynchronous operation. template - void async_read_some(const MutableBufferSequence& buffers, - ReadHandler handler) + BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)) + async_read_some(const MutableBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - next_layer_.async_read_some(buffers, handler); + detail::async_result_init< + ReadHandler, void (boost::system::error_code, std::size_t)> init( + BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); + + next_layer_.async_read_some(buffers, + BOOST_ASIO_MOVE_CAST(BOOST_ASIO_HANDLER_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)))(init.handler)); + + return init.result.get(); } /// Peek at the incoming data on the stream. Returns the number of bytes read. @@ -328,16 +219,7 @@ private: /// Copy data into the internal buffer from the specified source buffer. /// Returns the number of bytes copied. template - std::size_t copy(const ConstBufferSequence& buffers) - { - std::size_t orig_size = storage_.size(); - std::size_t space_avail = storage_.capacity() - orig_size; - std::size_t bytes_avail = boost::asio::buffer_size(buffers); - std::size_t length = bytes_avail < space_avail ? bytes_avail : space_avail; - storage_.resize(orig_size + length); - return boost::asio::buffer_copy( - storage_.data() + orig_size, buffers, length); - } + std::size_t copy(const ConstBufferSequence& buffers); /// The next layer. Stream next_layer_; @@ -351,4 +233,6 @@ private: #include +#include + #endif // BOOST_ASIO_BUFFERED_WRITE_STREAM_HPP diff --git a/3party/boost/boost/asio/buffered_write_stream_fwd.hpp b/3party/boost/boost/asio/buffered_write_stream_fwd.hpp index adc07b95a4..3b83cdffb1 100644 --- a/3party/boost/boost/asio/buffered_write_stream_fwd.hpp +++ b/3party/boost/boost/asio/buffered_write_stream_fwd.hpp @@ -2,7 +2,7 @@ // buffered_write_stream_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/buffers_iterator.hpp b/3party/boost/boost/asio/buffers_iterator.hpp index 2e6fad861c..877f9f11cf 100644 --- a/3party/boost/boost/asio/buffers_iterator.hpp +++ b/3party/boost/boost/asio/buffers_iterator.hpp @@ -2,7 +2,7 @@ // buffers_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/completion_condition.hpp b/3party/boost/boost/asio/completion_condition.hpp index ec91726736..ed4f4fb852 100644 --- a/3party/boost/boost/asio/completion_condition.hpp +++ b/3party/boost/boost/asio/completion_condition.hpp @@ -2,7 +2,7 @@ // completion_condition.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -26,7 +26,7 @@ namespace asio { namespace detail { // The default maximum number of bytes to transfer in a single operation. -enum { default_max_transfer_size = 65536 }; +enum default_max_transfer_size_t { default_max_transfer_size = 65536 }; // Adapt result of old-style completion conditions (which had a bool result // where true indicated that the operation was complete). diff --git a/3party/boost/boost/asio/connect.hpp b/3party/boost/boost/asio/connect.hpp index 332cf636fa..03c9fe798b 100644 --- a/3party/boost/boost/asio/connect.hpp +++ b/3party/boost/boost/asio/connect.hpp @@ -2,7 +2,7 @@ // connect.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/coroutine.hpp b/3party/boost/boost/asio/coroutine.hpp index 76be7067d9..c01f66b115 100644 --- a/3party/boost/boost/asio/coroutine.hpp +++ b/3party/boost/boost/asio/coroutine.hpp @@ -2,7 +2,7 @@ // coroutine.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/datagram_socket_service.hpp b/3party/boost/boost/asio/datagram_socket_service.hpp index c3eb024f46..91c8aa1d5d 100644 --- a/3party/boost/boost/asio/datagram_socket_service.hpp +++ b/3party/boost/boost/asio/datagram_socket_service.hpp @@ -2,7 +2,7 @@ // datagram_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -22,7 +22,9 @@ #include #include -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +#elif defined(BOOST_ASIO_HAS_IOCP) # include #else # include @@ -56,7 +58,9 @@ public: private: // The type of the platform-specific implementation. -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + typedef detail::null_socket_service service_impl_type; +#elif defined(BOOST_ASIO_HAS_IOCP) typedef detail::win_iocp_socket_service service_impl_type; #else typedef detail::reactive_socket_service service_impl_type; @@ -138,7 +142,7 @@ public: boost::system::error_code open(implementation_type& impl, const protocol_type& protocol, boost::system::error_code& ec) { - if (protocol.type() == SOCK_DGRAM) + if (protocol.type() == BOOST_ASIO_OS_DEF(SOCK_DGRAM)) service_impl_.open(impl, protocol, ec); else ec = boost::asio::error::invalid_argument; diff --git a/3party/boost/boost/asio/deadline_timer.hpp b/3party/boost/boost/asio/deadline_timer.hpp index 752b77a633..b78d3ced20 100644 --- a/3party/boost/boost/asio/deadline_timer.hpp +++ b/3party/boost/boost/asio/deadline_timer.hpp @@ -2,7 +2,7 @@ // deadline_timer.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/deadline_timer_service.hpp b/3party/boost/boost/asio/deadline_timer_service.hpp index ed637df6f7..ba7f00a66c 100644 --- a/3party/boost/boost/asio/deadline_timer_service.hpp +++ b/3party/boost/boost/asio/deadline_timer_service.hpp @@ -2,7 +2,7 @@ // deadline_timer_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/addressof.hpp b/3party/boost/boost/asio/detail/addressof.hpp index 7e440144ea..7b473319cb 100644 --- a/3party/boost/boost/asio/detail/addressof.hpp +++ b/3party/boost/boost/asio/detail/addressof.hpp @@ -2,7 +2,7 @@ // detail/addressof.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/array.hpp b/3party/boost/boost/asio/detail/array.hpp index dfd37f1e61..8909e24808 100644 --- a/3party/boost/boost/asio/detail/array.hpp +++ b/3party/boost/boost/asio/detail/array.hpp @@ -2,7 +2,7 @@ // detail/array.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/array_fwd.hpp b/3party/boost/boost/asio/detail/array_fwd.hpp index e4410b89e2..219f45c2bc 100644 --- a/3party/boost/boost/asio/detail/array_fwd.hpp +++ b/3party/boost/boost/asio/detail/array_fwd.hpp @@ -2,7 +2,7 @@ // detail/array_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/assert.hpp b/3party/boost/boost/asio/detail/assert.hpp index 157cd9cf57..b4498d1b01 100644 --- a/3party/boost/boost/asio/detail/assert.hpp +++ b/3party/boost/boost/asio/detail/assert.hpp @@ -2,7 +2,7 @@ // detail/assert.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/atomic_count.hpp b/3party/boost/boost/asio/detail/atomic_count.hpp index 540ecb4ab3..c39e926a0d 100644 --- a/3party/boost/boost/asio/detail/atomic_count.hpp +++ b/3party/boost/boost/asio/detail/atomic_count.hpp @@ -2,7 +2,7 @@ // detail/atomic_count.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/base_from_completion_cond.hpp b/3party/boost/boost/asio/detail/base_from_completion_cond.hpp index 59d4d9e04d..07e24f094e 100644 --- a/3party/boost/boost/asio/detail/base_from_completion_cond.hpp +++ b/3party/boost/boost/asio/detail/base_from_completion_cond.hpp @@ -2,7 +2,7 @@ // detail/base_from_completion_cond.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/bind_handler.hpp b/3party/boost/boost/asio/detail/bind_handler.hpp index 0e0d9bea6f..e8f488d003 100644 --- a/3party/boost/boost/asio/detail/bind_handler.hpp +++ b/3party/boost/boost/asio/detail/bind_handler.hpp @@ -2,7 +2,7 @@ // detail/bind_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/buffer_resize_guard.hpp b/3party/boost/boost/asio/detail/buffer_resize_guard.hpp index 656ff71ba8..56304e5b27 100644 --- a/3party/boost/boost/asio/detail/buffer_resize_guard.hpp +++ b/3party/boost/boost/asio/detail/buffer_resize_guard.hpp @@ -2,7 +2,7 @@ // detail/buffer_resize_guard.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/buffer_sequence_adapter.hpp b/3party/boost/boost/asio/detail/buffer_sequence_adapter.hpp index edcce6dfbd..da81cbee7b 100644 --- a/3party/boost/boost/asio/detail/buffer_sequence_adapter.hpp +++ b/3party/boost/boost/asio/detail/buffer_sequence_adapter.hpp @@ -2,7 +2,7 @@ // detail/buffer_sequence_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -29,7 +29,23 @@ namespace detail { class buffer_sequence_adapter_base { protected: -#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + // The maximum number of buffers to support in a single operation. + enum { max_buffers = 1 }; + + typedef Windows::Storage::Streams::IBuffer^ native_buffer_type; + + BOOST_ASIO_DECL static void init_native_buffer( + native_buffer_type& buf, + const boost::asio::mutable_buffer& buffer); + + BOOST_ASIO_DECL static void init_native_buffer( + native_buffer_type& buf, + const boost::asio::const_buffer& buffer); +#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) + // The maximum number of buffers to support in a single operation. + enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len }; + typedef WSABUF native_buffer_type; static void init_native_buffer(WSABUF& buf, @@ -46,6 +62,9 @@ protected: buf.len = static_cast(boost::asio::buffer_size(buffer)); } #else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) + // The maximum number of buffers to support in a single operation. + enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len }; + typedef iovec native_buffer_type; static void init_iov_base(void*& base, void* addr) @@ -146,9 +165,6 @@ public: } private: - // The maximum number of buffers to support in a single operation. - enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len }; - native_buffer_type buffers_[max_buffers]; std::size_t count_; std::size_t total_buffer_size_; @@ -362,4 +378,8 @@ private: #include +#if defined(BOOST_ASIO_HEADER_ONLY) +# include +#endif // defined(BOOST_ASIO_HEADER_ONLY) + #endif // BOOST_ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP diff --git a/3party/boost/boost/asio/detail/buffered_stream_storage.hpp b/3party/boost/boost/asio/detail/buffered_stream_storage.hpp index 7080cfade4..6f138d2e6a 100644 --- a/3party/boost/boost/asio/detail/buffered_stream_storage.hpp +++ b/3party/boost/boost/asio/detail/buffered_stream_storage.hpp @@ -2,7 +2,7 @@ // detail/buffered_stream_storage.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/call_stack.hpp b/3party/boost/boost/asio/detail/call_stack.hpp index b5ac5fb9bc..62aeb40a6a 100644 --- a/3party/boost/boost/asio/detail/call_stack.hpp +++ b/3party/boost/boost/asio/detail/call_stack.hpp @@ -2,7 +2,7 @@ // detail/call_stack.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/chrono_time_traits.hpp b/3party/boost/boost/asio/detail/chrono_time_traits.hpp index 1b58d2bb04..6b81e5d794 100644 --- a/3party/boost/boost/asio/detail/chrono_time_traits.hpp +++ b/3party/boost/boost/asio/detail/chrono_time_traits.hpp @@ -2,7 +2,7 @@ // detail/chrono_time_traits.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,6 +23,13 @@ namespace boost { namespace asio { namespace detail { +// Helper template to compute the greatest common divisor. +template +struct gcd { enum { value = gcd::value }; }; + +template +struct gcd { enum { value = v1 }; }; + // Adapts std::chrono clocks for use with a deadline timer. template struct chrono_time_traits @@ -147,8 +154,14 @@ struct chrono_time_traits template int64_t duration_cast() const { - const int64_t num = period_type::num * Den; - const int64_t den = period_type::den * Num; + const int64_t num1 = period_type::num / gcd::value; + const int64_t num2 = Num / gcd::value; + + const int64_t den1 = period_type::den / gcd::value; + const int64_t den2 = Den / gcd::value; + + const int64_t num = num1 * den2; + const int64_t den = num2 * den1; if (num == 1 && den == 1) return ticks(); diff --git a/3party/boost/boost/asio/detail/completion_handler.hpp b/3party/boost/boost/asio/detail/completion_handler.hpp index 98b7a2032c..833f5a35be 100644 --- a/3party/boost/boost/asio/detail/completion_handler.hpp +++ b/3party/boost/boost/asio/detail/completion_handler.hpp @@ -2,7 +2,7 @@ // detail/completion_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/config.hpp b/3party/boost/boost/asio/detail/config.hpp index 6387558a4d..453f04d7a6 100644 --- a/3party/boost/boost/asio/detail/config.hpp +++ b/3party/boost/boost/asio/detail/config.hpp @@ -2,7 +2,7 @@ // detail/config.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -97,6 +97,11 @@ # endif // defined(__GXX_EXPERIMENTAL_CXX0X__) # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) # endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_MOVE 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_MOVE) #endif // !defined(BOOST_ASIO_HAS_MOVE) @@ -152,6 +157,31 @@ # endif // !defined(BOOST_ASIO_DISABLE_VARIADIC_TEMPLATES) #endif // !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) +// Support constexpr on compilers known to allow it. +#if !defined(BOOST_ASIO_HAS_CONSTEXPR) +# if !defined(BOOST_ASIO_DISABLE_CONSTEXPR) +# if defined(__clang__) +# if __has_feature(__cxx_constexpr__) +# define BOOST_ASIO_HAS_CONSTEXPR 1 +# endif // __has_feature(__cxx_constexr__) +# endif // defined(__clang__) +# if defined(__GNUC__) +# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) +# if defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_ASIO_HAS_CONSTEXPR 1 +# endif // defined(__GXX_EXPERIMENTAL_CXX0X__) +# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) +# endif // defined(__GNUC__) +# endif // !defined(BOOST_ASIO_DISABLE_CONSTEXPR) +#endif // !defined(BOOST_ASIO_HAS_CONSTEXPR) +#if !defined(BOOST_ASIO_CONSTEXPR) +# if defined(BOOST_ASIO_HAS_CONSTEXPR) +# define BOOST_ASIO_CONSTEXPR constexpr +# else // defined(BOOST_ASIO_HAS_CONSTEXPR) +# define BOOST_ASIO_CONSTEXPR +# endif // defined(BOOST_ASIO_HAS_CONSTEXPR) +#endif // !defined(BOOST_ASIO_CONSTEXPR) + // Standard library support for system errors. # if !defined(BOOST_ASIO_DISABLE_STD_SYSTEM_ERROR) # if defined(BOOST_ASIO_HAS_CLANG_LIBCXX) @@ -164,6 +194,11 @@ # endif // defined(__GXX_EXPERIMENTAL_CXX0X__) # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) # endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_SYSTEM_ERROR 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_STD_SYSTEM_ERROR) // Compliant C++11 compilers put noexcept specifiers on error_category members. @@ -241,6 +276,11 @@ # endif // defined(__GXX_EXPERIMENTAL_CXX0X__) # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) # endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_ATOMIC 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_STD_ATOMIC) #endif // !defined(BOOST_ASIO_HAS_STD_ATOMIC) @@ -262,6 +302,11 @@ # endif // defined(__GXX_EXPERIMENTAL_CXX0X__) # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4) # endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_CHRONO 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_STD_CHRONO) #endif // !defined(BOOST_ASIO_HAS_STD_CHRONO) @@ -294,6 +339,11 @@ # endif // defined(__GXX_EXPERIMENTAL_CXX0X__) # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) # endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_ADDRESSOF 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_STD_ADDRESSOF) #endif // !defined(BOOST_ASIO_HAS_STD_ADDRESSOF) @@ -310,6 +360,11 @@ # endif // defined(__GXX_EXPERIMENTAL_CXX0X__) # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) # endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_FUNCTION 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_STD_FUNCTION) #endif // !defined(BOOST_ASIO_HAS_STD_FUNCTION) @@ -326,6 +381,11 @@ # endif // defined(__GXX_EXPERIMENTAL_CXX0X__) # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) # endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_TYPE_TRAITS 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_STD_TYPE_TRAITS) #endif // !defined(BOOST_ASIO_HAS_STD_TYPE_TRAITS) @@ -342,16 +402,75 @@ # endif // defined(__GXX_EXPERIMENTAL_CXX0X__) # endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4) # endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_CSTDINT 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) # endif // !defined(BOOST_ASIO_DISABLE_CSTDINT) #endif // !defined(BOOST_ASIO_HAS_CSTDINT) -// Windows target. +// Standard library support for the thread class. +#if !defined(BOOST_ASIO_HAS_STD_THREAD) +# if !defined(BOOST_ASIO_DISABLE_STD_THREAD) +# if defined(BOOST_ASIO_HAS_CLANG_LIBCXX) +# define BOOST_ASIO_HAS_STD_THREAD 1 +# endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX) +# if defined(__GNUC__) +# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) +# if defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_ASIO_HAS_STD_THREAD 1 +# endif // defined(__GXX_EXPERIMENTAL_CXX0X__) +# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) +# endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_THREAD 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) +# endif // !defined(BOOST_ASIO_DISABLE_STD_THREAD) +#endif // !defined(BOOST_ASIO_HAS_STD_THREAD) + +// Standard library support for the mutex and condition variable classes. +#if !defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) +# if !defined(BOOST_ASIO_DISABLE_STD_MUTEX_AND_CONDVAR) +# if defined(BOOST_ASIO_HAS_CLANG_LIBCXX) +# define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1 +# endif // defined(BOOST_ASIO_HAS_CLANG_LIBCXX) +# if defined(__GNUC__) +# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) +# if defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1 +# endif // defined(__GXX_EXPERIMENTAL_CXX0X__) +# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4) +# endif // defined(__GNUC__) +# if defined(BOOST_ASIO_MSVC) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR 1 +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) +# endif // !defined(BOOST_ASIO_DISABLE_STD_MUTEX_AND_CONDVAR) +#endif // !defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) + +// WinRT target. +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) +# if defined(__cplusplus_winrt) +# include +# if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP) +# define BOOST_ASIO_WINDOWS_RUNTIME 1 +# endif // WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP) +# endif // defined(__cplusplus_winrt) +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + +// Windows target. Excludes WinRT. #if !defined(BOOST_ASIO_WINDOWS) -# if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS) -# define BOOST_ASIO_WINDOWS 1 -# elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) -# define BOOST_ASIO_WINDOWS 1 -# endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS) +# if !defined(BOOST_ASIO_WINDOWS_RUNTIME) +# if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS) +# define BOOST_ASIO_WINDOWS 1 +# elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) +# define BOOST_ASIO_WINDOWS 1 +# endif // defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS) +# endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) #endif // !defined(BOOST_ASIO_WINDOWS) // Windows: target OS version. @@ -479,14 +598,18 @@ // Serial ports. #if !defined(BOOST_ASIO_HAS_SERIAL_PORT) # if defined(BOOST_ASIO_HAS_IOCP) \ - || !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) + || !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) # if !defined(__SYMBIAN32__) # if !defined(BOOST_ASIO_DISABLE_SERIAL_PORT) # define BOOST_ASIO_HAS_SERIAL_PORT 1 # endif // !defined(BOOST_ASIO_DISABLE_SERIAL_PORT) # endif // !defined(__SYMBIAN32__) # endif // defined(BOOST_ASIO_HAS_IOCP) - // || !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) + // || !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) #endif // !defined(BOOST_ASIO_HAS_SERIAL_PORT) // Windows: stream handles. @@ -530,27 +653,39 @@ // POSIX: stream-oriented file descriptors. #if !defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR) # if !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR) -# if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +# if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) # define BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR 1 -# endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +# endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) # endif // !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR) #endif // !defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR) // UNIX domain sockets. #if !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) # if !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS) -# if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +# if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) # define BOOST_ASIO_HAS_LOCAL_SOCKETS 1 -# endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +# endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) # endif // !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS) #endif // !defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) // Can use sigaction() instead of signal(). #if !defined(BOOST_ASIO_HAS_SIGACTION) # if !defined(BOOST_ASIO_DISABLE_SIGACTION) -# if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +# if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) # define BOOST_ASIO_HAS_SIGACTION 1 -# endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +# endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) # endif // !defined(BOOST_ASIO_DISABLE_SIGACTION) #endif // !defined(BOOST_ASIO_HAS_SIGACTION) @@ -563,6 +698,19 @@ # endif // !defined(BOOST_ASIO_DISABLE_SIGNAL) #endif // !defined(BOOST_ASIO_HAS_SIGNAL) +// Can use getaddrinfo() and getnameinfo(). +#if !defined(BOOST_ASIO_HAS_GETADDRINFO) +# if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) +# define BOOST_ASIO_HAS_GETADDRINFO 1 +# elif defined(UNDER_CE) +# define BOOST_ASIO_HAS_GETADDRINFO 1 +# endif // defined(UNDER_CE) +# elif !(defined(__MACH__) && defined(__APPLE__)) +# define BOOST_ASIO_HAS_GETADDRINFO 1 +# endif // !(defined(__MACH__) && defined(__APPLE__)) +#endif // !defined(BOOST_ASIO_HAS_GETADDRINFO) + // Whether standard iostreams are disabled. #if !defined(BOOST_ASIO_NO_IOSTREAM) # if defined(BOOST_ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_IOSTREAM) @@ -728,13 +876,23 @@ # if ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3) # if !defined(__INTEL_COMPILER) && !defined(__ICL) # define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1 +# define BOOST_ASIO_THREAD_KEYWORD __thread # elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100) # define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1 # endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100) # endif // ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3) # endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) # endif // defined(__linux__) +# if defined(BOOST_ASIO_MSVC) && defined(BOOST_ASIO_WINDOWS_RUNTIME) +# if (_MSC_VER >= 1700) +# define BOOST_ASIO_HAS_THREAD_KEYWORD_EXTENSION 1 +# define BOOST_ASIO_THREAD_KEYWORD __declspec(thread) +# endif // (_MSC_VER >= 1700) +# endif // defined(BOOST_ASIO_MSVC) && defined(BOOST_ASIO_WINDOWS_RUNTIME) #endif // !defined(BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION) +#if !defined(BOOST_ASIO_THREAD_KEYWORD) +# define BOOST_ASIO_THREAD_KEYWORD __thread +#endif // !defined(BOOST_ASIO_THREAD_KEYWORD) // Support for POSIX ssize_t typedef. #if !defined(BOOST_ASIO_DISABLE_SSIZE_T) diff --git a/3party/boost/boost/asio/detail/consuming_buffers.hpp b/3party/boost/boost/asio/detail/consuming_buffers.hpp index 2af56e9720..8bd36e4128 100644 --- a/3party/boost/boost/asio/detail/consuming_buffers.hpp +++ b/3party/boost/boost/asio/detail/consuming_buffers.hpp @@ -2,7 +2,7 @@ // detail/consuming_buffers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/cstdint.hpp b/3party/boost/boost/asio/detail/cstdint.hpp index 561cece44b..ad611e982a 100644 --- a/3party/boost/boost/asio/detail/cstdint.hpp +++ b/3party/boost/boost/asio/detail/cstdint.hpp @@ -2,7 +2,7 @@ // detail/cstdint.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/date_time_fwd.hpp b/3party/boost/boost/asio/detail/date_time_fwd.hpp index d17deb6b06..1c0bcaf27f 100644 --- a/3party/boost/boost/asio/detail/date_time_fwd.hpp +++ b/3party/boost/boost/asio/detail/date_time_fwd.hpp @@ -2,7 +2,7 @@ // detail/date_time_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/deadline_timer_service.hpp b/3party/boost/boost/asio/detail/deadline_timer_service.hpp index 3be332c139..52e26397eb 100644 --- a/3party/boost/boost/asio/detail/deadline_timer_service.hpp +++ b/3party/boost/boost/asio/detail/deadline_timer_service.hpp @@ -2,7 +2,7 @@ // detail/deadline_timer_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -30,6 +30,11 @@ #include #include +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +# include +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + #include namespace boost { @@ -195,10 +200,17 @@ private: template void do_wait(const Duration& timeout, boost::system::error_code& ec) { +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + std::this_thread::sleep_for( + std::chrono::seconds(timeout.total_seconds()) + + std::chrono::microseconds(timeout.total_microseconds())); + ec = boost::system::error_code(); +#else // defined(BOOST_ASIO_WINDOWS_RUNTIME) ::timeval tv; tv.tv_sec = timeout.total_seconds(); tv.tv_usec = timeout.total_microseconds() % 1000000; socket_ops::select(0, 0, 0, 0, &tv, ec); +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) } // The queue of timers. diff --git a/3party/boost/boost/asio/detail/dependent_type.hpp b/3party/boost/boost/asio/detail/dependent_type.hpp index d2fb0d6f11..a9e7feddcc 100644 --- a/3party/boost/boost/asio/detail/dependent_type.hpp +++ b/3party/boost/boost/asio/detail/dependent_type.hpp @@ -2,7 +2,7 @@ // detail/dependent_type.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/descriptor_ops.hpp b/3party/boost/boost/asio/detail/descriptor_ops.hpp index b8edd5b6bd..b9fbadc7fe 100644 --- a/3party/boost/boost/asio/detail/descriptor_ops.hpp +++ b/3party/boost/boost/asio/detail/descriptor_ops.hpp @@ -2,7 +2,7 @@ // detail/descriptor_ops.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,7 +17,9 @@ #include -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) #include #include @@ -110,6 +112,8 @@ BOOST_ASIO_DECL int poll_write(int d, # include #endif // defined(BOOST_ASIO_HEADER_ONLY) -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) #endif // BOOST_ASIO_DETAIL_DESCRIPTOR_OPS_HPP diff --git a/3party/boost/boost/asio/detail/descriptor_read_op.hpp b/3party/boost/boost/asio/detail/descriptor_read_op.hpp index ea2c107761..6993bd6cdd 100644 --- a/3party/boost/boost/asio/detail/descriptor_read_op.hpp +++ b/3party/boost/boost/asio/detail/descriptor_read_op.hpp @@ -2,7 +2,7 @@ // detail/descriptor_read_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/descriptor_write_op.hpp b/3party/boost/boost/asio/detail/descriptor_write_op.hpp index 2719dfca95..ec83eef18e 100644 --- a/3party/boost/boost/asio/detail/descriptor_write_op.hpp +++ b/3party/boost/boost/asio/detail/descriptor_write_op.hpp @@ -2,7 +2,7 @@ // detail/descriptor_write_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/dev_poll_reactor.hpp b/3party/boost/boost/asio/detail/dev_poll_reactor.hpp index b82c4d8e52..379e390d46 100644 --- a/3party/boost/boost/asio/detail/dev_poll_reactor.hpp +++ b/3party/boost/boost/asio/detail/dev_poll_reactor.hpp @@ -2,7 +2,7 @@ // detail/dev_poll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -32,7 +31,6 @@ #include #include #include -#include #include #include #include diff --git a/3party/boost/boost/asio/detail/dev_poll_reactor_fwd.hpp b/3party/boost/boost/asio/detail/dev_poll_reactor_fwd.hpp deleted file mode 100644 index d3c10b9c41..0000000000 --- a/3party/boost/boost/asio/detail/dev_poll_reactor_fwd.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// -// detail/dev_poll_reactor_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_FWD_HPP -#define BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include - -#if defined(BOOST_ASIO_HAS_DEV_POLL) - -namespace boost { -namespace asio { -namespace detail { - -class dev_poll_reactor; - -} // namespace detail -} // namespace asio -} // namespace boost - -#endif // defined(BOOST_ASIO_HAS_DEV_POLL) - -#endif // BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_FWD_HPP diff --git a/3party/boost/boost/asio/detail/epoll_reactor.hpp b/3party/boost/boost/asio/detail/epoll_reactor.hpp index 2a4f4c1d51..976da8a9ef 100644 --- a/3party/boost/boost/asio/detail/epoll_reactor.hpp +++ b/3party/boost/boost/asio/detail/epoll_reactor.hpp @@ -2,7 +2,7 @@ // detail/epoll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -21,7 +21,6 @@ #include #include -#include #include #include #include @@ -30,7 +29,6 @@ #include #include #include -#include #include #include diff --git a/3party/boost/boost/asio/detail/epoll_reactor_fwd.hpp b/3party/boost/boost/asio/detail/epoll_reactor_fwd.hpp deleted file mode 100644 index 392ab45596..0000000000 --- a/3party/boost/boost/asio/detail/epoll_reactor_fwd.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// -// detail/epoll_reactor_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef BOOST_ASIO_DETAIL_EPOLL_REACTOR_FWD_HPP -#define BOOST_ASIO_DETAIL_EPOLL_REACTOR_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include - -#if defined(BOOST_ASIO_HAS_EPOLL) - -namespace boost { -namespace asio { -namespace detail { - -class epoll_reactor; - -} // namespace detail -} // namespace asio -} // namespace boost - -#endif // defined(BOOST_ASIO_HAS_EPOLL) - -#endif // BOOST_ASIO_DETAIL_EPOLL_REACTOR_FWD_HPP diff --git a/3party/boost/boost/asio/detail/event.hpp b/3party/boost/boost/asio/detail/event.hpp index 5668410bbb..a18affe371 100644 --- a/3party/boost/boost/asio/detail/event.hpp +++ b/3party/boost/boost/asio/detail/event.hpp @@ -2,7 +2,7 @@ // detail/event.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,8 +23,10 @@ # include #elif defined(BOOST_ASIO_HAS_PTHREADS) # include +#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) +# include #else -# error Only Windows and POSIX are supported! +# error Only Windows, POSIX and std::condition_variable are supported! #endif namespace boost { @@ -37,6 +39,8 @@ typedef null_event event; typedef win_event event; #elif defined(BOOST_ASIO_HAS_PTHREADS) typedef posix_event event; +#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) +typedef std_event event; #endif } // namespace detail diff --git a/3party/boost/boost/asio/detail/eventfd_select_interrupter.hpp b/3party/boost/boost/asio/detail/eventfd_select_interrupter.hpp index 6ebc7cb7de..70123728fc 100644 --- a/3party/boost/boost/asio/detail/eventfd_select_interrupter.hpp +++ b/3party/boost/boost/asio/detail/eventfd_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/eventfd_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/fd_set_adapter.hpp b/3party/boost/boost/asio/detail/fd_set_adapter.hpp index 7e25b2fc4b..7aebdefe34 100644 --- a/3party/boost/boost/asio/detail/fd_set_adapter.hpp +++ b/3party/boost/boost/asio/detail/fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,6 +16,9 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include + +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #include #include @@ -33,4 +36,6 @@ typedef posix_fd_set_adapter fd_set_adapter; } // namespace asio } // namespace boost +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #endif // BOOST_ASIO_DETAIL_FD_SET_ADAPTER_HPP diff --git a/3party/boost/boost/asio/detail/fenced_block.hpp b/3party/boost/boost/asio/detail/fenced_block.hpp index 18a8ca1bf6..1ee26cf0ff 100644 --- a/3party/boost/boost/asio/detail/fenced_block.hpp +++ b/3party/boost/boost/asio/detail/fenced_block.hpp @@ -2,7 +2,7 @@ // detail/fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/function.hpp b/3party/boost/boost/asio/detail/function.hpp index 81bdb8c053..1edcb1bf46 100644 --- a/3party/boost/boost/asio/detail/function.hpp +++ b/3party/boost/boost/asio/detail/function.hpp @@ -2,7 +2,7 @@ // detail/function.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/gcc_arm_fenced_block.hpp b/3party/boost/boost/asio/detail/gcc_arm_fenced_block.hpp index 4f03b5aeee..5d5fc5c9c4 100644 --- a/3party/boost/boost/asio/detail/gcc_arm_fenced_block.hpp +++ b/3party/boost/boost/asio/detail/gcc_arm_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_arm_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/gcc_hppa_fenced_block.hpp b/3party/boost/boost/asio/detail/gcc_hppa_fenced_block.hpp index c2d64a9b93..61ad4382d5 100644 --- a/3party/boost/boost/asio/detail/gcc_hppa_fenced_block.hpp +++ b/3party/boost/boost/asio/detail/gcc_hppa_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_hppa_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/gcc_sync_fenced_block.hpp b/3party/boost/boost/asio/detail/gcc_sync_fenced_block.hpp index dd31089b31..226cfa70e6 100644 --- a/3party/boost/boost/asio/detail/gcc_sync_fenced_block.hpp +++ b/3party/boost/boost/asio/detail/gcc_sync_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_sync_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/gcc_x86_fenced_block.hpp b/3party/boost/boost/asio/detail/gcc_x86_fenced_block.hpp index ff93845f2a..d39c693e52 100644 --- a/3party/boost/boost/asio/detail/gcc_x86_fenced_block.hpp +++ b/3party/boost/boost/asio/detail/gcc_x86_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/gcc_x86_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -64,7 +64,11 @@ private: static void lbarrier() { #if defined(__SSE2__) +# if (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) + __builtin_ia32_lfence(); +# else // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) __asm__ __volatile__ ("lfence" ::: "memory"); +# endif // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) #else // defined(__SSE2__) barrier(); #endif // defined(__SSE2__) @@ -73,7 +77,11 @@ private: static void sbarrier() { #if defined(__SSE2__) +# if (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) + __builtin_ia32_sfence(); +# else // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) __asm__ __volatile__ ("sfence" ::: "memory"); +# endif // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL) #else // defined(__SSE2__) barrier(); #endif // defined(__SSE2__) diff --git a/3party/boost/boost/asio/detail/handler_alloc_helpers.hpp b/3party/boost/boost/asio/detail/handler_alloc_helpers.hpp index 7e14b82473..dac3737c62 100644 --- a/3party/boost/boost/asio/detail/handler_alloc_helpers.hpp +++ b/3party/boost/boost/asio/detail/handler_alloc_helpers.hpp @@ -2,7 +2,7 @@ // detail/handler_alloc_helpers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/handler_cont_helpers.hpp b/3party/boost/boost/asio/detail/handler_cont_helpers.hpp index e5d9fc360c..e318a6ed98 100644 --- a/3party/boost/boost/asio/detail/handler_cont_helpers.hpp +++ b/3party/boost/boost/asio/detail/handler_cont_helpers.hpp @@ -2,7 +2,7 @@ // detail/handler_cont_helpers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/handler_invoke_helpers.hpp b/3party/boost/boost/asio/detail/handler_invoke_helpers.hpp index 7cf44144b9..ed276e5248 100644 --- a/3party/boost/boost/asio/detail/handler_invoke_helpers.hpp +++ b/3party/boost/boost/asio/detail/handler_invoke_helpers.hpp @@ -2,7 +2,7 @@ // detail/handler_invoke_helpers.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/handler_tracking.hpp b/3party/boost/boost/asio/detail/handler_tracking.hpp index 8dccbb3fcd..9f31ddc923 100644 --- a/3party/boost/boost/asio/detail/handler_tracking.hpp +++ b/3party/boost/boost/asio/detail/handler_tracking.hpp @@ -2,7 +2,7 @@ // detail/handler_tracking.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/handler_type_requirements.hpp b/3party/boost/boost/asio/detail/handler_type_requirements.hpp index 3046855a23..da111f1de6 100644 --- a/3party/boost/boost/asio/detail/handler_type_requirements.hpp +++ b/3party/boost/boost/asio/detail/handler_type_requirements.hpp @@ -2,7 +2,7 @@ // detail/handler_type_requirements.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -53,6 +53,16 @@ # include #endif // defined(BOOST_ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS) +// Newer gcc needs special treatment to suppress unused typedef warnings. +#if defined(__GNUC__) +# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) +# define BOOST_ASIO_UNUSED_TYPEDEF __attribute__((__unused__)) +# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4) +#endif // defined(__GNUC__) +#if !defined(BOOST_ASIO_UNUSED_TYPEDEF) +# define BOOST_ASIO_UNUSED_TYPEDEF +#endif // !defined(BOOST_ASIO_UNUSED_TYPEDEF) + namespace boost { namespace asio { namespace detail { @@ -131,7 +141,7 @@ struct handler_type_requirements sizeof( \ boost::asio::detail::lvref< \ asio_true_handler_type>()(), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_READ_HANDLER_CHECK( \ handler_type, handler) \ @@ -158,7 +168,7 @@ struct handler_type_requirements asio_true_handler_type>()( \ boost::asio::detail::lvref(), \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_WRITE_HANDLER_CHECK( \ @@ -186,7 +196,7 @@ struct handler_type_requirements asio_true_handler_type>()( \ boost::asio::detail::lvref(), \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_ACCEPT_HANDLER_CHECK( \ handler_type, handler) \ @@ -211,7 +221,7 @@ struct handler_type_requirements boost::asio::detail::lvref< \ asio_true_handler_type>()( \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_CONNECT_HANDLER_CHECK( \ handler_type, handler) \ @@ -236,7 +246,7 @@ struct handler_type_requirements boost::asio::detail::lvref< \ asio_true_handler_type>()( \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_COMPOSED_CONNECT_HANDLER_CHECK( \ handler_type, handler, iter_type) \ @@ -263,7 +273,7 @@ struct handler_type_requirements asio_true_handler_type>()( \ boost::asio::detail::lvref(), \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_RESOLVE_HANDLER_CHECK( \ handler_type, handler, iter_type) \ @@ -290,7 +300,7 @@ struct handler_type_requirements asio_true_handler_type>()( \ boost::asio::detail::lvref(), \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_WAIT_HANDLER_CHECK( \ handler_type, handler) \ @@ -315,7 +325,7 @@ struct handler_type_requirements boost::asio::detail::lvref< \ asio_true_handler_type>()( \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_SIGNAL_HANDLER_CHECK( \ handler_type, handler) \ @@ -342,7 +352,7 @@ struct handler_type_requirements asio_true_handler_type>()( \ boost::asio::detail::lvref(), \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_HANDSHAKE_HANDLER_CHECK( \ handler_type, handler) \ @@ -367,7 +377,7 @@ struct handler_type_requirements boost::asio::detail::lvref< \ asio_true_handler_type>()( \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK( \ handler_type, handler) \ @@ -394,7 +404,7 @@ struct handler_type_requirements asio_true_handler_type>()( \ boost::asio::detail::lvref(), \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_SHUTDOWN_HANDLER_CHECK( \ handler_type, handler) \ @@ -419,57 +429,57 @@ struct handler_type_requirements boost::asio::detail::lvref< \ asio_true_handler_type>()( \ boost::asio::detail::lvref()), \ - char(0))> + char(0))> BOOST_ASIO_UNUSED_TYPEDEF #else // !defined(BOOST_ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS) #define BOOST_ASIO_COMPLETION_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_READ_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_WRITE_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_ACCEPT_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_CONNECT_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_COMPOSED_CONNECT_HANDLER_CHECK( \ handler_type, handler, iter_type) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_RESOLVE_HANDLER_CHECK( \ handler_type, handler, iter_type) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_WAIT_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_SIGNAL_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_HANDSHAKE_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #define BOOST_ASIO_SHUTDOWN_HANDLER_CHECK( \ handler_type, handler) \ - typedef int + typedef int BOOST_ASIO_UNUSED_TYPEDEF #endif // !defined(BOOST_ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS) diff --git a/3party/boost/boost/asio/detail/hash_map.hpp b/3party/boost/boost/asio/detail/hash_map.hpp index de511ea1e3..6724a242de 100644 --- a/3party/boost/boost/asio/detail/hash_map.hpp +++ b/3party/boost/boost/asio/detail/hash_map.hpp @@ -2,7 +2,7 @@ // detail/hash_map.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/buffer_sequence_adapter.ipp b/3party/boost/boost/asio/detail/impl/buffer_sequence_adapter.ipp new file mode 100644 index 0000000000..a538134b9e --- /dev/null +++ b/3party/boost/boost/asio/detail/impl/buffer_sequence_adapter.ipp @@ -0,0 +1,120 @@ +// +// detail/impl/buffer_sequence_adapter.ipp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP +#define BOOST_ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class winrt_buffer_impl : + public Microsoft::WRL::RuntimeClass< + Microsoft::WRL::RuntimeClassFlags< + Microsoft::WRL::RuntimeClassType::WinRtClassicComMix>, + ABI::Windows::Storage::Streams::IBuffer, + Windows::Storage::Streams::IBufferByteAccess> +{ +public: + explicit winrt_buffer_impl(const boost::asio::const_buffer& b) + { + bytes_ = const_cast(boost::asio::buffer_cast(b)); + length_ = boost::asio::buffer_size(b); + capacity_ = boost::asio::buffer_size(b); + } + + explicit winrt_buffer_impl(const boost::asio::mutable_buffer& b) + { + bytes_ = const_cast(boost::asio::buffer_cast(b)); + length_ = 0; + capacity_ = boost::asio::buffer_size(b); + } + + ~winrt_buffer_impl() + { + } + + STDMETHODIMP Buffer(byte** value) + { + *value = bytes_; + return S_OK; + } + + STDMETHODIMP get_Capacity(UINT32* value) + { + *value = capacity_; + return S_OK; + } + + STDMETHODIMP get_Length(UINT32 *value) + { + *value = length_; + return S_OK; + } + + STDMETHODIMP put_Length(UINT32 value) + { + if (value > capacity_) + return E_INVALIDARG; + length_ = value; + return S_OK; + } + +private: + byte* bytes_; + UINT32 length_; + UINT32 capacity_; +}; + +void buffer_sequence_adapter_base::init_native_buffer( + buffer_sequence_adapter_base::native_buffer_type& buf, + const boost::asio::mutable_buffer& buffer) +{ + std::memset(&buf, 0, sizeof(native_buffer_type)); + Microsoft::WRL::ComPtr insp + = Microsoft::WRL::Make(buffer); + buf = reinterpret_cast(insp.Get()); +} + +void buffer_sequence_adapter_base::init_native_buffer( + buffer_sequence_adapter_base::native_buffer_type& buf, + const boost::asio::const_buffer& buffer) +{ + std::memset(&buf, 0, sizeof(native_buffer_type)); + Microsoft::WRL::ComPtr insp + = Microsoft::WRL::Make(buffer); + Platform::Object^ buf_obj = reinterpret_cast(insp.Get()); + buf = reinterpret_cast(insp.Get()); +} + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP diff --git a/3party/boost/boost/asio/detail/impl/descriptor_ops.ipp b/3party/boost/boost/asio/detail/impl/descriptor_ops.ipp index 7dea8d4592..54b8537d6a 100644 --- a/3party/boost/boost/asio/detail/impl/descriptor_ops.ipp +++ b/3party/boost/boost/asio/detail/impl/descriptor_ops.ipp @@ -2,7 +2,7 @@ // detail/impl/descriptor_ops.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -20,7 +20,9 @@ #include #include -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) #include @@ -444,6 +446,8 @@ int poll_write(int d, state_type state, boost::system::error_code& ec) #include -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) #endif // BOOST_ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP diff --git a/3party/boost/boost/asio/detail/impl/dev_poll_reactor.hpp b/3party/boost/boost/asio/detail/impl/dev_poll_reactor.hpp index 1c1c5f0f39..1c02ea4ffb 100644 --- a/3party/boost/boost/asio/detail/impl/dev_poll_reactor.hpp +++ b/3party/boost/boost/asio/detail/impl/dev_poll_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/dev_poll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/dev_poll_reactor.ipp b/3party/boost/boost/asio/detail/impl/dev_poll_reactor.ipp index 44d49b5cad..cc5b4016a8 100644 --- a/3party/boost/boost/asio/detail/impl/dev_poll_reactor.ipp +++ b/3party/boost/boost/asio/detail/impl/dev_poll_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/dev_poll_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/epoll_reactor.hpp b/3party/boost/boost/asio/detail/impl/epoll_reactor.hpp index 3935eba41f..3a08f8eb7b 100644 --- a/3party/boost/boost/asio/detail/impl/epoll_reactor.hpp +++ b/3party/boost/boost/asio/detail/impl/epoll_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/epoll_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/epoll_reactor.ipp b/3party/boost/boost/asio/detail/impl/epoll_reactor.ipp index 5d592afff1..27408e4e02 100644 --- a/3party/boost/boost/asio/detail/impl/epoll_reactor.ipp +++ b/3party/boost/boost/asio/detail/impl/epoll_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/epoll_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/eventfd_select_interrupter.ipp b/3party/boost/boost/asio/detail/impl/eventfd_select_interrupter.ipp index dd32679af1..c5a673a878 100644 --- a/3party/boost/boost/asio/detail/impl/eventfd_select_interrupter.ipp +++ b/3party/boost/boost/asio/detail/impl/eventfd_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/eventfd_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/impl/handler_tracking.ipp b/3party/boost/boost/asio/detail/impl/handler_tracking.ipp index fc21cee066..2c84e5a364 100644 --- a/3party/boost/boost/asio/detail/impl/handler_tracking.ipp +++ b/3party/boost/boost/asio/detail/impl/handler_tracking.ipp @@ -2,7 +2,7 @@ // detail/impl/handler_tracking.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -158,7 +158,7 @@ void handler_tracking::completion::invocation_begin() #else // defined(BOOST_ASIO_WINDOWS) "@asio|%llu.%06llu|>%llu|\n", #endif // defined(BOOST_ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds); + timestamp.seconds, timestamp.microseconds, id_); invoked_ = true; } @@ -244,7 +244,7 @@ void handler_tracking::completion::invocation_end() #else // defined(BOOST_ASIO_WINDOWS) "@asio|%llu.%06llu|<%llu|\n", #endif // defined(BOOST_ASIO_WINDOWS) - timestamp.seconds, timestamp.microseconds); + timestamp.seconds, timestamp.microseconds, id_); id_ = 0; } diff --git a/3party/boost/boost/asio/detail/impl/kqueue_reactor.hpp b/3party/boost/boost/asio/detail/impl/kqueue_reactor.hpp index 9b3d40f985..889ae26049 100644 --- a/3party/boost/boost/asio/detail/impl/kqueue_reactor.hpp +++ b/3party/boost/boost/asio/detail/impl/kqueue_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/kqueue_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/impl/kqueue_reactor.ipp b/3party/boost/boost/asio/detail/impl/kqueue_reactor.ipp index d23d3e3c1f..7a026a9345 100644 --- a/3party/boost/boost/asio/detail/impl/kqueue_reactor.ipp +++ b/3party/boost/boost/asio/detail/impl/kqueue_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/kqueue_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -47,10 +47,15 @@ kqueue_reactor::kqueue_reactor(boost::asio::io_service& io_service) interrupter_(), shutdown_(false) { - // The interrupter is put into a permanently readable state. Whenever we want - // to interrupt the blocked kevent call we register a read operation against - // the descriptor. - interrupter_.interrupt(); + struct kevent event; + BOOST_ASIO_KQUEUE_EV_SET(&event, interrupter_.read_descriptor(), + EVFILT_READ, EV_ADD, 0, 0, &interrupter_); + if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1) + { + boost::system::error_code error(errno, + boost::asio::error::get_system_category()); + boost::asio::detail::throw_error(error); + } } kqueue_reactor::~kqueue_reactor() @@ -89,26 +94,27 @@ void kqueue_reactor::fork_service(boost::asio::io_service::fork_event fork_ev) interrupter_.recreate(); + struct kevent event; + BOOST_ASIO_KQUEUE_EV_SET(&event, interrupter_.read_descriptor(), + EVFILT_READ, EV_ADD, 0, 0, &interrupter_); + if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1) + { + boost::system::error_code error(errno, + boost::asio::error::get_system_category()); + boost::asio::detail::throw_error(error); + } + // Re-register all descriptors with kqueue. mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); for (descriptor_state* state = registered_descriptors_.first(); state != 0; state = state->next_) { struct kevent events[2]; - int num_events = 0; - - if (!state->op_queue_[read_op].empty()) - BOOST_ASIO_KQUEUE_EV_SET(&events[num_events++], state->descriptor_, - EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, state); - else if (!state->op_queue_[except_op].empty()) - BOOST_ASIO_KQUEUE_EV_SET(&events[num_events++], state->descriptor_, - EVFILT_READ, EV_ADD | EV_CLEAR, EV_OOBAND, 0, state); - - if (!state->op_queue_[write_op].empty()) - BOOST_ASIO_KQUEUE_EV_SET(&events[num_events++], state->descriptor_, - EVFILT_WRITE, EV_ADD | EV_CLEAR, 0, 0, state); - - if (num_events && ::kevent(kqueue_fd_, events, num_events, 0, 0, 0) == -1) + BOOST_ASIO_KQUEUE_EV_SET(&events[0], state->descriptor_, + EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, state); + BOOST_ASIO_KQUEUE_EV_SET(&events[1], state->descriptor_, + EVFILT_WRITE, EV_ADD | EV_CLEAR, 0, 0, state); + if (::kevent(kqueue_fd_, events, 2, 0, 0, 0) == -1) { boost::system::error_code error(errno, boost::asio::error::get_system_category()); @@ -133,6 +139,14 @@ int kqueue_reactor::register_descriptor(socket_type descriptor, descriptor_data->descriptor_ = descriptor; descriptor_data->shutdown_ = false; + struct kevent events[2]; + BOOST_ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ, + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); + BOOST_ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE, + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); + if (::kevent(kqueue_fd_, events, 2, 0, 0, 0) == -1) + return errno; + return 0; } @@ -148,23 +162,13 @@ int kqueue_reactor::register_internal_descriptor( descriptor_data->shutdown_ = false; descriptor_data->op_queue_[op_type].push(op); - struct kevent event; - switch (op_type) - { - case read_op: - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - break; - case write_op: - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_WRITE, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - break; - case except_op: - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, EV_OOBAND, 0, descriptor_data); - break; - } - ::kevent(kqueue_fd_, &event, 1, 0, 0, 0); + struct kevent events[2]; + BOOST_ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ, + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); + BOOST_ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE, + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); + if (::kevent(kqueue_fd_, events, 2, 0, 0, 0) == -1) + return errno; return 0; } @@ -199,52 +203,30 @@ void kqueue_reactor::start_op(int op_type, socket_type descriptor, bool first = descriptor_data->op_queue_[op_type].empty(); if (first) { - if (allow_speculative) + if (allow_speculative + && (op_type != read_op + || descriptor_data->op_queue_[except_op].empty())) { - if (op_type != read_op || descriptor_data->op_queue_[except_op].empty()) + if (op->perform()) { - if (op->perform()) - { - descriptor_lock.unlock(); - io_service_.post_immediate_completion(op, is_continuation); - return; - } + descriptor_lock.unlock(); + io_service_.post_immediate_completion(op, is_continuation); + return; } } + else + { + struct kevent events[2]; + BOOST_ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ, + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); + BOOST_ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE, + EV_ADD | EV_CLEAR, 0, 0, descriptor_data); + ::kevent(kqueue_fd_, events, 2, 0, 0, 0); + } } descriptor_data->op_queue_[op_type].push(op); io_service_.work_started(); - - if (first) - { - struct kevent event; - switch (op_type) - { - case read_op: - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - break; - case write_op: - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_WRITE, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - break; - case except_op: - if (!descriptor_data->op_queue_[read_op].empty()) - return; // Already registered for read events. - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, EV_OOBAND, 0, descriptor_data); - break; - } - - if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1) - { - op->ec_ = boost::system::error_code(errno, - boost::asio::error::get_system_category()); - descriptor_data->op_queue_[op_type].pop(); - io_service_.post_deferred_completion(op); - } - } } void kqueue_reactor::cancel_ops(socket_type, @@ -367,12 +349,10 @@ void kqueue_reactor::run(bool block, op_queue& ops) // Dispatch the waiting events. for (int i = 0; i < num_events; ++i) { - int descriptor = static_cast(events[i].ident); void* ptr = reinterpret_cast(events[i].udata); if (ptr == &interrupter_) { - // No need to reset the interrupter since we're leaving the descriptor - // in a ready-to-read state and relying on edge-triggered notifications. + interrupter_.reset(); } else { @@ -414,45 +394,6 @@ void kqueue_reactor::run(bool block, op_queue& ops) } } } - - // Renew registration for event notifications. - struct kevent event; - switch (events[i].filter) - { - case EVFILT_READ: - if (!descriptor_data->op_queue_[read_op].empty()) - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - else if (!descriptor_data->op_queue_[except_op].empty()) - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ, - EV_ADD | EV_CLEAR, EV_OOBAND, 0, descriptor_data); - else - continue; - break; - case EVFILT_WRITE: - if (!descriptor_data->op_queue_[write_op].empty()) - BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_WRITE, - EV_ADD | EV_CLEAR, 0, 0, descriptor_data); - else - continue; - break; - default: - break; - } - if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1) - { - boost::system::error_code error(errno, - boost::asio::error::get_system_category()); - for (int j = 0; j < max_ops; ++j) - { - while (reactor_op* op = descriptor_data->op_queue_[j].front()) - { - op->ec_ = error; - descriptor_data->op_queue_[j].pop(); - ops.push(op); - } - } - } } } @@ -462,10 +403,7 @@ void kqueue_reactor::run(bool block, op_queue& ops) void kqueue_reactor::interrupt() { - struct kevent event; - BOOST_ASIO_KQUEUE_EV_SET(&event, interrupter_.read_descriptor(), - EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, &interrupter_); - ::kevent(kqueue_fd_, &event, 1, 0, 0, 0); + interrupter_.interrupt(); } int kqueue_reactor::do_kqueue_create() diff --git a/3party/boost/boost/asio/detail/impl/pipe_select_interrupter.ipp b/3party/boost/boost/asio/detail/impl/pipe_select_interrupter.ipp index af5177b908..556c5a2712 100644 --- a/3party/boost/boost/asio/detail/impl/pipe_select_interrupter.ipp +++ b/3party/boost/boost/asio/detail/impl/pipe_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/pipe_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,6 +17,7 @@ #include +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) #if !defined(BOOST_ASIO_WINDOWS) #if !defined(__CYGWIN__) #if !defined(__SYMBIAN32__) @@ -120,5 +121,6 @@ bool pipe_select_interrupter::reset() #endif // !defined(__SYMBIAN32__) #endif // !defined(__CYGWIN__) #endif // !defined(BOOST_ASIO_WINDOWS) +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) #endif // BOOST_ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP diff --git a/3party/boost/boost/asio/detail/impl/posix_event.ipp b/3party/boost/boost/asio/detail/impl/posix_event.ipp index a8317759be..acb0f57895 100644 --- a/3party/boost/boost/asio/detail/impl/posix_event.ipp +++ b/3party/boost/boost/asio/detail/impl/posix_event.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_event.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -30,7 +30,7 @@ namespace asio { namespace detail { posix_event::posix_event() - : signalled_(false) + : state_(0) { int error = ::pthread_cond_init(&cond_, 0); boost::system::error_code ec(error, diff --git a/3party/boost/boost/asio/detail/impl/posix_mutex.ipp b/3party/boost/boost/asio/detail/impl/posix_mutex.ipp index 6e8425ec9a..d815512e51 100644 --- a/3party/boost/boost/asio/detail/impl/posix_mutex.ipp +++ b/3party/boost/boost/asio/detail/impl/posix_mutex.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_mutex.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/posix_thread.ipp b/3party/boost/boost/asio/detail/impl/posix_thread.ipp index c9b49be3ef..4b487d93eb 100644 --- a/3party/boost/boost/asio/detail/impl/posix_thread.ipp +++ b/3party/boost/boost/asio/detail/impl/posix_thread.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_thread.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/posix_tss_ptr.ipp b/3party/boost/boost/asio/detail/impl/posix_tss_ptr.ipp index c5c62df291..65f90773dd 100644 --- a/3party/boost/boost/asio/detail/impl/posix_tss_ptr.ipp +++ b/3party/boost/boost/asio/detail/impl/posix_tss_ptr.ipp @@ -2,7 +2,7 @@ // detail/impl/posix_tss_ptr.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/reactive_descriptor_service.ipp b/3party/boost/boost/asio/detail/impl/reactive_descriptor_service.ipp index 48e2784cb5..abf4c6f384 100644 --- a/3party/boost/boost/asio/detail/impl/reactive_descriptor_service.ipp +++ b/3party/boost/boost/asio/detail/impl/reactive_descriptor_service.ipp @@ -2,7 +2,7 @@ // detail/impl/reactive_descriptor_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,7 +17,9 @@ #include -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) #include #include @@ -201,6 +203,8 @@ void reactive_descriptor_service::start_op( #include -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) #endif // BOOST_ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP diff --git a/3party/boost/boost/asio/detail/impl/reactive_serial_port_service.ipp b/3party/boost/boost/asio/detail/impl/reactive_serial_port_service.ipp index 08c20aa006..b8c2f4a4ce 100644 --- a/3party/boost/boost/asio/detail/impl/reactive_serial_port_service.ipp +++ b/3party/boost/boost/asio/detail/impl/reactive_serial_port_service.ipp @@ -2,7 +2,7 @@ // detail/impl/reactive_serial_port_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/impl/reactive_socket_service_base.ipp b/3party/boost/boost/asio/detail/impl/reactive_socket_service_base.ipp index fe7d7446e0..c72871d816 100644 --- a/3party/boost/boost/asio/detail/impl/reactive_socket_service_base.ipp +++ b/3party/boost/boost/asio/detail/impl/reactive_socket_service_base.ipp @@ -2,7 +2,7 @@ // detail/reactive_socket_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,7 +17,8 @@ #include -#if !defined(BOOST_ASIO_HAS_IOCP) +#if !defined(BOOST_ASIO_HAS_IOCP) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) #include @@ -263,5 +264,6 @@ void reactive_socket_service_base::start_connect_op( #include #endif // !defined(BOOST_ASIO_HAS_IOCP) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) #endif // BOOST_ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP diff --git a/3party/boost/boost/asio/detail/impl/resolver_service_base.ipp b/3party/boost/boost/asio/detail/impl/resolver_service_base.ipp index d34d6257b1..77b6c27792 100644 --- a/3party/boost/boost/asio/detail/impl/resolver_service_base.ipp +++ b/3party/boost/boost/asio/detail/impl/resolver_service_base.ipp @@ -2,7 +2,7 @@ // detail/impl/resolver_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/select_reactor.hpp b/3party/boost/boost/asio/detail/impl/select_reactor.hpp index 96e14b12db..f2b79f7360 100644 --- a/3party/boost/boost/asio/detail/impl/select_reactor.hpp +++ b/3party/boost/boost/asio/detail/impl/select_reactor.hpp @@ -2,7 +2,7 @@ // detail/impl/select_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -20,7 +20,8 @@ #if defined(BOOST_ASIO_HAS_IOCP) \ || (!defined(BOOST_ASIO_HAS_DEV_POLL) \ && !defined(BOOST_ASIO_HAS_EPOLL) \ - && !defined(BOOST_ASIO_HAS_KQUEUE)) + && !defined(BOOST_ASIO_HAS_KQUEUE) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME)) #include @@ -82,6 +83,7 @@ std::size_t select_reactor::cancel_timer(timer_queue& queue, #endif // defined(BOOST_ASIO_HAS_IOCP) // || (!defined(BOOST_ASIO_HAS_DEV_POLL) // && !defined(BOOST_ASIO_HAS_EPOLL) - // && !defined(BOOST_ASIO_HAS_KQUEUE)) + // && !defined(BOOST_ASIO_HAS_KQUEUE) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)) #endif // BOOST_ASIO_DETAIL_IMPL_SELECT_REACTOR_HPP diff --git a/3party/boost/boost/asio/detail/impl/select_reactor.ipp b/3party/boost/boost/asio/detail/impl/select_reactor.ipp index 4b2f030019..c8e04a26d4 100644 --- a/3party/boost/boost/asio/detail/impl/select_reactor.ipp +++ b/3party/boost/boost/asio/detail/impl/select_reactor.ipp @@ -2,7 +2,7 @@ // detail/impl/select_reactor.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -20,7 +20,8 @@ #if defined(BOOST_ASIO_HAS_IOCP) \ || (!defined(BOOST_ASIO_HAS_DEV_POLL) \ && !defined(BOOST_ASIO_HAS_EPOLL) \ - && !defined(BOOST_ASIO_HAS_KQUEUE)) + && !defined(BOOST_ASIO_HAS_KQUEUE) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME)) #include #include @@ -181,7 +182,7 @@ void select_reactor::run(bool block, op_queue& ops) for (int i = 0; i < max_select_ops; ++i) { have_work_to_do = have_work_to_do || !op_queue_[i].empty(); - op_queue_[i].get_descriptors(fd_sets_[i], ops); + fd_sets_[i].set(op_queue_[i], ops); if (fd_sets_[i].max_descriptor() > max_fd) max_fd = fd_sets_[i].max_descriptor(); } @@ -189,10 +190,10 @@ void select_reactor::run(bool block, op_queue& ops) #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) // Connection operations on Windows use both except and write fd_sets. have_work_to_do = have_work_to_do || !op_queue_[connect_op].empty(); - op_queue_[connect_op].get_descriptors(fd_sets_[write_op], ops); + fd_sets_[write_op].set(op_queue_[connect_op], ops); if (fd_sets_[write_op].max_descriptor() > max_fd) max_fd = fd_sets_[write_op].max_descriptor(); - op_queue_[connect_op].get_descriptors(fd_sets_[except_op], ops); + fd_sets_[except_op].set(op_queue_[connect_op], ops); if (fd_sets_[except_op].max_descriptor() > max_fd) max_fd = fd_sets_[except_op].max_descriptor(); #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) @@ -227,16 +228,14 @@ void select_reactor::run(bool block, op_queue& ops) { #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) // Connection operations on Windows use both except and write fd_sets. - op_queue_[connect_op].perform_operations_for_descriptors( - fd_sets_[except_op], ops); - op_queue_[connect_op].perform_operations_for_descriptors( - fd_sets_[write_op], ops); + fd_sets_[except_op].perform(op_queue_[connect_op], ops); + fd_sets_[write_op].perform(op_queue_[connect_op], ops); #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) // Exception operations must be processed first to ensure that any // out-of-band data is read before normal data. for (int i = max_select_ops - 1; i >= 0; --i) - op_queue_[i].perform_operations_for_descriptors(fd_sets_[i], ops); + fd_sets_[i].perform(op_queue_[i], ops); } timer_queues_.get_ready_timers(ops); } @@ -311,5 +310,6 @@ void select_reactor::cancel_ops_unlocked(socket_type descriptor, // || (!defined(BOOST_ASIO_HAS_DEV_POLL) // && !defined(BOOST_ASIO_HAS_EPOLL) // && !defined(BOOST_ASIO_HAS_KQUEUE)) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)) #endif // BOOST_ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP diff --git a/3party/boost/boost/asio/detail/impl/service_registry.hpp b/3party/boost/boost/asio/detail/impl/service_registry.hpp index 1defc2a564..1f71f082a2 100644 --- a/3party/boost/boost/asio/detail/impl/service_registry.hpp +++ b/3party/boost/boost/asio/detail/impl/service_registry.hpp @@ -2,7 +2,7 @@ // detail/impl/service_registry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/service_registry.ipp b/3party/boost/boost/asio/detail/impl/service_registry.ipp index 2dc242ed92..adfcaa0ff6 100644 --- a/3party/boost/boost/asio/detail/impl/service_registry.ipp +++ b/3party/boost/boost/asio/detail/impl/service_registry.ipp @@ -2,7 +2,7 @@ // detail/impl/service_registry.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/signal_set_service.ipp b/3party/boost/boost/asio/detail/impl/signal_set_service.ipp index 131b5af005..21be62f561 100644 --- a/3party/boost/boost/asio/detail/impl/signal_set_service.ipp +++ b/3party/boost/boost/asio/detail/impl/signal_set_service.ipp @@ -2,7 +2,7 @@ // detail/impl/signal_set_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -57,25 +57,33 @@ signal_state* get_signal_state() return &state; } -void asio_signal_handler(int signal_number) +void boost_asio_signal_handler(int signal_number) { -#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#if defined(BOOST_ASIO_WINDOWS) \ + || defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + || defined(__CYGWIN__) signal_set_service::deliver_signal(signal_number); -#else // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#else // defined(BOOST_ASIO_WINDOWS) + // || defined(BOOST_ASIO_WINDOWS_RUNTIME) + // || defined(__CYGWIN__) int saved_errno = errno; signal_state* state = get_signal_state(); signed_size_type result = ::write(state->write_descriptor_, &signal_number, sizeof(signal_number)); (void)result; errno = saved_errno; -#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#endif // defined(BOOST_ASIO_WINDOWS) + // || defined(BOOST_ASIO_WINDOWS_RUNTIME) + // || defined(__CYGWIN__) #if defined(BOOST_ASIO_HAS_SIGNAL) && !defined(BOOST_ASIO_HAS_SIGACTION) - ::signal(signal_number, asio_signal_handler); + ::signal(signal_number, boost_asio_signal_handler); #endif // defined(BOOST_ASIO_HAS_SIGNAL) && !defined(BOOST_ASIO_HAS_SIGACTION) } -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) class signal_set_service::pipe_read_op : public reactor_op { public: @@ -105,22 +113,32 @@ public: delete o; } }; -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) signal_set_service::signal_set_service( boost::asio::io_service& io_service) : io_service_(boost::asio::use_service(io_service)), -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) reactor_(boost::asio::use_service(io_service)), -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) next_(0), prev_(0) { get_signal_state()->mutex_.init(); -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) reactor_.init_task(); -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) for (int i = 0; i < max_signal_number; ++i) registrations_[i] = 0; @@ -155,7 +173,9 @@ void signal_set_service::shutdown_service() void signal_set_service::fork_service( boost::asio::io_service::fork_event fork_ev) { -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) signal_state* state = get_signal_state(); static_mutex::scoped_lock lock(state->mutex_); @@ -195,9 +215,13 @@ void signal_set_service::fork_service( default: break; } -#else // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#else // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) (void)fork_ev; -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) } void signal_set_service::construct( @@ -219,7 +243,7 @@ boost::system::error_code signal_set_service::add( int signal_number, boost::system::error_code& ec) { // Check that the signal number is valid. - if (signal_number < 0 || signal_number > max_signal_number) + if (signal_number < 0 || signal_number >= max_signal_number) { ec = boost::asio::error::invalid_argument; return ec; @@ -250,11 +274,11 @@ boost::system::error_code signal_set_service::add( using namespace std; // For memset. struct sigaction sa; memset(&sa, 0, sizeof(sa)); - sa.sa_handler = asio_signal_handler; + sa.sa_handler = boost_asio_signal_handler; sigfillset(&sa.sa_mask); if (::sigaction(signal_number, &sa, 0) == -1) # else // defined(BOOST_ASIO_HAS_SIGACTION) - if (::signal(signal_number, asio_signal_handler) == SIG_ERR) + if (::signal(signal_number, boost_asio_signal_handler) == SIG_ERR) # endif // defined(BOOST_ASIO_HAS_SIGACTION) { # if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) @@ -293,7 +317,7 @@ boost::system::error_code signal_set_service::remove( int signal_number, boost::system::error_code& ec) { // Check that the signal number is valid. - if (signal_number < 0 || signal_number > max_signal_number) + if (signal_number < 0 || signal_number >= max_signal_number) { ec = boost::asio::error::invalid_argument; return ec; @@ -489,13 +513,17 @@ void signal_set_service::add_service(signal_set_service* service) state->service_list_->prev_ = service; state->service_list_ = service; -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) // Register for pipe readiness notifications. int read_descriptor = state->read_descriptor_; lock.unlock(); service->reactor_.register_internal_descriptor(reactor::read_op, read_descriptor, service->reactor_data_, new pipe_read_op); -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) } void signal_set_service::remove_service(signal_set_service* service) @@ -505,14 +533,18 @@ void signal_set_service::remove_service(signal_set_service* service) if (service->next_ || service->prev_ || state->service_list_ == service) { -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) // Disable the pipe readiness notifications. int read_descriptor = state->read_descriptor_; lock.unlock(); service->reactor_.deregister_descriptor( read_descriptor, service->reactor_data_, false); lock.lock(); -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) // Remove service from linked list of all services. if (state->service_list_ == service) @@ -534,7 +566,9 @@ void signal_set_service::remove_service(signal_set_service* service) void signal_set_service::open_descriptors() { -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) signal_state* state = get_signal_state(); int pipe_fds[2]; @@ -557,12 +591,16 @@ void signal_set_service::open_descriptors() boost::asio::error::get_system_category()); boost::asio::detail::throw_error(ec, "signal_set_service pipe"); } -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) } void signal_set_service::close_descriptors() { -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) signal_state* state = get_signal_state(); if (state->read_descriptor_ != -1) @@ -572,7 +610,9 @@ void signal_set_service::close_descriptors() if (state->write_descriptor_ != -1) ::close(state->write_descriptor_); state->write_descriptor_ = -1; -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) } void signal_set_service::start_wait_op( @@ -589,6 +629,7 @@ void signal_set_service::start_wait_op( if (reg->undelivered_ > 0) { --reg->undelivered_; + op->signal_number_ = reg->signal_number_; io_service_.post_deferred_completion(op); return; } diff --git a/3party/boost/boost/asio/detail/impl/socket_ops.ipp b/3party/boost/boost/asio/detail/impl/socket_ops.ipp index 5516d1c5c2..f2c9a119fe 100644 --- a/3party/boost/boost/asio/detail/impl/socket_ops.ipp +++ b/3party/boost/boost/asio/detail/impl/socket_ops.ipp @@ -2,7 +2,7 @@ // detail/impl/socket_ops.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,6 +16,7 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include + #include #include #include @@ -26,6 +27,12 @@ #include #include +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +# include +# include +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) \ || defined(__MACH__) && defined(__APPLE__) # if defined(BOOST_ASIO_HAS_PTHREADS) @@ -41,6 +48,8 @@ namespace asio { namespace detail { namespace socket_ops { +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) struct msghdr { int msg_namelen; }; #endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) @@ -52,6 +61,8 @@ extern "C" char* if_indextoname(unsigned int, char*); extern "C" unsigned int if_nametoindex(const char*); #endif // defined(__hpux) +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + inline void clear_last_error() { #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) @@ -61,6 +72,8 @@ inline void clear_last_error() #endif } +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + template inline ReturnType error_wrapper(ReturnType return_value, boost::system::error_code& ec) @@ -508,14 +521,52 @@ void sync_connect(socket_type s, const socket_addr_type* addr, boost::asio::error::get_system_category()); } -bool non_blocking_connect(socket_type s, - const socket_addr_type* addr, std::size_t addrlen, - boost::system::error_code& ec) +#if defined(BOOST_ASIO_HAS_IOCP) + +void complete_iocp_connect(socket_type s, boost::system::error_code& ec) +{ + if (!ec) + { + // Need to set the SO_UPDATE_CONNECT_CONTEXT option so that getsockname + // and getpeername will work on the connected socket. + socket_ops::state_type state = 0; + const int so_update_connect_context = 0x7010; + socket_ops::setsockopt(s, state, SOL_SOCKET, + so_update_connect_context, 0, 0, ec); + } +} + +#endif // defined(BOOST_ASIO_HAS_IOCP) + +bool non_blocking_connect(socket_type s, boost::system::error_code& ec) { // Check if the connect operation has finished. This is required since we may // get spurious readiness notifications from the reactor. - socket_ops::connect(s, addr, addrlen, ec); - if (ec == boost::asio::error::already_started) +#if defined(BOOST_ASIO_WINDOWS) \ + || defined(__CYGWIN__) \ + || defined(__SYMBIAN32__) + fd_set write_fds; + FD_ZERO(&write_fds); + FD_SET(s, &write_fds); + fd_set except_fds; + FD_ZERO(&except_fds); + FD_SET(s, &except_fds); + timeval zero_timeout; + zero_timeout.tv_sec = 0; + zero_timeout.tv_usec = 0; + int ready = ::select(s + 1, 0, &write_fds, &except_fds, &zero_timeout); +#else // defined(BOOST_ASIO_WINDOWS) + // || defined(__CYGWIN__) + // || defined(__SYMBIAN32__) + pollfd fds; + fds.fd = s; + fds.events = POLLOUT; + fds.revents = 0; + int ready = ::poll(&fds, 1, 0); +#endif // defined(BOOST_ASIO_WINDOWS) + // || defined(__CYGWIN__) + // || defined(__SYMBIAN32__) + if (ready == 0) { // The asynchronous connect operation is still in progress. return false; @@ -1313,7 +1364,7 @@ socket_type socket(int af, int type, int protocol, if (s == invalid_socket) return s; - if (af == AF_INET6) + if (af == BOOST_ASIO_OS_DEF(AF_INET6)) { // Try to enable the POSIX default behaviour of having IPV6_V6ONLY set to // false. This will only succeed on Windows Vista and later versions of @@ -1731,7 +1782,7 @@ int poll_read(socket_type s, state_type state, boost::system::error_code& ec) zero_timeout.tv_usec = 0; timeval* timeout = (state & user_set_non_blocking) ? &zero_timeout : 0; clear_last_error(); - int result = error_wrapper(::select(s, &fds, 0, 0, timeout), ec); + int result = error_wrapper(::select(s + 1, &fds, 0, 0, timeout), ec); #else // defined(BOOST_ASIO_WINDOWS) // || defined(__CYGWIN__) // || defined(__SYMBIAN32__) @@ -1772,7 +1823,7 @@ int poll_write(socket_type s, state_type state, boost::system::error_code& ec) zero_timeout.tv_usec = 0; timeval* timeout = (state & user_set_non_blocking) ? &zero_timeout : 0; clear_last_error(); - int result = error_wrapper(::select(s, 0, &fds, 0, timeout), ec); + int result = error_wrapper(::select(s + 1, 0, &fds, 0, timeout), ec); #else // defined(BOOST_ASIO_WINDOWS) // || defined(__CYGWIN__) // || defined(__SYMBIAN32__) @@ -1812,7 +1863,8 @@ int poll_connect(socket_type s, boost::system::error_code& ec) FD_ZERO(&except_fds); FD_SET(s, &except_fds); clear_last_error(); - int result = error_wrapper(::select(s, 0, &write_fds, &except_fds, 0), ec); + int result = error_wrapper(::select( + s + 1, 0, &write_fds, &except_fds, 0), ec); if (result >= 0) ec = boost::system::error_code(); return result; @@ -1833,14 +1885,51 @@ int poll_connect(socket_type s, boost::system::error_code& ec) // || defined(__SYMBIAN32__) } +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + const char* inet_ntop(int af, const void* src, char* dest, size_t length, unsigned long scope_id, boost::system::error_code& ec) { clear_last_error(); -#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + using namespace std; // For sprintf. + const unsigned char* bytes = static_cast(src); + if (af == BOOST_ASIO_OS_DEF(AF_INET)) + { + sprintf_s(dest, length, "%u.%u.%u.%u", + bytes[0], bytes[1], bytes[2], bytes[3]); + return dest; + } + else if (af == BOOST_ASIO_OS_DEF(AF_INET6)) + { + size_t n = 0, b = 0, z = 0; + while (n < length && b < 16) + { + if (bytes[b] == 0 && bytes[b + 1] == 0 && z == 0) + { + do b += 2; while (b < 16 && bytes[b] == 0 && bytes[b + 1] == 0); + n += sprintf_s(dest + n, length - n, ":%s", b < 16 ? "" : ":"), ++z; + } + else + { + n += sprintf_s(dest + n, length - n, "%s%x", b ? ":" : "", + (static_cast(bytes[b]) << 8) | bytes[b + 1]); + b += 2; + } + } + if (scope_id) + n += sprintf_s(dest + n, length - n, "%%%lu", scope_id); + return dest; + } + else + { + ec = boost::asio::error::address_family_not_supported; + return 0; + } +#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) using namespace std; // For memcpy. - if (af != AF_INET && af != AF_INET6) + if (af != BOOST_ASIO_OS_DEF(AF_INET) && af != BOOST_ASIO_OS_DEF(AF_INET6)) { ec = boost::asio::error::address_family_not_supported; return 0; @@ -1854,17 +1943,17 @@ const char* inet_ntop(int af, const void* src, char* dest, size_t length, sockaddr_in6_type v6; } address; DWORD address_length; - if (af == AF_INET) + if (af == BOOST_ASIO_OS_DEF(AF_INET)) { address_length = sizeof(sockaddr_in4_type); - address.v4.sin_family = AF_INET; + address.v4.sin_family = BOOST_ASIO_OS_DEF(AF_INET); address.v4.sin_port = 0; memcpy(&address.v4.sin_addr, src, sizeof(in4_addr_type)); } else // AF_INET6 { address_length = sizeof(sockaddr_in6_type); - address.v6.sin6_family = AF_INET6; + address.v6.sin6_family = BOOST_ASIO_OS_DEF(AF_INET6); address.v6.sin6_port = 0; address.v6.sin6_flowinfo = 0; address.v6.sin6_scope_id = scope_id; @@ -1872,7 +1961,7 @@ const char* inet_ntop(int af, const void* src, char* dest, size_t length, } DWORD string_length = static_cast(length); -#if defined(BOOST_NO_ANSI_APIS) +#if defined(BOOST_NO_ANSI_APIS) || (defined(_MSC_VER) && (_MSC_VER >= 1800)) LPWSTR string_buffer = (LPWSTR)_alloca(length * sizeof(WCHAR)); int result = error_wrapper(::WSAAddressToStringW(&address.base, address_length, 0, string_buffer, &string_length), ec); @@ -1896,14 +1985,16 @@ const char* inet_ntop(int af, const void* src, char* dest, size_t length, af, src, dest, static_cast(length)), ec); if (result == 0 && !ec) ec = boost::asio::error::invalid_argument; - if (result != 0 && af == AF_INET6 && scope_id != 0) + if (result != 0 && af == BOOST_ASIO_OS_DEF(AF_INET6) && scope_id != 0) { using namespace std; // For strcat and sprintf. char if_name[IF_NAMESIZE + 1] = "%"; const in6_addr_type* ipv6_address = static_cast(src); bool is_link_local = ((ipv6_address->s6_addr[0] == 0xfe) && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80)); - if (!is_link_local + bool is_multicast_link_local = ((ipv6_address->s6_addr[0] == 0xff) + && ((ipv6_address->s6_addr[1] & 0x0f) == 0x02)); + if ((!is_link_local && !is_multicast_link_local) || if_indextoname(static_cast(scope_id), if_name + 1) == 0) sprintf(if_name + 1, "%lu", scope_id); strcat(dest, if_name); @@ -1916,10 +2007,154 @@ int inet_pton(int af, const char* src, void* dest, unsigned long* scope_id, boost::system::error_code& ec) { clear_last_error(); -#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + using namespace std; // For sscanf. + unsigned char* bytes = static_cast(dest); + if (af == BOOST_ASIO_OS_DEF(AF_INET)) + { + unsigned int b0, b1, b2, b3; + if (sscanf_s(src, "%u.%u.%u.%u", &b0, &b1, &b2, &b3) != 4) + { + ec = boost::asio::error::invalid_argument; + return -1; + } + if (b0 > 255 || b1 > 255 || b2 > 255 || b3 > 255) + { + ec = boost::asio::error::invalid_argument; + return -1; + } + bytes[0] = static_cast(b0); + bytes[1] = static_cast(b1); + bytes[2] = static_cast(b2); + bytes[3] = static_cast(b3); + ec = boost::system::error_code(); + return 1; + } + else if (af == BOOST_ASIO_OS_DEF(AF_INET6)) + { + unsigned char* bytes = static_cast(dest); + std::memset(bytes, 0, 16); + unsigned char back_bytes[16] = { 0 }; + int num_front_bytes = 0, num_back_bytes = 0; + const char* p = src; + + enum { fword, fcolon, bword, scope, done } state = fword; + unsigned long current_word = 0; + while (state != done) + { + if (current_word > 0xFFFF) + { + ec = boost::asio::error::invalid_argument; + return -1; + } + + switch (state) + { + case fword: + if (*p >= '0' && *p <= '9') + current_word = current_word * 16 + *p++ - '0'; + else if (*p >= 'a' && *p <= 'f') + current_word = current_word * 16 + *p++ - 'a' + 10; + else if (*p >= 'A' && *p <= 'F') + current_word = current_word * 16 + *p++ - 'A' + 10; + else + { + if (num_front_bytes == 16) + { + ec = boost::asio::error::invalid_argument; + return -1; + } + + bytes[num_front_bytes++] = (current_word >> 8) & 0xFF; + bytes[num_front_bytes++] = current_word & 0xFF; + current_word = 0; + + if (*p == ':') + state = fcolon, ++p; + else if (*p == '%') + state = scope, ++p; + else if (*p == 0) + state = done; + else + { + ec = boost::asio::error::invalid_argument; + return -1; + } + } + break; + + case fcolon: + if (*p == ':') + state = bword, ++p; + else + state = fword; + break; + + case bword: + if (*p >= '0' && *p <= '9') + current_word = current_word * 16 + *p++ - '0'; + else if (*p >= 'a' && *p <= 'f') + current_word = current_word * 16 + *p++ - 'a' + 10; + else if (*p >= 'A' && *p <= 'F') + current_word = current_word * 16 + *p++ - 'A' + 10; + else + { + if (num_front_bytes + num_back_bytes == 16) + { + ec = boost::asio::error::invalid_argument; + return -1; + } + + back_bytes[num_back_bytes++] = (current_word >> 8) & 0xFF; + back_bytes[num_back_bytes++] = current_word & 0xFF; + current_word = 0; + + if (*p == ':') + state = bword, ++p; + else if (*p == '%') + state = scope, ++p; + else if (*p == 0) + state = done; + else + { + ec = boost::asio::error::invalid_argument; + return -1; + } + } + break; + + case scope: + if (*p >= '0' && *p <= '9') + current_word = current_word * 10 + *p++ - '0'; + else if (*p == 0) + *scope_id = current_word, state = done; + else + { + ec = boost::asio::error::invalid_argument; + return -1; + } + break; + + default: + break; + } + } + + for (int i = 0; i < num_back_bytes; ++i) + bytes[16 - num_back_bytes + i] = back_bytes[i]; + + ec = boost::system::error_code(); + return 1; + } + else + { + ec = boost::asio::error::address_family_not_supported; + return -1; + } +#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) using namespace std; // For memcpy and strcmp. - if (af != AF_INET && af != AF_INET6) + if (af != BOOST_ASIO_OS_DEF(AF_INET) && af != BOOST_ASIO_OS_DEF(AF_INET6)) { ec = boost::asio::error::address_family_not_supported; return -1; @@ -1933,7 +2168,7 @@ int inet_pton(int af, const char* src, void* dest, sockaddr_in6_type v6; } address; int address_length = sizeof(sockaddr_storage_type); -#if defined(BOOST_NO_ANSI_APIS) +#if defined(BOOST_NO_ANSI_APIS) || (defined(_MSC_VER) && (_MSC_VER >= 1800)) int num_wide_chars = strlen(src) + 1; LPWSTR wide_buffer = (LPWSTR)_alloca(num_wide_chars * sizeof(WCHAR)); ::MultiByteToWideChar(CP_ACP, 0, src, -1, wide_buffer, num_wide_chars); @@ -1944,7 +2179,7 @@ int inet_pton(int af, const char* src, void* dest, const_cast(src), af, 0, &address.base, &address_length), ec); #endif - if (af == AF_INET) + if (af == BOOST_ASIO_OS_DEF(AF_INET)) { if (result != socket_error_retval) { @@ -1980,7 +2215,7 @@ int inet_pton(int af, const char* src, void* dest, int result = error_wrapper(::inet_pton(af, src, dest), ec); if (result <= 0 && !ec) ec = boost::asio::error::invalid_argument; - if (result > 0 && af == AF_INET6 && scope_id) + if (result > 0 && af == BOOST_ASIO_OS_DEF(AF_INET6) && scope_id) { using namespace std; // For strchr and atoi. *scope_id = 0; @@ -1989,7 +2224,9 @@ int inet_pton(int af, const char* src, void* dest, in6_addr_type* ipv6_address = static_cast(dest); bool is_link_local = ((ipv6_address->s6_addr[0] == 0xfe) && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80)); - if (is_link_local) + bool is_multicast_link_local = ((ipv6_address->s6_addr[0] == 0xff) + && ((ipv6_address->s6_addr[1] & 0x0f) == 0x02)); + if (is_link_local || is_multicast_link_local) *scope_id = if_nametoindex(if_name + 1); if (*scope_id == 0) *scope_id = atoi(if_name + 1); @@ -2002,16 +2239,48 @@ int inet_pton(int af, const char* src, void* dest, int gethostname(char* name, int namelen, boost::system::error_code& ec) { clear_last_error(); +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + try + { + using namespace Windows::Foundation::Collections; + using namespace Windows::Networking; + using namespace Windows::Networking::Connectivity; + IVectorView^ hostnames = NetworkInformation::GetHostNames(); + for (unsigned i = 0; i < hostnames->Size; ++i) + { + HostName^ hostname = hostnames->GetAt(i); + if (hostname->Type == HostNameType::DomainName) + { + std::wstring_convert> converter; + std::string raw_name = converter.to_bytes(hostname->RawName->Data()); + if (namelen > 0 && raw_name.size() < static_cast(namelen)) + { + strcpy_s(name, namelen, raw_name.c_str()); + return 0; + } + } + } + return -1; + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + return -1; + } +#else // defined(BOOST_ASIO_WINDOWS_RUNTIME) int result = error_wrapper(::gethostname(name, namelen), ec); -#if defined(BOOST_ASIO_WINDOWS) +# if defined(BOOST_ASIO_WINDOWS) if (result == 0) ec = boost::system::error_code(); -#endif +# endif // defined(BOOST_ASIO_WINDOWS) return result; +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) } -#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) \ - || defined(__MACH__) && defined(__APPLE__) +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#if !defined(BOOST_ASIO_HAS_GETADDRINFO) // The following functions are only needed for emulation of getaddrinfo and // getnameinfo. @@ -2087,7 +2356,7 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result, (void)(buffer); (void)(buflength); (void)(ai_flags); - if (af != AF_INET) + if (af != BOOST_ASIO_OS_DEF(AF_INET)) { ec = boost::asio::error::address_family_not_supported; return 0; @@ -2100,7 +2369,7 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result, return result; #elif defined(__sun) || defined(__QNX__) (void)(ai_flags); - if (af != AF_INET) + if (af != BOOST_ASIO_OS_DEF(AF_INET)) { ec = boost::asio::error::address_family_not_supported; return 0; @@ -2125,7 +2394,7 @@ inline hostent* gethostbyname(const char* name, int af, struct hostent* result, return retval; #else (void)(ai_flags); - if (af != AF_INET) + if (af != BOOST_ASIO_OS_DEF(AF_INET)) { ec = boost::asio::error::address_family_not_supported; return 0; @@ -2170,22 +2439,22 @@ inline int gai_nsearch(const char* host, // No host and AI_PASSIVE implies wildcard bind. switch (hints->ai_family) { - case AF_INET: + case BOOST_ASIO_OS_DEF(AF_INET): search[search_count].host = "0.0.0.0"; - search[search_count].family = AF_INET; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET); ++search_count; break; - case AF_INET6: + case BOOST_ASIO_OS_DEF(AF_INET6): search[search_count].host = "0::0"; - search[search_count].family = AF_INET6; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET6); ++search_count; break; - case AF_UNSPEC: + case BOOST_ASIO_OS_DEF(AF_UNSPEC): search[search_count].host = "0::0"; - search[search_count].family = AF_INET6; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET6); ++search_count; search[search_count].host = "0.0.0.0"; - search[search_count].family = AF_INET; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET); ++search_count; break; default: @@ -2197,22 +2466,22 @@ inline int gai_nsearch(const char* host, // No host and not AI_PASSIVE means connect to local host. switch (hints->ai_family) { - case AF_INET: + case BOOST_ASIO_OS_DEF(AF_INET): search[search_count].host = "localhost"; - search[search_count].family = AF_INET; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET); ++search_count; break; - case AF_INET6: + case BOOST_ASIO_OS_DEF(AF_INET6): search[search_count].host = "localhost"; - search[search_count].family = AF_INET6; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET6); ++search_count; break; - case AF_UNSPEC: + case BOOST_ASIO_OS_DEF(AF_UNSPEC): search[search_count].host = "localhost"; - search[search_count].family = AF_INET6; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET6); ++search_count; search[search_count].host = "localhost"; - search[search_count].family = AF_INET; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET); ++search_count; break; default: @@ -2225,22 +2494,22 @@ inline int gai_nsearch(const char* host, // Host is specified. switch (hints->ai_family) { - case AF_INET: + case BOOST_ASIO_OS_DEF(AF_INET): search[search_count].host = host; - search[search_count].family = AF_INET; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET); ++search_count; break; - case AF_INET6: + case BOOST_ASIO_OS_DEF(AF_INET6): search[search_count].host = host; - search[search_count].family = AF_INET6; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET6); ++search_count; break; - case AF_UNSPEC: + case BOOST_ASIO_OS_DEF(AF_UNSPEC): search[search_count].host = host; - search[search_count].family = AF_INET6; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET6); ++search_count; search[search_count].host = host; - search[search_count].family = AF_INET; + search[search_count].family = BOOST_ASIO_OS_DEF(AF_INET); ++search_count; break; default: @@ -2300,23 +2569,23 @@ inline int gai_aistruct(addrinfo_type*** next, const addrinfo_type* hints, switch (ai->ai_family) { - case AF_INET: + case BOOST_ASIO_OS_DEF(AF_INET): { sockaddr_in4_type* sinptr = gai_alloc(); if (sinptr == 0) return EAI_MEMORY; - sinptr->sin_family = AF_INET; + sinptr->sin_family = BOOST_ASIO_OS_DEF(AF_INET); memcpy(&sinptr->sin_addr, addr, sizeof(in4_addr_type)); ai->ai_addr = reinterpret_cast(sinptr); ai->ai_addrlen = sizeof(sockaddr_in4_type); break; } - case AF_INET6: + case BOOST_ASIO_OS_DEF(AF_INET6): { sockaddr_in6_type* sin6ptr = gai_alloc(); if (sin6ptr == 0) return EAI_MEMORY; - sin6ptr->sin6_family = AF_INET6; + sin6ptr->sin6_family = BOOST_ASIO_OS_DEF(AF_INET6); memcpy(&sin6ptr->sin6_addr, addr, sizeof(in6_addr_type)); ai->ai_addr = reinterpret_cast(sin6ptr); ai->ai_addrlen = sizeof(sockaddr_in6_type); @@ -2378,7 +2647,7 @@ inline int gai_port(addrinfo_type* aihead, int port, int socktype) switch (ai->ai_family) { - case AF_INET: + case BOOST_ASIO_OS_DEF(AF_INET): { sockaddr_in4_type* sinptr = reinterpret_cast(ai->ai_addr); @@ -2386,7 +2655,7 @@ inline int gai_port(addrinfo_type* aihead, int port, int socktype) ++num_found; break; } - case AF_INET6: + case BOOST_ASIO_OS_DEF(AF_INET6): { sockaddr_in6_type* sin6ptr = reinterpret_cast(ai->ai_addr); @@ -2495,10 +2764,10 @@ inline int gai_echeck(const char* host, const char* service, // Check combination of family and socket type. switch (family) { - case AF_UNSPEC: + case BOOST_ASIO_OS_DEF(AF_UNSPEC): break; - case AF_INET: - case AF_INET6: + case BOOST_ASIO_OS_DEF(AF_INET): + case BOOST_ASIO_OS_DEF(AF_INET6): if (service != 0 && service[0] != '\0') if (socktype != 0 && socktype != SOCK_STREAM && socktype != SOCK_DGRAM) return EAI_SOCKTYPE; @@ -2533,18 +2802,18 @@ inline int getaddrinfo_emulation(const char* host, const char* service, // Supply default hints if not specified by caller. addrinfo_type hints = addrinfo_type(); - hints.ai_family = AF_UNSPEC; + hints.ai_family = BOOST_ASIO_OS_DEF(AF_UNSPEC); if (hintsp) hints = *hintsp; // If the resolution is not specifically for AF_INET6, remove the AI_V4MAPPED // and AI_ALL flags. #if defined(AI_V4MAPPED) - if (hints.ai_family != AF_INET6) + if (hints.ai_family != BOOST_ASIO_OS_DEF(AF_INET6)) hints.ai_flags &= ~AI_V4MAPPED; #endif #if defined(AI_ALL) - if (hints.ai_family != AF_INET6) + if (hints.ai_family != BOOST_ASIO_OS_DEF(AF_INET6)) hints.ai_flags &= ~AI_ALL; #endif @@ -2564,17 +2833,19 @@ inline int getaddrinfo_emulation(const char* host, const char* service, // Check for IPv4 dotted decimal string. in4_addr_type inaddr; boost::system::error_code ec; - if (socket_ops::inet_pton(AF_INET, sptr->host, &inaddr, 0, ec) == 1) + if (socket_ops::inet_pton(BOOST_ASIO_OS_DEF(AF_INET), + sptr->host, &inaddr, 0, ec) == 1) { - if (hints.ai_family != AF_UNSPEC && hints.ai_family != AF_INET) + if (hints.ai_family != BOOST_ASIO_OS_DEF(AF_UNSPEC) + && hints.ai_family != BOOST_ASIO_OS_DEF(AF_INET)) { freeaddrinfo_emulation(aihead); gai_free(canon); return EAI_FAMILY; } - if (sptr->family == AF_INET) + if (sptr->family == BOOST_ASIO_OS_DEF(AF_INET)) { - rc = gai_aistruct(&ainext, &hints, &inaddr, AF_INET); + rc = gai_aistruct(&ainext, &hints, &inaddr, BOOST_ASIO_OS_DEF(AF_INET)); if (rc != 0) { freeaddrinfo_emulation(aihead); @@ -2587,17 +2858,20 @@ inline int getaddrinfo_emulation(const char* host, const char* service, // Check for IPv6 hex string. in6_addr_type in6addr; - if (socket_ops::inet_pton(AF_INET6, sptr->host, &in6addr, 0, ec) == 1) + if (socket_ops::inet_pton(BOOST_ASIO_OS_DEF(AF_INET6), + sptr->host, &in6addr, 0, ec) == 1) { - if (hints.ai_family != AF_UNSPEC && hints.ai_family != AF_INET6) + if (hints.ai_family != BOOST_ASIO_OS_DEF(AF_UNSPEC) + && hints.ai_family != BOOST_ASIO_OS_DEF(AF_INET6)) { freeaddrinfo_emulation(aihead); gai_free(canon); return EAI_FAMILY; } - if (sptr->family == AF_INET6) + if (sptr->family == BOOST_ASIO_OS_DEF(AF_INET6)) { - rc = gai_aistruct(&ainext, &hints, &in6addr, AF_INET6); + rc = gai_aistruct(&ainext, &hints, &in6addr, + BOOST_ASIO_OS_DEF(AF_INET6)); if (rc != 0) { freeaddrinfo_emulation(aihead); @@ -2634,7 +2908,8 @@ inline int getaddrinfo_emulation(const char* host, const char* service, } // Check for address family mismatch if one was specified. - if (hints.ai_family != AF_UNSPEC && hints.ai_family != hptr->h_addrtype) + if (hints.ai_family != BOOST_ASIO_OS_DEF(AF_UNSPEC) + && hints.ai_family != hptr->h_addrtype) { freeaddrinfo_emulation(aihead); gai_free(canon); @@ -2730,7 +3005,7 @@ inline boost::system::error_code getnameinfo_emulation( unsigned short port; switch (sa->sa_family) { - case AF_INET: + case BOOST_ASIO_OS_DEF(AF_INET): if (salen != sizeof(sockaddr_in4_type)) { return ec = boost::asio::error::invalid_argument; @@ -2740,7 +3015,7 @@ inline boost::system::error_code getnameinfo_emulation( addr_len = sizeof(in4_addr_type); port = reinterpret_cast(sa)->sin_port; break; - case AF_INET6: + case BOOST_ASIO_OS_DEF(AF_INET6): if (salen != sizeof(sockaddr_in6_type)) { return ec = boost::asio::error::invalid_argument; @@ -2846,8 +3121,7 @@ inline boost::system::error_code getnameinfo_emulation( return ec; } -#endif // defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) - // || defined(__MACH__) && defined(__APPLE__) +#endif // !defined(BOOST_ASIO_HAS_GETADDRINFO) inline boost::system::error_code translate_addrinfo_error(int error) { @@ -2896,7 +3170,7 @@ boost::system::error_code getaddrinfo(const char* host, service = (service && *service) ? service : 0; clear_last_error(); #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) || defined(UNDER_CE) +# if defined(BOOST_ASIO_HAS_GETADDRINFO) // Building for Windows XP, Windows Server 2003, or later. int error = ::getaddrinfo(host, service, &hints, result); return ec = translate_addrinfo_error(error); @@ -2915,7 +3189,7 @@ boost::system::error_code getaddrinfo(const char* host, int error = getaddrinfo_emulation(host, service, &hints, result); return ec = translate_addrinfo_error(error); # endif -#elif defined(__MACH__) && defined(__APPLE__) +#elif !defined(BOOST_ASIO_HAS_GETADDRINFO) int error = getaddrinfo_emulation(host, service, &hints, result); return ec = translate_addrinfo_error(error); #else @@ -2939,7 +3213,7 @@ boost::system::error_code background_getaddrinfo( void freeaddrinfo(addrinfo_type* ai) { #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) || defined(UNDER_CE) +# if defined(BOOST_ASIO_HAS_GETADDRINFO) // Building for Windows XP, Windows Server 2003, or later. ::freeaddrinfo(ai); # else @@ -2955,7 +3229,7 @@ void freeaddrinfo(addrinfo_type* ai) } freeaddrinfo_emulation(ai); # endif -#elif defined(__MACH__) && defined(__APPLE__) +#elif !defined(BOOST_ASIO_HAS_GETADDRINFO) freeaddrinfo_emulation(ai); #else ::freeaddrinfo(ai); @@ -2967,7 +3241,7 @@ boost::system::error_code getnameinfo(const socket_addr_type* addr, char* serv, std::size_t servlen, int flags, boost::system::error_code& ec) { #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) -# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) || defined(UNDER_CE) +# if defined(BOOST_ASIO_HAS_GETADDRINFO) // Building for Windows XP, Windows Server 2003, or later. clear_last_error(); int error = ::getnameinfo(addr, static_cast(addrlen), @@ -2993,7 +3267,7 @@ boost::system::error_code getnameinfo(const socket_addr_type* addr, return getnameinfo_emulation(addr, addrlen, host, hostlen, serv, servlen, flags, ec); # endif -#elif defined(__MACH__) && defined(__APPLE__) +#elif !defined(BOOST_ASIO_HAS_GETADDRINFO) using namespace std; // For memcpy. sockaddr_storage_type tmp_addr; memcpy(&tmp_addr, addr, addrlen); @@ -3055,24 +3329,60 @@ boost::system::error_code background_getnameinfo( return ec; } +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + u_long_type network_to_host_long(u_long_type value) { +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + unsigned char* value_p = reinterpret_cast(&value); + u_long_type result = (static_cast(value_p[0]) << 24) + | (static_cast(value_p[1]) << 16) + | (static_cast(value_p[2]) << 8) + | static_cast(value_p[3]); + return result; +#else // defined(BOOST_ASIO_WINDOWS_RUNTIME) return ntohl(value); +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) } u_long_type host_to_network_long(u_long_type value) { +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + u_long_type result; + unsigned char* result_p = reinterpret_cast(&result); + result_p[0] = static_cast((value >> 24) & 0xFF); + result_p[1] = static_cast((value >> 16) & 0xFF); + result_p[2] = static_cast((value >> 8) & 0xFF); + result_p[3] = static_cast(value & 0xFF); + return result; +#else // defined(BOOST_ASIO_WINDOWS_RUNTIME) return htonl(value); +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) } u_short_type network_to_host_short(u_short_type value) { +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + unsigned char* value_p = reinterpret_cast(&value); + u_short_type result = (static_cast(value_p[0]) << 8) + | static_cast(value_p[1]); + return result; +#else // defined(BOOST_ASIO_WINDOWS_RUNTIME) return ntohs(value); +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) } u_short_type host_to_network_short(u_short_type value) { +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + u_long_type result; + unsigned char* result_p = reinterpret_cast(&result); + result_p[0] = static_cast((value >> 8) & 0xFF); + result_p[1] = static_cast(value & 0xFF); + return result; +#else // defined(BOOST_ASIO_WINDOWS_RUNTIME) return htons(value); +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) } } // namespace socket_ops diff --git a/3party/boost/boost/asio/detail/impl/socket_select_interrupter.ipp b/3party/boost/boost/asio/detail/impl/socket_select_interrupter.ipp index f9ce5fde6a..e2dedc7c2f 100644 --- a/3party/boost/boost/asio/detail/impl/socket_select_interrupter.ipp +++ b/3party/boost/boost/asio/detail/impl/socket_select_interrupter.ipp @@ -2,7 +2,7 @@ // detail/impl/socket_select_interrupter.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,6 +17,8 @@ #include +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #if defined(BOOST_ASIO_WINDOWS) \ || defined(__CYGWIN__) \ || defined(__SYMBIAN32__) @@ -57,7 +59,7 @@ void socket_select_interrupter::open_descriptors() std::size_t addr_len = sizeof(addr); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; - addr.sin_addr.s_addr = inet_addr("127.0.0.1"); + addr.sin_addr.s_addr = socket_ops::host_to_network_long(INADDR_LOOPBACK); addr.sin_port = 0; if (socket_ops::bind(acceptor.get(), (const socket_addr_type*)&addr, addr_len, ec) == socket_error_retval) @@ -70,7 +72,7 @@ void socket_select_interrupter::open_descriptors() // Some broken firewalls on Windows will intermittently cause getsockname to // return 0.0.0.0 when the socket is actually bound to 127.0.0.1. We // explicitly specify the target address here to work around this problem. - addr.sin_addr.s_addr = inet_addr("127.0.0.1"); + addr.sin_addr.s_addr = socket_ops::host_to_network_long(INADDR_LOOPBACK); if (socket_ops::listen(acceptor.get(), SOMAXCONN, ec) == socket_error_retval) @@ -170,4 +172,6 @@ bool socket_select_interrupter::reset() // || defined(__CYGWIN__) // || defined(__SYMBIAN32__) +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #endif // BOOST_ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP diff --git a/3party/boost/boost/asio/detail/impl/strand_service.hpp b/3party/boost/boost/asio/detail/impl/strand_service.hpp index 25b542f80e..17227f9ed6 100644 --- a/3party/boost/boost/asio/detail/impl/strand_service.hpp +++ b/3party/boost/boost/asio/detail/impl/strand_service.hpp @@ -2,7 +2,7 @@ // detail/impl/strand_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/strand_service.ipp b/3party/boost/boost/asio/detail/impl/strand_service.ipp index 2a04a51191..9af01287af 100644 --- a/3party/boost/boost/asio/detail/impl/strand_service.ipp +++ b/3party/boost/boost/asio/detail/impl/strand_service.ipp @@ -2,7 +2,7 @@ // detail/impl/strand_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/task_io_service.hpp b/3party/boost/boost/asio/detail/impl/task_io_service.hpp index f222cde43c..4312de72f6 100644 --- a/3party/boost/boost/asio/detail/impl/task_io_service.hpp +++ b/3party/boost/boost/asio/detail/impl/task_io_service.hpp @@ -2,7 +2,7 @@ // detail/impl/task_io_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/task_io_service.ipp b/3party/boost/boost/asio/detail/impl/task_io_service.ipp index 957e095dd6..e58e11e5e3 100644 --- a/3party/boost/boost/asio/detail/impl/task_io_service.ipp +++ b/3party/boost/boost/asio/detail/impl/task_io_service.ipp @@ -2,7 +2,7 @@ // detail/impl/task_io_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -95,8 +95,7 @@ task_io_service::task_io_service( task_interrupted_(true), outstanding_work_(0), stopped_(false), - shutdown_(false), - first_idle_thread_(0) + shutdown_(false) { BOOST_ASIO_HANDLER_TRACKING_INIT; } @@ -141,10 +140,7 @@ std::size_t task_io_service::run(boost::system::error_code& ec) } thread_info this_thread; - event wakeup_event; - this_thread.wakeup_event = &wakeup_event; this_thread.private_outstanding_work = 0; - this_thread.next = 0; thread_call_stack::context ctx(this, this_thread); mutex::scoped_lock lock(mutex_); @@ -166,10 +162,7 @@ std::size_t task_io_service::run_one(boost::system::error_code& ec) } thread_info this_thread; - event wakeup_event; - this_thread.wakeup_event = &wakeup_event; this_thread.private_outstanding_work = 0; - this_thread.next = 0; thread_call_stack::context ctx(this, this_thread); mutex::scoped_lock lock(mutex_); @@ -187,9 +180,7 @@ std::size_t task_io_service::poll(boost::system::error_code& ec) } thread_info this_thread; - this_thread.wakeup_event = 0; this_thread.private_outstanding_work = 0; - this_thread.next = 0; thread_call_stack::context ctx(this, this_thread); mutex::scoped_lock lock(mutex_); @@ -220,9 +211,7 @@ std::size_t task_io_service::poll_one(boost::system::error_code& ec) } thread_info this_thread; - this_thread.wakeup_event = 0; this_thread.private_outstanding_work = 0; - this_thread.next = 0; thread_call_stack::context ctx(this, this_thread); mutex::scoped_lock lock(mutex_); @@ -270,6 +259,8 @@ void task_io_service::post_immediate_completion( return; } } +#else // defined(BOOST_ASIO_HAS_THREADS) + (void)is_continuation; #endif // defined(BOOST_ASIO_HAS_THREADS) work_started(); @@ -352,10 +343,7 @@ std::size_t task_io_service::do_run_one(mutex::scoped_lock& lock, task_interrupted_ = more_handlers; if (more_handlers && !one_thread_) - { - if (!wake_one_idle_thread_and_unlock(lock)) - lock.unlock(); - } + wakeup_event_.unlock_and_signal_one(lock); else lock.unlock(); @@ -388,11 +376,8 @@ std::size_t task_io_service::do_run_one(mutex::scoped_lock& lock, } else { - // Nothing to run right now, so just wait for work to do. - this_thread.next = first_idle_thread_; - first_idle_thread_ = &this_thread; - this_thread.wakeup_event->clear(lock); - this_thread.wakeup_event->wait(lock); + wakeup_event_.clear(lock); + wakeup_event_.wait(lock); } } @@ -425,7 +410,7 @@ std::size_t task_io_service::do_poll_one(mutex::scoped_lock& lock, o = op_queue_.front(); if (o == &task_operation_) { - wake_one_idle_thread_and_unlock(lock); + wakeup_event_.maybe_unlock_and_signal_one(lock); return 0; } } @@ -457,14 +442,7 @@ void task_io_service::stop_all_threads( mutex::scoped_lock& lock) { stopped_ = true; - - while (first_idle_thread_) - { - thread_info* idle_thread = first_idle_thread_; - first_idle_thread_ = idle_thread->next; - idle_thread->next = 0; - idle_thread->wakeup_event->signal(lock); - } + wakeup_event_.signal_all(lock); if (!task_interrupted_ && task_) { @@ -473,24 +451,10 @@ void task_io_service::stop_all_threads( } } -bool task_io_service::wake_one_idle_thread_and_unlock( - mutex::scoped_lock& lock) -{ - if (first_idle_thread_) - { - thread_info* idle_thread = first_idle_thread_; - first_idle_thread_ = idle_thread->next; - idle_thread->next = 0; - idle_thread->wakeup_event->signal_and_unlock(lock); - return true; - } - return false; -} - void task_io_service::wake_one_thread_and_unlock( mutex::scoped_lock& lock) { - if (!wake_one_idle_thread_and_unlock(lock)) + if (!wakeup_event_.maybe_unlock_and_signal_one(lock)) { if (!task_interrupted_ && task_) { diff --git a/3party/boost/boost/asio/detail/impl/throw_error.ipp b/3party/boost/boost/asio/detail/impl/throw_error.ipp index 193be0b8a2..5f6ed39ac7 100644 --- a/3party/boost/boost/asio/detail/impl/throw_error.ipp +++ b/3party/boost/boost/asio/detail/impl/throw_error.ipp @@ -2,7 +2,7 @@ // detail/impl/throw_error.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/timer_queue_ptime.ipp b/3party/boost/boost/asio/detail/impl/timer_queue_ptime.ipp index 1167f98f8d..3b16defc6e 100644 --- a/3party/boost/boost/asio/detail/impl/timer_queue_ptime.ipp +++ b/3party/boost/boost/asio/detail/impl/timer_queue_ptime.ipp @@ -2,7 +2,7 @@ // detail/impl/timer_queue_ptime.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/timer_queue_set.ipp b/3party/boost/boost/asio/detail/impl/timer_queue_set.ipp index bf23b49cbf..19b770b37c 100644 --- a/3party/boost/boost/asio/detail/impl/timer_queue_set.ipp +++ b/3party/boost/boost/asio/detail/impl/timer_queue_set.ipp @@ -2,7 +2,7 @@ // detail/impl/timer_queue_set.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/win_event.ipp b/3party/boost/boost/asio/detail/impl/win_event.ipp index 58f235e80a..a004c09689 100644 --- a/3party/boost/boost/asio/detail/impl/win_event.ipp +++ b/3party/boost/boost/asio/detail/impl/win_event.ipp @@ -2,7 +2,7 @@ // detail/win_event.ipp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -30,15 +30,32 @@ namespace asio { namespace detail { win_event::win_event() - : event_(::CreateEvent(0, true, false, 0)) + : state_(0) { - if (!event_) + events_[0] = ::CreateEvent(0, true, false, 0); + if (!events_[0]) { DWORD last_error = ::GetLastError(); boost::system::error_code ec(last_error, boost::asio::error::get_system_category()); boost::asio::detail::throw_error(ec, "event"); } + + events_[1] = ::CreateEvent(0, false, false, 0); + if (!events_[1]) + { + DWORD last_error = ::GetLastError(); + ::CloseHandle(events_[0]); + boost::system::error_code ec(last_error, + boost::asio::error::get_system_category()); + boost::asio::detail::throw_error(ec, "event"); + } +} + +win_event::~win_event() +{ + ::CloseHandle(events_[0]); + ::CloseHandle(events_[1]); } } // namespace detail diff --git a/3party/boost/boost/asio/detail/impl/win_iocp_handle_service.ipp b/3party/boost/boost/asio/detail/impl/win_iocp_handle_service.ipp index 604b019d7e..04a6791c0d 100644 --- a/3party/boost/boost/asio/detail/impl/win_iocp_handle_service.ipp +++ b/3party/boost/boost/asio/detail/impl/win_iocp_handle_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_handle_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -46,7 +46,8 @@ public: // As documented in GetQueuedCompletionStatus, setting the low order // bit of this event prevents our synchronous writes from being treated // as completion port events. - *reinterpret_cast(&hEvent) |= 1; + DWORD_PTR tmp = reinterpret_cast(hEvent); + hEvent = reinterpret_cast(tmp | 1); } else { @@ -449,7 +450,7 @@ size_t win_iocp_handle_service::do_read( ec = boost::system::error_code(last_error, boost::asio::error::get_system_category()); } - return 0; + return (last_error == ERROR_MORE_DATA) ? bytes_transferred : 0; } ec = boost::system::error_code(); diff --git a/3party/boost/boost/asio/detail/impl/win_iocp_io_service.hpp b/3party/boost/boost/asio/detail/impl/win_iocp_io_service.hpp index 26b4ab14e5..201a17e67d 100644 --- a/3party/boost/boost/asio/detail/impl/win_iocp_io_service.hpp +++ b/3party/boost/boost/asio/detail/impl/win_iocp_io_service.hpp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_io_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/win_iocp_io_service.ipp b/3party/boost/boost/asio/detail/impl/win_iocp_io_service.ipp index b63351efb5..fbc1cd0376 100644 --- a/3party/boost/boost/asio/detail/impl/win_iocp_io_service.ipp +++ b/3party/boost/boost/asio/detail/impl/win_iocp_io_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_io_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -70,12 +71,14 @@ win_iocp_io_service::win_iocp_io_service( stopped_(0), stop_event_posted_(0), shutdown_(0), + gqcs_timeout_(get_gqcs_timeout()), dispatch_required_(0) { BOOST_ASIO_HANDLER_TRACKING_INIT; iocp_.handle = ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, 0, 0, - static_cast((std::min)(concurrency_hint, DWORD(~0)))); + static_cast(concurrency_hint < DWORD(~0) + ? concurrency_hint : DWORD(~0))); if (!iocp_.handle) { DWORD last_error = ::GetLastError(); @@ -116,7 +119,7 @@ void win_iocp_io_service::shutdown_service() dword_ptr_t completion_key = 0; LPOVERLAPPED overlapped = 0; ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred, - &completion_key, &overlapped, gqcs_timeout); + &completion_key, &overlapped, gqcs_timeout_); if (overlapped) { ::InterlockedDecrement(&outstanding_work_); @@ -283,7 +286,8 @@ void win_iocp_io_service::on_pending(win_iocp_operation* op) if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1) { // Enqueue the operation on the I/O completion port. - if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, op)) + if (!::PostQueuedCompletionStatus(iocp_.handle, + 0, overlapped_contains_result, op)) { // Out of resources. Put on completed queue instead. mutex::scoped_lock lock(dispatch_mutex_); @@ -361,7 +365,7 @@ size_t win_iocp_io_service::do_one(bool block, boost::system::error_code& ec) LPOVERLAPPED overlapped = 0; ::SetLastError(0); BOOL ok = ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred, - &completion_key, &overlapped, block ? gqcs_timeout : 0); + &completion_key, &overlapped, block ? gqcs_timeout_ : 0); DWORD last_error = ::GetLastError(); if (overlapped) @@ -452,6 +456,22 @@ size_t win_iocp_io_service::do_one(bool block, boost::system::error_code& ec) } } +DWORD win_iocp_io_service::get_gqcs_timeout() +{ + OSVERSIONINFOEX osvi; + ZeroMemory(&osvi, sizeof(osvi)); + osvi.dwOSVersionInfoSize = sizeof(osvi); + osvi.dwMajorVersion = 6ul; + + const uint64_t condition_mask = ::VerSetConditionMask( + 0, VER_MAJORVERSION, VER_GREATER_EQUAL); + + if (!!::VerifyVersionInfo(&osvi, VER_MAJORVERSION, condition_mask)) + return INFINITE; + + return default_gqcs_timeout; +} + void win_iocp_io_service::do_add_timer_queue(timer_queue_base& queue) { mutex::scoped_lock lock(dispatch_mutex_); diff --git a/3party/boost/boost/asio/detail/impl/win_iocp_serial_port_service.ipp b/3party/boost/boost/asio/detail/impl/win_iocp_serial_port_service.ipp index e1ad2bbd7d..e3081afaae 100644 --- a/3party/boost/boost/asio/detail/impl/win_iocp_serial_port_service.ipp +++ b/3party/boost/boost/asio/detail/impl/win_iocp_serial_port_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_serial_port_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/impl/win_iocp_socket_service_base.ipp b/3party/boost/boost/asio/detail/impl/win_iocp_socket_service_base.ipp index 1c526fc8d3..40231b971d 100644 --- a/3party/boost/boost/asio/detail/impl/win_iocp_socket_service_base.ipp +++ b/3party/boost/boost/asio/detail/impl/win_iocp_socket_service_base.ipp @@ -2,7 +2,7 @@ // detail/impl/win_iocp_socket_service_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -32,6 +32,7 @@ win_iocp_socket_service_base::win_iocp_socket_service_base( : io_service_(io_service), iocp_service_(use_service(io_service)), reactor_(0), + connect_ex_(0), mutex_(), impl_list_(0) { @@ -545,8 +546,51 @@ void win_iocp_socket_service_base::start_reactor_op( void win_iocp_socket_service_base::start_connect_op( win_iocp_socket_service_base::base_implementation_type& impl, - reactor_op* op, const socket_addr_type* addr, std::size_t addrlen) + int family, int type, const socket_addr_type* addr, + std::size_t addrlen, win_iocp_socket_connect_op_base* op) { + // If ConnectEx is available, use that. + if (family == BOOST_ASIO_OS_DEF(AF_INET) + || family == BOOST_ASIO_OS_DEF(AF_INET6)) + { + if (connect_ex_fn connect_ex = get_connect_ex(impl, type)) + { + union address_union + { + socket_addr_type base; + sockaddr_in4_type v4; + sockaddr_in6_type v6; + } a; + + using namespace std; // For memset. + memset(&a, 0, sizeof(a)); + a.base.sa_family = family; + + socket_ops::bind(impl.socket_, &a.base, + family == BOOST_ASIO_OS_DEF(AF_INET) + ? sizeof(a.v4) : sizeof(a.v6), op->ec_); + if (op->ec_ && op->ec_ != boost::asio::error::invalid_argument) + { + iocp_service_.post_immediate_completion(op, false); + return; + } + + op->connect_ex_ = true; + update_cancellation_thread_id(impl); + iocp_service_.work_started(); + + BOOL result = connect_ex(impl.socket_, + addr, static_cast(addrlen), 0, 0, 0, op); + DWORD last_error = ::WSAGetLastError(); + if (!result && last_error != WSA_IO_PENDING) + iocp_service_.on_completion(op, last_error); + else + iocp_service_.on_pending(op); + return; + } + } + + // Otherwise, fall back to a reactor-based implementation. reactor& r = get_reactor(); update_cancellation_thread_id(impl); @@ -623,6 +667,35 @@ reactor& win_iocp_socket_service_base::get_reactor() return *r; } +win_iocp_socket_service_base::connect_ex_fn +win_iocp_socket_service_base::get_connect_ex( + win_iocp_socket_service_base::base_implementation_type& impl, int type) +{ + if (type != BOOST_ASIO_OS_DEF(SOCK_STREAM) + && type != BOOST_ASIO_OS_DEF(SOCK_SEQPACKET)) + return 0; + + void* ptr = interlocked_compare_exchange_pointer(&connect_ex_, 0, 0); + if (!ptr) + { + GUID guid = { 0x25a207b9, 0xddf3, 0x4660, + { 0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e } }; + + DWORD bytes = 0; + if (::WSAIoctl(impl.socket_, SIO_GET_EXTENSION_FUNCTION_POINTER, + &guid, sizeof(guid), &ptr, sizeof(ptr), &bytes, 0, 0) != 0) + { + // Set connect_ex_ to a special value to indicate that ConnectEx is + // unavailable. That way we won't bother trying to look it up again. + ptr = this; + } + + interlocked_exchange_pointer(&connect_ex_, ptr); + } + + return reinterpret_cast(ptr == this ? 0 : ptr); +} + void* win_iocp_socket_service_base::interlocked_compare_exchange_pointer( void** dest, void* exch, void* cmp) { diff --git a/3party/boost/boost/asio/detail/impl/win_mutex.ipp b/3party/boost/boost/asio/detail/impl/win_mutex.ipp index f27fc73f8d..f86012ba46 100644 --- a/3party/boost/boost/asio/detail/impl/win_mutex.ipp +++ b/3party/boost/boost/asio/detail/impl/win_mutex.ipp @@ -2,7 +2,7 @@ // detail/impl/win_mutex.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/win_object_handle_service.ipp b/3party/boost/boost/asio/detail/impl/win_object_handle_service.ipp index 8925af8c50..081d5eb4b7 100644 --- a/3party/boost/boost/asio/detail/impl/win_object_handle_service.ipp +++ b/3party/boost/boost/asio/detail/impl/win_object_handle_service.ipp @@ -2,7 +2,7 @@ // detail/impl/win_object_handle_service.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -421,7 +421,7 @@ void win_object_handle_service::wait_callback(PVOID param, BOOLEAN) boost::system::error_code ec(last_error, boost::asio::error::get_system_category()); - while (wait_op* op = impl->op_queue_.front()) + while ((op = impl->op_queue_.front()) != 0) { op->ec_ = ec; impl->op_queue_.pop(); diff --git a/3party/boost/boost/asio/detail/impl/win_static_mutex.ipp b/3party/boost/boost/asio/detail/impl/win_static_mutex.ipp index 963fa5fe25..84bd45473c 100644 --- a/3party/boost/boost/asio/detail/impl/win_static_mutex.ipp +++ b/3party/boost/boost/asio/detail/impl/win_static_mutex.ipp @@ -2,7 +2,7 @@ // detail/impl/win_static_mutex.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/win_thread.ipp b/3party/boost/boost/asio/detail/impl/win_thread.ipp index 03cdddf8d5..4bf09c514b 100644 --- a/3party/boost/boost/asio/detail/impl/win_thread.ipp +++ b/3party/boost/boost/asio/detail/impl/win_thread.ipp @@ -2,7 +2,7 @@ // detail/impl/win_thread.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/win_tss_ptr.ipp b/3party/boost/boost/asio/detail/impl/win_tss_ptr.ipp index bbe5e3ca44..abaad277af 100644 --- a/3party/boost/boost/asio/detail/impl/win_tss_ptr.ipp +++ b/3party/boost/boost/asio/detail/impl/win_tss_ptr.ipp @@ -2,7 +2,7 @@ // detail/impl/win_tss_ptr.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/impl/winrt_ssocket_service_base.ipp b/3party/boost/boost/asio/detail/impl/winrt_ssocket_service_base.ipp new file mode 100644 index 0000000000..fdd0465dda --- /dev/null +++ b/3party/boost/boost/asio/detail/impl/winrt_ssocket_service_base.ipp @@ -0,0 +1,614 @@ +// +// detail/impl/winrt_ssocket_service_base.ipp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP +#define BOOST_ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +winrt_ssocket_service_base::winrt_ssocket_service_base( + boost::asio::io_service& io_service) + : io_service_(use_service(io_service)), + async_manager_(use_service(io_service)), + mutex_(), + impl_list_(0) +{ +} + +void winrt_ssocket_service_base::shutdown_service() +{ + // Close all implementations, causing all operations to complete. + boost::asio::detail::mutex::scoped_lock lock(mutex_); + base_implementation_type* impl = impl_list_; + while (impl) + { + boost::system::error_code ignored_ec; + close(*impl, ignored_ec); + impl = impl->next_; + } +} + +void winrt_ssocket_service_base::construct( + winrt_ssocket_service_base::base_implementation_type& impl) +{ + // Insert implementation into linked list of all implementations. + boost::asio::detail::mutex::scoped_lock lock(mutex_); + impl.next_ = impl_list_; + impl.prev_ = 0; + if (impl_list_) + impl_list_->prev_ = &impl; + impl_list_ = &impl; +} + +void winrt_ssocket_service_base::base_move_construct( + winrt_ssocket_service_base::base_implementation_type& impl, + winrt_ssocket_service_base::base_implementation_type& other_impl) +{ + impl.socket_ = other_impl.socket_; + other_impl.socket_ = nullptr; + + // Insert implementation into linked list of all implementations. + boost::asio::detail::mutex::scoped_lock lock(mutex_); + impl.next_ = impl_list_; + impl.prev_ = 0; + if (impl_list_) + impl_list_->prev_ = &impl; + impl_list_ = &impl; +} + +void winrt_ssocket_service_base::base_move_assign( + winrt_ssocket_service_base::base_implementation_type& impl, + winrt_ssocket_service_base& other_service, + winrt_ssocket_service_base::base_implementation_type& other_impl) +{ + boost::system::error_code ignored_ec; + close(impl, ignored_ec); + + if (this != &other_service) + { + // Remove implementation from linked list of all implementations. + boost::asio::detail::mutex::scoped_lock lock(mutex_); + if (impl_list_ == &impl) + impl_list_ = impl.next_; + if (impl.prev_) + impl.prev_->next_ = impl.next_; + if (impl.next_) + impl.next_->prev_= impl.prev_; + impl.next_ = 0; + impl.prev_ = 0; + } + + impl.socket_ = other_impl.socket_; + other_impl.socket_ = nullptr; + + if (this != &other_service) + { + // Insert implementation into linked list of all implementations. + boost::asio::detail::mutex::scoped_lock lock(other_service.mutex_); + impl.next_ = other_service.impl_list_; + impl.prev_ = 0; + if (other_service.impl_list_) + other_service.impl_list_->prev_ = &impl; + other_service.impl_list_ = &impl; + } +} + +void winrt_ssocket_service_base::destroy( + winrt_ssocket_service_base::base_implementation_type& impl) +{ + boost::system::error_code ignored_ec; + close(impl, ignored_ec); + + // Remove implementation from linked list of all implementations. + boost::asio::detail::mutex::scoped_lock lock(mutex_); + if (impl_list_ == &impl) + impl_list_ = impl.next_; + if (impl.prev_) + impl.prev_->next_ = impl.next_; + if (impl.next_) + impl.next_->prev_= impl.prev_; + impl.next_ = 0; + impl.prev_ = 0; +} + +boost::system::error_code winrt_ssocket_service_base::close( + winrt_ssocket_service_base::base_implementation_type& impl, + boost::system::error_code& ec) +{ + if (impl.socket_) + { + delete impl.socket_; + impl.socket_ = nullptr; + } + + ec = boost::system::error_code(); + return ec; +} + +std::size_t winrt_ssocket_service_base::do_get_endpoint( + const base_implementation_type& impl, bool local, + void* addr, std::size_t addr_len, boost::system::error_code& ec) const +{ + if (!is_open(impl)) + { + ec = boost::asio::error::bad_descriptor; + return addr_len; + } + + try + { + std::string addr_string = winrt_utils::string(local + ? impl.socket_->Information->LocalAddress->CanonicalName + : impl.socket_->Information->RemoteAddress->CanonicalName); + unsigned short port = winrt_utils::integer(local + ? impl.socket_->Information->LocalPort + : impl.socket_->Information->RemotePort); + unsigned long scope = 0; + + switch (reinterpret_cast(addr)->sa_family) + { + case BOOST_ASIO_OS_DEF(AF_INET): + if (addr_len < sizeof(sockaddr_in4_type)) + { + ec = boost::asio::error::invalid_argument; + return addr_len; + } + else + { + socket_ops::inet_pton(BOOST_ASIO_OS_DEF(AF_INET), addr_string.c_str(), + &reinterpret_cast(addr)->sin_addr, &scope, ec); + reinterpret_cast(addr)->sin_port + = socket_ops::host_to_network_short(port); + ec = boost::system::error_code(); + return sizeof(sockaddr_in4_type); + } + case BOOST_ASIO_OS_DEF(AF_INET6): + if (addr_len < sizeof(sockaddr_in6_type)) + { + ec = boost::asio::error::invalid_argument; + return addr_len; + } + else + { + socket_ops::inet_pton(BOOST_ASIO_OS_DEF(AF_INET6), addr_string.c_str(), + &reinterpret_cast(addr)->sin6_addr, &scope, ec); + reinterpret_cast(addr)->sin6_port + = socket_ops::host_to_network_short(port); + ec = boost::system::error_code(); + return sizeof(sockaddr_in6_type); + } + default: + ec = boost::asio::error::address_family_not_supported; + return addr_len; + } + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + return addr_len; + } +} + +boost::system::error_code winrt_ssocket_service_base::do_set_option( + winrt_ssocket_service_base::base_implementation_type& impl, + int level, int optname, const void* optval, + std::size_t optlen, boost::system::error_code& ec) +{ + if (!is_open(impl)) + { + ec = boost::asio::error::bad_descriptor; + return ec; + } + + try + { + if (level == BOOST_ASIO_OS_DEF(SOL_SOCKET) + && optname == BOOST_ASIO_OS_DEF(SO_KEEPALIVE)) + { + if (optlen == sizeof(int)) + { + int value = 0; + std::memcpy(&value, optval, optlen); + impl.socket_->Control->KeepAlive = !!value; + ec = boost::system::error_code(); + } + else + { + ec = boost::asio::error::invalid_argument; + } + } + else if (level == BOOST_ASIO_OS_DEF(IPPROTO_TCP) + && optname == BOOST_ASIO_OS_DEF(TCP_NODELAY)) + { + if (optlen == sizeof(int)) + { + int value = 0; + std::memcpy(&value, optval, optlen); + impl.socket_->Control->NoDelay = !!value; + ec = boost::system::error_code(); + } + else + { + ec = boost::asio::error::invalid_argument; + } + } + else + { + ec = boost::asio::error::invalid_argument; + } + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + } + + return ec; +} + +void winrt_ssocket_service_base::do_get_option( + const winrt_ssocket_service_base::base_implementation_type& impl, + int level, int optname, void* optval, + std::size_t* optlen, boost::system::error_code& ec) const +{ + if (!is_open(impl)) + { + ec = boost::asio::error::bad_descriptor; + return; + } + + try + { + if (level == BOOST_ASIO_OS_DEF(SOL_SOCKET) + && optname == BOOST_ASIO_OS_DEF(SO_KEEPALIVE)) + { + if (*optlen >= sizeof(int)) + { + int value = impl.socket_->Control->KeepAlive ? 1 : 0; + std::memcpy(optval, &value, sizeof(int)); + *optlen = sizeof(int); + ec = boost::system::error_code(); + } + else + { + ec = boost::asio::error::invalid_argument; + } + } + else if (level == BOOST_ASIO_OS_DEF(IPPROTO_TCP) + && optname == BOOST_ASIO_OS_DEF(TCP_NODELAY)) + { + if (*optlen >= sizeof(int)) + { + int value = impl.socket_->Control->NoDelay ? 1 : 0; + std::memcpy(optval, &value, sizeof(int)); + *optlen = sizeof(int); + ec = boost::system::error_code(); + } + else + { + ec = boost::asio::error::invalid_argument; + } + } + else + { + ec = boost::asio::error::invalid_argument; + } + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + } +} + +boost::system::error_code winrt_ssocket_service_base::do_connect( + winrt_ssocket_service_base::base_implementation_type& impl, + const void* addr, boost::system::error_code& ec) +{ + if (!is_open(impl)) + { + ec = boost::asio::error::bad_descriptor; + return ec; + } + + char addr_string[max_addr_v6_str_len]; + unsigned short port; + switch (reinterpret_cast(addr)->sa_family) + { + case BOOST_ASIO_OS_DEF(AF_INET): + socket_ops::inet_ntop(BOOST_ASIO_OS_DEF(AF_INET), + &reinterpret_cast(addr)->sin_addr, + addr_string, sizeof(addr_string), 0, ec); + port = socket_ops::network_to_host_short( + reinterpret_cast(addr)->sin_port); + break; + case BOOST_ASIO_OS_DEF(AF_INET6): + socket_ops::inet_ntop(BOOST_ASIO_OS_DEF(AF_INET6), + &reinterpret_cast(addr)->sin6_addr, + addr_string, sizeof(addr_string), 0, ec); + port = socket_ops::network_to_host_short( + reinterpret_cast(addr)->sin6_port); + break; + default: + ec = boost::asio::error::address_family_not_supported; + return ec; + } + + if (!ec) try + { + async_manager_.sync(impl.socket_->ConnectAsync( + ref new Windows::Networking::HostName( + winrt_utils::string(addr_string)), + winrt_utils::string(port)), ec); + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + } + + return ec; +} + +void winrt_ssocket_service_base::start_connect_op( + winrt_ssocket_service_base::base_implementation_type& impl, + const void* addr, winrt_async_op* op, bool is_continuation) +{ + if (!is_open(impl)) + { + op->ec_ = boost::asio::error::bad_descriptor; + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + char addr_string[max_addr_v6_str_len]; + unsigned short port = 0; + switch (reinterpret_cast(addr)->sa_family) + { + case BOOST_ASIO_OS_DEF(AF_INET): + socket_ops::inet_ntop(BOOST_ASIO_OS_DEF(AF_INET), + &reinterpret_cast(addr)->sin_addr, + addr_string, sizeof(addr_string), 0, op->ec_); + port = socket_ops::network_to_host_short( + reinterpret_cast(addr)->sin_port); + break; + case BOOST_ASIO_OS_DEF(AF_INET6): + socket_ops::inet_ntop(BOOST_ASIO_OS_DEF(AF_INET6), + &reinterpret_cast(addr)->sin6_addr, + addr_string, sizeof(addr_string), 0, op->ec_); + port = socket_ops::network_to_host_short( + reinterpret_cast(addr)->sin6_port); + break; + default: + op->ec_ = boost::asio::error::address_family_not_supported; + break; + } + + if (op->ec_) + { + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + try + { + async_manager_.async(impl.socket_->ConnectAsync( + ref new Windows::Networking::HostName( + winrt_utils::string(addr_string)), + winrt_utils::string(port)), op); + } + catch (Platform::Exception^ e) + { + op->ec_ = boost::system::error_code( + e->HResult, boost::system::system_category()); + io_service_.post_immediate_completion(op, is_continuation); + } +} + +std::size_t winrt_ssocket_service_base::do_send( + winrt_ssocket_service_base::base_implementation_type& impl, + const boost::asio::const_buffer& data, + socket_base::message_flags flags, boost::system::error_code& ec) +{ + if (flags) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + if (!is_open(impl)) + { + ec = boost::asio::error::bad_descriptor; + return 0; + } + + try + { + buffer_sequence_adapter bufs(boost::asio::buffer(data)); + + if (bufs.all_empty()) + { + ec = boost::system::error_code(); + return 0; + } + + return async_manager_.sync( + impl.socket_->OutputStream->WriteAsync(bufs.buffers()[0]), ec); + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + return 0; + } +} + +void winrt_ssocket_service_base::start_send_op( + winrt_ssocket_service_base::base_implementation_type& impl, + const boost::asio::const_buffer& data, socket_base::message_flags flags, + winrt_async_op* op, bool is_continuation) +{ + if (flags) + { + op->ec_ = boost::asio::error::operation_not_supported; + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + if (!is_open(impl)) + { + op->ec_ = boost::asio::error::bad_descriptor; + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + try + { + buffer_sequence_adapter bufs(boost::asio::buffer(data)); + + if (bufs.all_empty()) + { + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + async_manager_.async( + impl.socket_->OutputStream->WriteAsync(bufs.buffers()[0]), op); + } + catch (Platform::Exception^ e) + { + op->ec_ = boost::system::error_code(e->HResult, + boost::system::system_category()); + io_service_.post_immediate_completion(op, is_continuation); + } +} + +std::size_t winrt_ssocket_service_base::do_receive( + winrt_ssocket_service_base::base_implementation_type& impl, + const boost::asio::mutable_buffer& data, + socket_base::message_flags flags, boost::system::error_code& ec) +{ + if (flags) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + if (!is_open(impl)) + { + ec = boost::asio::error::bad_descriptor; + return 0; + } + + try + { + buffer_sequence_adapter bufs(boost::asio::buffer(data)); + + if (bufs.all_empty()) + { + ec = boost::system::error_code(); + return 0; + } + + async_manager_.sync( + impl.socket_->InputStream->ReadAsync( + bufs.buffers()[0], bufs.buffers()[0]->Capacity, + Windows::Storage::Streams::InputStreamOptions::Partial), ec); + + std::size_t bytes_transferred = bufs.buffers()[0]->Length; + if (bytes_transferred == 0 && !ec) + { + ec = boost::asio::error::eof; + } + + return bytes_transferred; + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + return 0; + } +} + +void winrt_ssocket_service_base::start_receive_op( + winrt_ssocket_service_base::base_implementation_type& impl, + const boost::asio::mutable_buffer& data, socket_base::message_flags flags, + winrt_async_op* op, + bool is_continuation) +{ + if (flags) + { + op->ec_ = boost::asio::error::operation_not_supported; + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + if (!is_open(impl)) + { + op->ec_ = boost::asio::error::bad_descriptor; + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + try + { + buffer_sequence_adapter bufs(boost::asio::buffer(data)); + + if (bufs.all_empty()) + { + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + async_manager_.async( + impl.socket_->InputStream->ReadAsync( + bufs.buffers()[0], bufs.buffers()[0]->Capacity, + Windows::Storage::Streams::InputStreamOptions::Partial), op); + } + catch (Platform::Exception^ e) + { + op->ec_ = boost::system::error_code(e->HResult, + boost::system::system_category()); + io_service_.post_immediate_completion(op, is_continuation); + } +} + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP diff --git a/3party/boost/boost/asio/detail/impl/winrt_timer_scheduler.hpp b/3party/boost/boost/asio/detail/impl/winrt_timer_scheduler.hpp new file mode 100644 index 0000000000..ff1ee038f7 --- /dev/null +++ b/3party/boost/boost/asio/detail/impl/winrt_timer_scheduler.hpp @@ -0,0 +1,81 @@ +// +// detail/impl/winrt_timer_scheduler.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP +#define BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +void winrt_timer_scheduler::add_timer_queue(timer_queue& queue) +{ + do_add_timer_queue(queue); +} + +// Remove a timer queue from the reactor. +template +void winrt_timer_scheduler::remove_timer_queue(timer_queue& queue) +{ + do_remove_timer_queue(queue); +} + +template +void winrt_timer_scheduler::schedule_timer(timer_queue& queue, + const typename Time_Traits::time_type& time, + typename timer_queue::per_timer_data& timer, wait_op* op) +{ + boost::asio::detail::mutex::scoped_lock lock(mutex_); + + if (shutdown_) + { + io_service_.post_immediate_completion(op, false); + return; + } + + bool earliest = queue.enqueue_timer(time, timer, op); + io_service_.work_started(); + if (earliest) + event_.signal(lock); +} + +template +std::size_t winrt_timer_scheduler::cancel_timer(timer_queue& queue, + typename timer_queue::per_timer_data& timer, + std::size_t max_cancelled) +{ + boost::asio::detail::mutex::scoped_lock lock(mutex_); + op_queue ops; + std::size_t n = queue.cancel_timer(timer, ops, max_cancelled); + lock.unlock(); + io_service_.post_deferred_completions(ops); + return n; +} + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP diff --git a/3party/boost/boost/asio/detail/impl/winrt_timer_scheduler.ipp b/3party/boost/boost/asio/detail/impl/winrt_timer_scheduler.ipp new file mode 100644 index 0000000000..ef480eaa17 --- /dev/null +++ b/3party/boost/boost/asio/detail/impl/winrt_timer_scheduler.ipp @@ -0,0 +1,124 @@ +// +// detail/impl/winrt_timer_scheduler.ipp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP +#define BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +winrt_timer_scheduler::winrt_timer_scheduler( + boost::asio::io_service& io_service) + : boost::asio::detail::service_base(io_service), + io_service_(use_service(io_service)), + mutex_(), + event_(), + timer_queues_(), + thread_(0), + stop_thread_(false), + shutdown_(false) +{ + thread_ = new boost::asio::detail::thread( + bind_handler(&winrt_timer_scheduler::call_run_thread, this)); +} + +winrt_timer_scheduler::~winrt_timer_scheduler() +{ + shutdown_service(); +} + +void winrt_timer_scheduler::shutdown_service() +{ + boost::asio::detail::mutex::scoped_lock lock(mutex_); + shutdown_ = true; + stop_thread_ = true; + event_.signal(lock); + lock.unlock(); + + if (thread_) + { + thread_->join(); + delete thread_; + thread_ = 0; + } + + op_queue ops; + timer_queues_.get_all_timers(ops); + io_service_.abandon_operations(ops); +} + +void winrt_timer_scheduler::fork_service(boost::asio::io_service::fork_event) +{ +} + +void winrt_timer_scheduler::init_task() +{ +} + +void winrt_timer_scheduler::run_thread() +{ + boost::asio::detail::mutex::scoped_lock lock(mutex_); + while (!stop_thread_) + { + const long max_wait_duration = 5 * 60 * 1000000; + long wait_duration = timer_queues_.wait_duration_usec(max_wait_duration); + event_.wait_for_usec(lock, wait_duration); + event_.clear(lock); + op_queue ops; + timer_queues_.get_ready_timers(ops); + if (!ops.empty()) + { + lock.unlock(); + io_service_.post_deferred_completions(ops); + lock.lock(); + } + } +} + +void winrt_timer_scheduler::call_run_thread(winrt_timer_scheduler* scheduler) +{ + scheduler->run_thread(); +} + +void winrt_timer_scheduler::do_add_timer_queue(timer_queue_base& queue) +{ + mutex::scoped_lock lock(mutex_); + timer_queues_.insert(&queue); +} + +void winrt_timer_scheduler::do_remove_timer_queue(timer_queue_base& queue) +{ + mutex::scoped_lock lock(mutex_); + timer_queues_.erase(&queue); +} + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP diff --git a/3party/boost/boost/asio/detail/impl/winsock_init.ipp b/3party/boost/boost/asio/detail/impl/winsock_init.ipp index 23b3ba08b6..08f32800f5 100644 --- a/3party/boost/boost/asio/detail/impl/winsock_init.ipp +++ b/3party/boost/boost/asio/detail/impl/winsock_init.ipp @@ -2,7 +2,7 @@ // detail/impl/winsock_init.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/io_control.hpp b/3party/boost/boost/asio/detail/io_control.hpp index f35468b125..31d2f0ea20 100644 --- a/3party/boost/boost/asio/detail/io_control.hpp +++ b/3party/boost/boost/asio/detail/io_control.hpp @@ -2,7 +2,7 @@ // detail/io_control.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -45,7 +45,7 @@ public: // Get the name of the IO control command. int name() const { - return static_cast(FIONBIO); + return static_cast(BOOST_ASIO_OS_DEF(FIONBIO)); } // Set the value of the I/O control command. @@ -95,7 +95,7 @@ public: // Get the name of the IO control command. int name() const { - return static_cast(FIONREAD); + return static_cast(BOOST_ASIO_OS_DEF(FIONREAD)); } // Set the value of the I/O control command. diff --git a/3party/boost/boost/asio/detail/keyword_tss_ptr.hpp b/3party/boost/boost/asio/detail/keyword_tss_ptr.hpp index bdd7662444..cd32b50772 100644 --- a/3party/boost/boost/asio/detail/keyword_tss_ptr.hpp +++ b/3party/boost/boost/asio/detail/keyword_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/keyword_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -55,11 +55,11 @@ public: } private: - static __thread T* value_; + static BOOST_ASIO_THREAD_KEYWORD T* value_; }; template -__thread T* keyword_tss_ptr::value_; +BOOST_ASIO_THREAD_KEYWORD T* keyword_tss_ptr::value_; } // namespace detail } // namespace asio diff --git a/3party/boost/boost/asio/detail/kqueue_reactor.hpp b/3party/boost/boost/asio/detail/kqueue_reactor.hpp index 16669c236f..37c70b2455 100644 --- a/3party/boost/boost/asio/detail/kqueue_reactor.hpp +++ b/3party/boost/boost/asio/detail/kqueue_reactor.hpp @@ -2,7 +2,7 @@ // detail/kqueue_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -33,7 +32,6 @@ #include #include #include -#include #include #include #include diff --git a/3party/boost/boost/asio/detail/kqueue_reactor_fwd.hpp b/3party/boost/boost/asio/detail/kqueue_reactor_fwd.hpp deleted file mode 100644 index bd1dfc0fa5..0000000000 --- a/3party/boost/boost/asio/detail/kqueue_reactor_fwd.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// -// detail/kqueue_reactor_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef BOOST_ASIO_DETAIL_KQUEUE_REACTOR_FWD_HPP -#define BOOST_ASIO_DETAIL_KQUEUE_REACTOR_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include - -#if defined(BOOST_ASIO_HAS_KQUEUE) - -namespace boost { -namespace asio { -namespace detail { - -class kqueue_reactor; - -} // namespace detail -} // namespace asio -} // namespace boost - -#endif // defined(BOOST_ASIO_HAS_KQUEUE) - -#endif // BOOST_ASIO_DETAIL_KQUEUE_REACTOR_FWD_HPP diff --git a/3party/boost/boost/asio/detail/local_free_on_block_exit.hpp b/3party/boost/boost/asio/detail/local_free_on_block_exit.hpp index b7ce9df790..6a676c3244 100644 --- a/3party/boost/boost/asio/detail/local_free_on_block_exit.hpp +++ b/3party/boost/boost/asio/detail/local_free_on_block_exit.hpp @@ -2,7 +2,7 @@ // detail/local_free_on_block_exit.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/macos_fenced_block.hpp b/3party/boost/boost/asio/detail/macos_fenced_block.hpp index acc248ea82..aee4bfba77 100644 --- a/3party/boost/boost/asio/detail/macos_fenced_block.hpp +++ b/3party/boost/boost/asio/detail/macos_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/macos_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/mutex.hpp b/3party/boost/boost/asio/detail/mutex.hpp index 03bc3f8247..8212ec3ea8 100644 --- a/3party/boost/boost/asio/detail/mutex.hpp +++ b/3party/boost/boost/asio/detail/mutex.hpp @@ -2,7 +2,7 @@ // detail/mutex.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,8 +23,10 @@ # include #elif defined(BOOST_ASIO_HAS_PTHREADS) # include +#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) +# include #else -# error Only Windows and POSIX are supported! +# error Only Windows, POSIX and std::mutex are supported! #endif namespace boost { @@ -37,6 +39,8 @@ typedef null_mutex mutex; typedef win_mutex mutex; #elif defined(BOOST_ASIO_HAS_PTHREADS) typedef posix_mutex mutex; +#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) +typedef std_mutex mutex; #endif } // namespace detail diff --git a/3party/boost/boost/asio/detail/noncopyable.hpp b/3party/boost/boost/asio/detail/noncopyable.hpp index 5f45132c8d..6aae476637 100644 --- a/3party/boost/boost/asio/detail/noncopyable.hpp +++ b/3party/boost/boost/asio/detail/noncopyable.hpp @@ -2,7 +2,7 @@ // detail/noncopyable.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/null_event.hpp b/3party/boost/boost/asio/detail/null_event.hpp index 9962f9864b..2e87844336 100644 --- a/3party/boost/boost/asio/detail/null_event.hpp +++ b/3party/boost/boost/asio/detail/null_event.hpp @@ -2,7 +2,7 @@ // detail/null_event.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -41,18 +41,31 @@ public: { } - // Signal the event. + // Signal the event. (Retained for backward compatibility.) template void signal(Lock&) { } - // Signal the event and unlock the mutex. + // Signal all waiters. template - void signal_and_unlock(Lock&) + void signal_all(Lock&) { } + // Unlock the mutex and signal one waiter. + template + void unlock_and_signal_one(Lock&) + { + } + + // If there's a waiter, unlock the mutex and signal it. + template + bool maybe_unlock_and_signal_one(Lock&) + { + return false; + } + // Reset the event. template void clear(Lock&) diff --git a/3party/boost/boost/asio/detail/null_fenced_block.hpp b/3party/boost/boost/asio/detail/null_fenced_block.hpp index 0d272ee780..cf5da6e3f4 100644 --- a/3party/boost/boost/asio/detail/null_fenced_block.hpp +++ b/3party/boost/boost/asio/detail/null_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/null_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/null_mutex.hpp b/3party/boost/boost/asio/detail/null_mutex.hpp index 54834e0223..c282303b28 100644 --- a/3party/boost/boost/asio/detail/null_mutex.hpp +++ b/3party/boost/boost/asio/detail/null_mutex.hpp @@ -2,7 +2,7 @@ // detail/null_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/null_reactor.hpp b/3party/boost/boost/asio/detail/null_reactor.hpp new file mode 100644 index 0000000000..a8e93e19e1 --- /dev/null +++ b/3party/boost/boost/asio/detail/null_reactor.hpp @@ -0,0 +1,69 @@ +// +// detail/null_reactor.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_NULL_REACTOR_HPP +#define BOOST_ASIO_DETAIL_NULL_REACTOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class null_reactor + : public boost::asio::detail::service_base +{ +public: + // Constructor. + null_reactor(boost::asio::io_service& io_service) + : boost::asio::detail::service_base(io_service) + { + } + + // Destructor. + ~null_reactor() + { + } + + // Destroy all user-defined handler objects owned by the service. + void shutdown_service() + { + } + + // No-op because should never be called. + void run(bool /*block*/, op_queue& /*ops*/) + { + } + + // No-op. + void interrupt() + { + } +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_NULL_REACTOR_HPP diff --git a/3party/boost/boost/asio/detail/null_signal_blocker.hpp b/3party/boost/boost/asio/detail/null_signal_blocker.hpp index c386524168..89008fc26e 100644 --- a/3party/boost/boost/asio/detail/null_signal_blocker.hpp +++ b/3party/boost/boost/asio/detail/null_signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/null_signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -19,6 +19,7 @@ #if !defined(BOOST_ASIO_HAS_THREADS) \ || defined(BOOST_ASIO_WINDOWS) \ + || defined(BOOST_ASIO_WINDOWS_RUNTIME) \ || defined(__CYGWIN__) \ || defined(__SYMBIAN32__) @@ -63,6 +64,7 @@ public: #endif // !defined(BOOST_ASIO_HAS_THREADS) // || defined(BOOST_ASIO_WINDOWS) + // || defined(BOOST_ASIO_WINDOWS_RUNTIME) // || defined(__CYGWIN__) // || defined(__SYMBIAN32__) diff --git a/3party/boost/boost/asio/detail/null_socket_service.hpp b/3party/boost/boost/asio/detail/null_socket_service.hpp new file mode 100644 index 0000000000..aafa1b7e07 --- /dev/null +++ b/3party/boost/boost/asio/detail/null_socket_service.hpp @@ -0,0 +1,499 @@ +// +// detail/null_socket_service.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP +#define BOOST_ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +class null_socket_service +{ +public: + // The protocol type. + typedef Protocol protocol_type; + + // The endpoint type. + typedef typename Protocol::endpoint endpoint_type; + + // The native type of a socket. + typedef int native_handle_type; + + // The implementation type of the socket. + struct implementation_type + { + }; + + // Constructor. + null_socket_service(boost::asio::io_service& io_service) + : io_service_(io_service) + { + } + + // Destroy all user-defined handler objects owned by the service. + void shutdown_service() + { + } + + // Construct a new socket implementation. + void construct(implementation_type&) + { + } + + // Move-construct a new socket implementation. + void move_construct(implementation_type&, implementation_type&) + { + } + + // Move-assign from another socket implementation. + void move_assign(implementation_type&, + null_socket_service&, implementation_type&) + { + } + + // Move-construct a new socket implementation from another protocol type. + template + void converting_move_construct(implementation_type&, + typename null_socket_service::implementation_type&) + { + } + + // Destroy a socket implementation. + void destroy(implementation_type&) + { + } + + // Open a new socket implementation. + boost::system::error_code open(implementation_type&, + const protocol_type&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Assign a native socket to a socket implementation. + boost::system::error_code assign(implementation_type&, const protocol_type&, + const native_handle_type&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Determine whether the socket is open. + bool is_open(const implementation_type&) const + { + return false; + } + + // Destroy a socket implementation. + boost::system::error_code close(implementation_type&, + boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Get the native socket representation. + native_handle_type native_handle(implementation_type&) + { + return 0; + } + + // Cancel all operations associated with the socket. + boost::system::error_code cancel(implementation_type&, + boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Determine whether the socket is at the out-of-band data mark. + bool at_mark(const implementation_type&, + boost::system::error_code& ec) const + { + ec = boost::asio::error::operation_not_supported; + return false; + } + + // Determine the number of bytes available for reading. + std::size_t available(const implementation_type&, + boost::system::error_code& ec) const + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Place the socket into the state where it will listen for new connections. + boost::system::error_code listen(implementation_type&, + int, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Perform an IO control command on the socket. + template + boost::system::error_code io_control(implementation_type&, + IO_Control_Command&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Gets the non-blocking mode of the socket. + bool non_blocking(const implementation_type&) const + { + return false; + } + + // Sets the non-blocking mode of the socket. + boost::system::error_code non_blocking(implementation_type&, + bool, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Gets the non-blocking mode of the native socket implementation. + bool native_non_blocking(const implementation_type&) const + { + return false; + } + + // Sets the non-blocking mode of the native socket implementation. + boost::system::error_code native_non_blocking(implementation_type&, + bool, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Disable sends or receives on the socket. + boost::system::error_code shutdown(implementation_type&, + socket_base::shutdown_type, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Bind the socket to the specified local endpoint. + boost::system::error_code bind(implementation_type&, + const endpoint_type&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Set a socket option. + template + boost::system::error_code set_option(implementation_type&, + const Option&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Set a socket option. + template + boost::system::error_code get_option(const implementation_type&, + Option&, boost::system::error_code& ec) const + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Get the local endpoint. + endpoint_type local_endpoint(const implementation_type&, + boost::system::error_code& ec) const + { + ec = boost::asio::error::operation_not_supported; + return endpoint_type(); + } + + // Get the remote endpoint. + endpoint_type remote_endpoint(const implementation_type&, + boost::system::error_code& ec) const + { + ec = boost::asio::error::operation_not_supported; + return endpoint_type(); + } + + // Send the given data to the peer. + template + std::size_t send(implementation_type&, const ConstBufferSequence&, + socket_base::message_flags, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Wait until data can be sent without blocking. + std::size_t send(implementation_type&, const null_buffers&, + socket_base::message_flags, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Start an asynchronous send. The data being sent must be valid for the + // lifetime of the asynchronous operation. + template + void async_send(implementation_type&, const ConstBufferSequence&, + socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Start an asynchronous wait until data can be sent without blocking. + template + void async_send(implementation_type&, const null_buffers&, + socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Receive some data from the peer. Returns the number of bytes received. + template + std::size_t receive(implementation_type&, const MutableBufferSequence&, + socket_base::message_flags, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Wait until data can be received without blocking. + std::size_t receive(implementation_type&, const null_buffers&, + socket_base::message_flags, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Start an asynchronous receive. The buffer for the data being received + // must be valid for the lifetime of the asynchronous operation. + template + void async_receive(implementation_type&, const MutableBufferSequence&, + socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Wait until data can be received without blocking. + template + void async_receive(implementation_type&, const null_buffers&, + socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Receive some data with associated flags. Returns the number of bytes + // received. + template + std::size_t receive_with_flags(implementation_type&, + const MutableBufferSequence&, socket_base::message_flags, + socket_base::message_flags&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Wait until data can be received without blocking. + std::size_t receive_with_flags(implementation_type&, + const null_buffers&, socket_base::message_flags, + socket_base::message_flags&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Start an asynchronous receive. The buffer for the data being received + // must be valid for the lifetime of the asynchronous operation. + template + void async_receive_with_flags(implementation_type&, + const MutableBufferSequence&, socket_base::message_flags, + socket_base::message_flags&, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Wait until data can be received without blocking. + template + void async_receive_with_flags(implementation_type&, + const null_buffers&, socket_base::message_flags, + socket_base::message_flags&, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Send a datagram to the specified endpoint. Returns the number of bytes + // sent. + template + std::size_t send_to(implementation_type&, const ConstBufferSequence&, + const endpoint_type&, socket_base::message_flags, + boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Wait until data can be sent without blocking. + std::size_t send_to(implementation_type&, const null_buffers&, + const endpoint_type&, socket_base::message_flags, + boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Start an asynchronous send. The data being sent must be valid for the + // lifetime of the asynchronous operation. + template + void async_send_to(implementation_type&, const ConstBufferSequence&, + const endpoint_type&, socket_base::message_flags, + Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Start an asynchronous wait until data can be sent without blocking. + template + void async_send_to(implementation_type&, const null_buffers&, + const endpoint_type&, socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Receive a datagram with the endpoint of the sender. Returns the number of + // bytes received. + template + std::size_t receive_from(implementation_type&, const MutableBufferSequence&, + endpoint_type&, socket_base::message_flags, + boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Wait until data can be received without blocking. + std::size_t receive_from(implementation_type&, const null_buffers&, + endpoint_type&, socket_base::message_flags, + boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Start an asynchronous receive. The buffer for the data being received and + // the sender_endpoint object must both be valid for the lifetime of the + // asynchronous operation. + template + void async_receive_from(implementation_type&, + const MutableBufferSequence&, endpoint_type&, + socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Wait until data can be received without blocking. + template + void async_receive_from(implementation_type&, + const null_buffers&, endpoint_type&, + socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.post(detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Accept a new connection. + template + boost::system::error_code accept(implementation_type&, + Socket&, endpoint_type*, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Start an asynchronous accept. The peer and peer_endpoint objects + // must be valid until the accept's handler is invoked. + template + void async_accept(implementation_type&, Socket&, + endpoint_type*, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + io_service_.post(detail::bind_handler(handler, ec)); + } + + // Connect the socket to the specified endpoint. + boost::system::error_code connect(implementation_type&, + const endpoint_type&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Start an asynchronous connect. + template + void async_connect(implementation_type&, + const endpoint_type&, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + io_service_.post(detail::bind_handler(handler, ec)); + } + +private: + boost::asio::io_service& io_service_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP diff --git a/3party/boost/boost/asio/detail/null_static_mutex.hpp b/3party/boost/boost/asio/detail/null_static_mutex.hpp index e6c0836f1d..201eefe770 100644 --- a/3party/boost/boost/asio/detail/null_static_mutex.hpp +++ b/3party/boost/boost/asio/detail/null_static_mutex.hpp @@ -2,7 +2,7 @@ // detail/null_static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/null_thread.hpp b/3party/boost/boost/asio/detail/null_thread.hpp index 0d0a86d27f..209ac239b0 100644 --- a/3party/boost/boost/asio/detail/null_thread.hpp +++ b/3party/boost/boost/asio/detail/null_thread.hpp @@ -2,7 +2,7 @@ // detail/null_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/null_tss_ptr.hpp b/3party/boost/boost/asio/detail/null_tss_ptr.hpp index c7cc4eab20..a8f4773c50 100644 --- a/3party/boost/boost/asio/detail/null_tss_ptr.hpp +++ b/3party/boost/boost/asio/detail/null_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/null_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/object_pool.hpp b/3party/boost/boost/asio/detail/object_pool.hpp index 228f6b39ad..c2021a4d75 100644 --- a/3party/boost/boost/asio/detail/object_pool.hpp +++ b/3party/boost/boost/asio/detail/object_pool.hpp @@ -2,7 +2,7 @@ // detail/object_pool.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/old_win_sdk_compat.hpp b/3party/boost/boost/asio/detail/old_win_sdk_compat.hpp index 960feee9b6..df9f2ef6b6 100644 --- a/3party/boost/boost/asio/detail/old_win_sdk_compat.hpp +++ b/3party/boost/boost/asio/detail/old_win_sdk_compat.hpp @@ -2,7 +2,7 @@ // detail/old_win_sdk_compat.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/op_queue.hpp b/3party/boost/boost/asio/detail/op_queue.hpp index 1576ed730c..2b586dd1a7 100644 --- a/3party/boost/boost/asio/detail/op_queue.hpp +++ b/3party/boost/boost/asio/detail/op_queue.hpp @@ -2,7 +2,7 @@ // detail/op_queue.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/operation.hpp b/3party/boost/boost/asio/detail/operation.hpp index af0100c3d2..d67dfa0145 100644 --- a/3party/boost/boost/asio/detail/operation.hpp +++ b/3party/boost/boost/asio/detail/operation.hpp @@ -2,7 +2,7 @@ // detail/operation.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/pipe_select_interrupter.hpp b/3party/boost/boost/asio/detail/pipe_select_interrupter.hpp index 8394ff738a..02a70ae407 100644 --- a/3party/boost/boost/asio/detail/pipe_select_interrupter.hpp +++ b/3party/boost/boost/asio/detail/pipe_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/pipe_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -18,6 +18,7 @@ #include #if !defined(BOOST_ASIO_WINDOWS) +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) #if !defined(__CYGWIN__) #if !defined(__SYMBIAN32__) #if !defined(BOOST_ASIO_HAS_EVENTFD) @@ -84,6 +85,7 @@ private: #endif // !defined(BOOST_ASIO_HAS_EVENTFD) #endif // !defined(__SYMBIAN32__) #endif // !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) #endif // !defined(BOOST_ASIO_WINDOWS) #endif // BOOST_ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP diff --git a/3party/boost/boost/asio/detail/pop_options.hpp b/3party/boost/boost/asio/detail/pop_options.hpp index 2b873884b9..0dd9a455ad 100644 --- a/3party/boost/boost/asio/detail/pop_options.hpp +++ b/3party/boost/boost/asio/detail/pop_options.hpp @@ -2,7 +2,7 @@ // detail/pop_options.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -95,4 +95,11 @@ # pragma warning (pop) # pragma pack (pop) +# if defined(__cplusplus_cli) || defined(__cplusplus_winrt) +# if defined(BOOST_ASIO_CLR_WORKAROUND) +# undef generic +# undef BOOST_ASIO_CLR_WORKAROUND +# endif +# endif + #endif diff --git a/3party/boost/boost/asio/detail/posix_event.hpp b/3party/boost/boost/asio/detail/posix_event.hpp index 90e3fa2c7f..9b633af79d 100644 --- a/3party/boost/boost/asio/detail/posix_event.hpp +++ b/3party/boost/boost/asio/detail/posix_event.hpp @@ -2,7 +2,7 @@ // detail/posix_event.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -42,24 +42,48 @@ public: ::pthread_cond_destroy(&cond_); } - // Signal the event. + // Signal the event. (Retained for backward compatibility.) template void signal(Lock& lock) { - BOOST_ASIO_ASSERT(lock.locked()); - (void)lock; - signalled_ = true; - ::pthread_cond_signal(&cond_); // Ignore EINVAL. + this->signal_all(lock); } - // Signal the event and unlock the mutex. + // Signal all waiters. template - void signal_and_unlock(Lock& lock) + void signal_all(Lock& lock) { BOOST_ASIO_ASSERT(lock.locked()); - signalled_ = true; + (void)lock; + state_ |= 1; + ::pthread_cond_broadcast(&cond_); // Ignore EINVAL. + } + + // Unlock the mutex and signal one waiter. + template + void unlock_and_signal_one(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + state_ |= 1; + bool have_waiters = (state_ > 1); lock.unlock(); - ::pthread_cond_signal(&cond_); // Ignore EINVAL. + if (have_waiters) + ::pthread_cond_signal(&cond_); // Ignore EINVAL. + } + + // If there's a waiter, unlock the mutex and signal it. + template + bool maybe_unlock_and_signal_one(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + state_ |= 1; + if (state_ > 1) + { + lock.unlock(); + ::pthread_cond_signal(&cond_); // Ignore EINVAL. + return true; + } + return false; } // Reset the event. @@ -68,7 +92,7 @@ public: { BOOST_ASIO_ASSERT(lock.locked()); (void)lock; - signalled_ = false; + state_ &= ~std::size_t(1); } // Wait for the event to become signalled. @@ -76,13 +100,17 @@ public: void wait(Lock& lock) { BOOST_ASIO_ASSERT(lock.locked()); - while (!signalled_) + while ((state_ & 1) == 0) + { + state_ += 2; ::pthread_cond_wait(&cond_, &lock.mutex().mutex_); // Ignore EINVAL. + state_ -= 2; + } } private: ::pthread_cond_t cond_; - bool signalled_; + std::size_t state_; }; } // namespace detail diff --git a/3party/boost/boost/asio/detail/posix_fd_set_adapter.hpp b/3party/boost/boost/asio/detail/posix_fd_set_adapter.hpp index fa57edd400..267c983d6a 100644 --- a/3party/boost/boost/asio/detail/posix_fd_set_adapter.hpp +++ b/3party/boost/boost/asio/detail/posix_fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/posix_fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,10 +17,13 @@ #include -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(__CYGWIN__) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) #include #include +#include #include #include @@ -58,6 +61,20 @@ public: return false; } + void set(reactor_op_queue& operations, op_queue& ops) + { + reactor_op_queue::iterator i = operations.begin(); + while (i != operations.end()) + { + reactor_op_queue::iterator op_iter = i++; + if (!set(op_iter->first)) + { + boost::system::error_code ec(error::fd_set_failure); + operations.cancel_operations(op_iter, ops, ec); + } + } + } + bool is_set(socket_type descriptor) const { return FD_ISSET(descriptor, &fd_set_) != 0; @@ -73,6 +90,18 @@ public: return max_descriptor_; } + void perform(reactor_op_queue& operations, + op_queue& ops) const + { + reactor_op_queue::iterator i = operations.begin(); + while (i != operations.end()) + { + reactor_op_queue::iterator op_iter = i++; + if (is_set(op_iter->first)) + operations.perform_operations(op_iter, ops); + } + } + private: mutable fd_set fd_set_; socket_type max_descriptor_; @@ -84,6 +113,8 @@ private: #include -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(__CYGWIN__) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) #endif // BOOST_ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP diff --git a/3party/boost/boost/asio/detail/posix_mutex.hpp b/3party/boost/boost/asio/detail/posix_mutex.hpp index a365179a00..7db2231e84 100644 --- a/3party/boost/boost/asio/detail/posix_mutex.hpp +++ b/3party/boost/boost/asio/detail/posix_mutex.hpp @@ -2,7 +2,7 @@ // detail/posix_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/posix_signal_blocker.hpp b/3party/boost/boost/asio/detail/posix_signal_blocker.hpp index cbceec5462..e069897940 100644 --- a/3party/boost/boost/asio/detail/posix_signal_blocker.hpp +++ b/3party/boost/boost/asio/detail/posix_signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/posix_signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/posix_static_mutex.hpp b/3party/boost/boost/asio/detail/posix_static_mutex.hpp index e44b7b0a9f..a9c278cc46 100644 --- a/3party/boost/boost/asio/detail/posix_static_mutex.hpp +++ b/3party/boost/boost/asio/detail/posix_static_mutex.hpp @@ -2,7 +2,7 @@ // detail/posix_static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/posix_thread.hpp b/3party/boost/boost/asio/detail/posix_thread.hpp index 81cbefe3ab..cf40c9dcf5 100644 --- a/3party/boost/boost/asio/detail/posix_thread.hpp +++ b/3party/boost/boost/asio/detail/posix_thread.hpp @@ -2,7 +2,7 @@ // detail/posix_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/posix_tss_ptr.hpp b/3party/boost/boost/asio/detail/posix_tss_ptr.hpp index 6ec748d781..10abe82e04 100644 --- a/3party/boost/boost/asio/detail/posix_tss_ptr.hpp +++ b/3party/boost/boost/asio/detail/posix_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/posix_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -64,7 +64,6 @@ private: // Thread-specific storage to allow unlocked access to determine whether a // thread is a member of the pool. pthread_key_t tss_key_; - }; } // namespace detail diff --git a/3party/boost/boost/asio/detail/push_options.hpp b/3party/boost/boost/asio/detail/push_options.hpp index eec86f7860..ad72bfbcb4 100644 --- a/3party/boost/boost/asio/detail/push_options.hpp +++ b/3party/boost/boost/asio/detail/push_options.hpp @@ -2,7 +2,7 @@ // detail/push_options.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -103,7 +103,9 @@ # pragma warning (disable:4180) # pragma warning (disable:4244) # pragma warning (disable:4355) +# pragma warning (disable:4510) # pragma warning (disable:4512) +# pragma warning (disable:4610) # pragma warning (disable:4675) # if defined(_M_IX86) && defined(_Wp64) // The /Wp64 option is broken. If you want to check 64 bit portability, use a @@ -124,4 +126,13 @@ # error Multithreaded RTL must be selected. # endif // !defined(_MT) +# if defined(__cplusplus_cli) || defined(__cplusplus_winrt) +# if !defined(BOOST_ASIO_DISABLE_CLR_WORKAROUND) +# if !defined(generic) +# define generic cpp_generic +# define BOOST_ASIO_CLR_WORKAROUND +# endif +# endif +# endif + #endif diff --git a/3party/boost/boost/asio/detail/reactive_descriptor_service.hpp b/3party/boost/boost/asio/detail/reactive_descriptor_service.hpp index 134fcbb73d..10b2f3f2a8 100644 --- a/3party/boost/boost/asio/detail/reactive_descriptor_service.hpp +++ b/3party/boost/boost/asio/detail/reactive_descriptor_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_descriptor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,7 +17,9 @@ #include -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) #include #include @@ -315,6 +317,8 @@ private: # include #endif // defined(BOOST_ASIO_HEADER_ONLY) -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) #endif // BOOST_ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP diff --git a/3party/boost/boost/asio/detail/reactive_null_buffers_op.hpp b/3party/boost/boost/asio/detail/reactive_null_buffers_op.hpp index 7d0f81eb1b..39aaa602d8 100644 --- a/3party/boost/boost/asio/detail/reactive_null_buffers_op.hpp +++ b/3party/boost/boost/asio/detail/reactive_null_buffers_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_null_buffers_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/reactive_serial_port_service.hpp b/3party/boost/boost/asio/detail/reactive_serial_port_service.hpp index 9e58eaa8ed..86d8300b6b 100644 --- a/3party/boost/boost/asio/detail/reactive_serial_port_service.hpp +++ b/3party/boost/boost/asio/detail/reactive_serial_port_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/reactive_socket_accept_op.hpp b/3party/boost/boost/asio/detail/reactive_socket_accept_op.hpp index 75f9f6410c..93ece02dd3 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_accept_op.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_accept_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_accept_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -58,7 +58,7 @@ public: o->peer_endpoint_ ? &addrlen : 0, o->ec_, new_socket); // On success, assign new connection to peer socket object. - if (new_socket >= 0) + if (new_socket != invalid_socket) { socket_holder new_socket_holder(new_socket); if (o->peer_endpoint_) diff --git a/3party/boost/boost/asio/detail/reactive_socket_connect_op.hpp b/3party/boost/boost/asio/detail/reactive_socket_connect_op.hpp index a603f26cbd..254c9f4427 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_connect_op.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_connect_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_connect_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -29,15 +29,12 @@ namespace boost { namespace asio { namespace detail { -template class reactive_socket_connect_op_base : public reactor_op { public: - reactive_socket_connect_op_base(socket_type socket, - const typename Protocol::endpoint& peer_endpoint, func_type complete_func) + reactive_socket_connect_op_base(socket_type socket, func_type complete_func) : reactor_op(&reactive_socket_connect_op_base::do_perform, complete_func), - socket_(socket), - peer_endpoint_(peer_endpoint) + socket_(socket) { } @@ -46,25 +43,21 @@ public: reactive_socket_connect_op_base* o( static_cast(base)); - return socket_ops::non_blocking_connect(o->socket_, - o->peer_endpoint_.data(), o->peer_endpoint_.size(), o->ec_); + return socket_ops::non_blocking_connect(o->socket_, o->ec_); } private: socket_type socket_; - typename Protocol::endpoint peer_endpoint_; }; -template -class reactive_socket_connect_op : - public reactive_socket_connect_op_base +template +class reactive_socket_connect_op : public reactive_socket_connect_op_base { public: BOOST_ASIO_DEFINE_HANDLER_PTR(reactive_socket_connect_op); - reactive_socket_connect_op(socket_type socket, - const typename Protocol::endpoint& peer_endpoint, Handler& handler) - : reactive_socket_connect_op_base(socket, peer_endpoint, + reactive_socket_connect_op(socket_type socket, Handler& handler) + : reactive_socket_connect_op_base(socket, &reactive_socket_connect_op::do_complete), handler_(BOOST_ASIO_MOVE_CAST(Handler)(handler)) { diff --git a/3party/boost/boost/asio/detail/reactive_socket_recv_op.hpp b/3party/boost/boost/asio/detail/reactive_socket_recv_op.hpp index 04e584f530..d6a124d4b2 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_recv_op.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_recv_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_recv_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/reactive_socket_recvfrom_op.hpp b/3party/boost/boost/asio/detail/reactive_socket_recvfrom_op.hpp index ed1363a9c0..ef806bcf9f 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_recvfrom_op.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_recvfrom_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_recvfrom_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/reactive_socket_recvmsg_op.hpp b/3party/boost/boost/asio/detail/reactive_socket_recvmsg_op.hpp index 62f49abd1f..b6e0e3a96f 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_recvmsg_op.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_recvmsg_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_recvmsg_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/reactive_socket_send_op.hpp b/3party/boost/boost/asio/detail/reactive_socket_send_op.hpp index bde2fe2aab..a3a44244a1 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_send_op.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_send_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_send_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/reactive_socket_sendto_op.hpp b/3party/boost/boost/asio/detail/reactive_socket_sendto_op.hpp index 0fb78eaf99..ffa1e6858f 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_sendto_op.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_sendto_op.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_sendto_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/reactive_socket_service.hpp b/3party/boost/boost/asio/detail/reactive_socket_service.hpp index e902708689..35678ae93e 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_service.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_service.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -434,11 +434,11 @@ public: boost_asio_handler_cont_helpers::is_continuation(handler); // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_connect_op op; + typedef reactive_socket_connect_op op; typename op::ptr p = { boost::asio::detail::addressof(handler), boost_asio_handler_alloc_helpers::allocate( sizeof(op), handler), 0 }; - p.p = new (p.v) op(impl.socket_, peer_endpoint, handler); + p.p = new (p.v) op(impl.socket_, handler); BOOST_ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect")); diff --git a/3party/boost/boost/asio/detail/reactive_socket_service_base.hpp b/3party/boost/boost/asio/detail/reactive_socket_service_base.hpp index 520424315d..aeaf4f4053 100644 --- a/3party/boost/boost/asio/detail/reactive_socket_service_base.hpp +++ b/3party/boost/boost/asio/detail/reactive_socket_service_base.hpp @@ -2,7 +2,7 @@ // detail/reactive_socket_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,7 +17,8 @@ #include -#if !defined(BOOST_ASIO_HAS_IOCP) +#if !defined(BOOST_ASIO_HAS_IOCP) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) #include #include @@ -198,7 +199,7 @@ public: template void async_send(base_implementation_type& impl, const ConstBufferSequence& buffers, - socket_base::message_flags flags, Handler handler) + socket_base::message_flags flags, Handler& handler) { bool is_continuation = boost_asio_handler_cont_helpers::is_continuation(handler); @@ -222,7 +223,7 @@ public: // Start an asynchronous wait until data can be sent without blocking. template void async_send(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags, Handler handler) + socket_base::message_flags, Handler& handler) { bool is_continuation = boost_asio_handler_cont_helpers::is_continuation(handler); @@ -269,7 +270,7 @@ public: template void async_receive(base_implementation_type& impl, const MutableBufferSequence& buffers, - socket_base::message_flags flags, Handler handler) + socket_base::message_flags flags, Handler& handler) { bool is_continuation = boost_asio_handler_cont_helpers::is_continuation(handler); @@ -297,7 +298,7 @@ public: // Wait until data can be received without blocking. template void async_receive(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags flags, Handler handler) + socket_base::message_flags flags, Handler& handler) { bool is_continuation = boost_asio_handler_cont_helpers::is_continuation(handler); @@ -354,7 +355,7 @@ public: template void async_receive_with_flags(base_implementation_type& impl, const MutableBufferSequence& buffers, socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler handler) + socket_base::message_flags& out_flags, Handler& handler) { bool is_continuation = boost_asio_handler_cont_helpers::is_continuation(handler); @@ -381,7 +382,7 @@ public: template void async_receive_with_flags(base_implementation_type& impl, const null_buffers&, socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler handler) + socket_base::message_flags& out_flags, Handler& handler) { bool is_continuation = boost_asio_handler_cont_helpers::is_continuation(handler); @@ -446,5 +447,6 @@ protected: #endif // defined(BOOST_ASIO_HEADER_ONLY) #endif // !defined(BOOST_ASIO_HAS_IOCP) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) #endif // BOOST_ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP diff --git a/3party/boost/boost/asio/detail/reactor.hpp b/3party/boost/boost/asio/detail/reactor.hpp index 29f51dc204..e183793d1c 100644 --- a/3party/boost/boost/asio/detail/reactor.hpp +++ b/3party/boost/boost/asio/detail/reactor.hpp @@ -2,7 +2,7 @@ // detail/reactor.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,6 +23,8 @@ # include #elif defined(BOOST_ASIO_HAS_DEV_POLL) # include +#elif defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include #else # include #endif diff --git a/3party/boost/boost/asio/detail/reactor_fwd.hpp b/3party/boost/boost/asio/detail/reactor_fwd.hpp index 58c86aaa55..80f40322b0 100644 --- a/3party/boost/boost/asio/detail/reactor_fwd.hpp +++ b/3party/boost/boost/asio/detail/reactor_fwd.hpp @@ -2,7 +2,7 @@ // detail/reactor_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,32 +17,22 @@ #include -#if defined(BOOST_ASIO_HAS_IOCP) -# include -#elif defined(BOOST_ASIO_HAS_EPOLL) -# include -#elif defined(BOOST_ASIO_HAS_KQUEUE) -# include -#elif defined(BOOST_ASIO_HAS_DEV_POLL) -# include -#else -# include -#endif - namespace boost { namespace asio { namespace detail { -#if defined(BOOST_ASIO_HAS_IOCP) -typedef select_reactor reactor; +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +typedef class null_reactor reactor; +#elif defined(BOOST_ASIO_HAS_IOCP) +typedef class select_reactor reactor; #elif defined(BOOST_ASIO_HAS_EPOLL) -typedef epoll_reactor reactor; +typedef class epoll_reactor reactor; #elif defined(BOOST_ASIO_HAS_KQUEUE) -typedef kqueue_reactor reactor; +typedef class kqueue_reactor reactor; #elif defined(BOOST_ASIO_HAS_DEV_POLL) -typedef dev_poll_reactor reactor; +typedef class dev_poll_reactor reactor; #else -typedef select_reactor reactor; +typedef class select_reactor reactor; #endif } // namespace detail diff --git a/3party/boost/boost/asio/detail/reactor_op.hpp b/3party/boost/boost/asio/detail/reactor_op.hpp index c8e3ee43bc..959badd20a 100644 --- a/3party/boost/boost/asio/detail/reactor_op.hpp +++ b/3party/boost/boost/asio/detail/reactor_op.hpp @@ -2,7 +2,7 @@ // detail/reactor_op.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/reactor_op_queue.hpp b/3party/boost/boost/asio/detail/reactor_op_queue.hpp index 1d196e946b..effe771730 100644 --- a/3party/boost/boost/asio/detail/reactor_op_queue.hpp +++ b/3party/boost/boost/asio/detail/reactor_op_queue.hpp @@ -2,7 +2,7 @@ // detail/reactor_op_queue.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -33,41 +33,54 @@ class reactor_op_queue : private noncopyable { public: + typedef Descriptor key_type; + + struct mapped_type : op_queue + { + mapped_type() {} + mapped_type(const mapped_type&) {} + void operator=(const mapped_type&) {} + }; + + typedef typename hash_map::value_type value_type; + typedef typename hash_map::iterator iterator; + // Constructor. reactor_op_queue() : operations_() { } + // Obtain iterators to all registered descriptors. + iterator begin() { return operations_.begin(); } + iterator end() { return operations_.end(); } + // Add a new operation to the queue. Returns true if this is the only // operation for the given descriptor, in which case the reactor's event // demultiplexing function call may need to be interrupted and restarted. bool enqueue_operation(Descriptor descriptor, reactor_op* op) { - typedef typename operations_map::iterator iterator; - typedef typename operations_map::value_type value_type; std::pair entry = - operations_.insert(value_type(descriptor, operations())); - entry.first->second.op_queue_.push(op); + operations_.insert(value_type(descriptor, mapped_type())); + entry.first->second.push(op); return entry.second; } - // Cancel all operations associated with the descriptor. Any operations - // pending for the descriptor will be notified that they have been cancelled - // next time perform_cancellations is called. Returns true if any operations - // were cancelled, in which case the reactor's event demultiplexing function - // may need to be interrupted and restarted. - bool cancel_operations(Descriptor descriptor, op_queue& ops, + // Cancel all operations associated with the descriptor identified by the + // supplied iterator. Any operations pending for the descriptor will be + // cancelled. Returns true if any operations were cancelled, in which case + // the reactor's event demultiplexing function may need to be interrupted and + // restarted. + bool cancel_operations(iterator i, op_queue& ops, const boost::system::error_code& ec = boost::asio::error::operation_aborted) { - typename operations_map::iterator i = operations_.find(descriptor); if (i != operations_.end()) { - while (reactor_op* op = i->second.op_queue_.front()) + while (reactor_op* op = i->second.front()) { op->ec_ = ec; - i->second.op_queue_.pop(); + i->second.pop(); ops.push(op); } operations_.erase(i); @@ -77,6 +90,17 @@ public: return false; } + // Cancel all operations associated with the descriptor. Any operations + // pending for the descriptor will be cancelled. Returns true if any + // operations were cancelled, in which case the reactor's event + // demultiplexing function may need to be interrupted and restarted. + bool cancel_operations(Descriptor descriptor, op_queue& ops, + const boost::system::error_code& ec = + boost::asio::error::operation_aborted) + { + return this->cancel_operations(operations_.find(descriptor), ops, ec); + } + // Whether there are no operations in the queue. bool empty() const { @@ -89,18 +113,18 @@ public: return operations_.find(descriptor) != operations_.end(); } - // Perform the operations corresponding to the descriptor. Returns true if - // there are still unfinished operations queued for the descriptor. - bool perform_operations(Descriptor descriptor, op_queue& ops) + // Perform the operations corresponding to the descriptor identified by the + // supplied iterator. Returns true if there are still unfinished operations + // queued for the descriptor. + bool perform_operations(iterator i, op_queue& ops) { - typename operations_map::iterator i = operations_.find(descriptor); if (i != operations_.end()) { - while (reactor_op* op = i->second.op_queue_.front()) + while (reactor_op* op = i->second.front()) { if (op->perform()) { - i->second.op_queue_.pop(); + i->second.pop(); ops.push(op); } else @@ -113,84 +137,28 @@ public: return false; } - // Fill a descriptor set with the descriptors corresponding to each active - // operation. The op_queue is used only when descriptors fail to be added to - // the descriptor set. - template - void get_descriptors(Descriptor_Set& descriptors, op_queue& ops) + // Perform the operations corresponding to the descriptor. Returns true if + // there are still unfinished operations queued for the descriptor. + bool perform_operations(Descriptor descriptor, op_queue& ops) { - typename operations_map::iterator i = operations_.begin(); - while (i != operations_.end()) - { - Descriptor descriptor = i->first; - ++i; - if (!descriptors.set(descriptor)) - { - boost::system::error_code ec(error::fd_set_failure); - cancel_operations(descriptor, ops, ec); - } - } - } - - // Perform the operations corresponding to the ready file descriptors - // contained in the given descriptor set. - template - void perform_operations_for_descriptors( - const Descriptor_Set& descriptors, op_queue& ops) - { - typename operations_map::iterator i = operations_.begin(); - while (i != operations_.end()) - { - typename operations_map::iterator op_iter = i++; - if (descriptors.is_set(op_iter->first)) - { - while (reactor_op* op = op_iter->second.op_queue_.front()) - { - if (op->perform()) - { - op_iter->second.op_queue_.pop(); - ops.push(op); - } - else - { - break; - } - } - - if (op_iter->second.op_queue_.empty()) - operations_.erase(op_iter); - } - } + return this->perform_operations(operations_.find(descriptor), ops); } // Get all operations owned by the queue. void get_all_operations(op_queue& ops) { - typename operations_map::iterator i = operations_.begin(); + iterator i = operations_.begin(); while (i != operations_.end()) { - typename operations_map::iterator op_iter = i++; - ops.push(op_iter->second.op_queue_); + iterator op_iter = i++; + ops.push(op_iter->second); operations_.erase(op_iter); } } private: - struct operations - { - operations() {} - operations(const operations&) {} - void operator=(const operations&) {} - - // The operations waiting on the desccriptor. - op_queue op_queue_; - }; - - // The type for a map of operations. - typedef hash_map operations_map; - // The operations that are currently executing asynchronously. - operations_map operations_; + hash_map operations_; }; } // namespace detail diff --git a/3party/boost/boost/asio/detail/regex_fwd.hpp b/3party/boost/boost/asio/detail/regex_fwd.hpp index e87a74a155..2b23b59d93 100644 --- a/3party/boost/boost/asio/detail/regex_fwd.hpp +++ b/3party/boost/boost/asio/detail/regex_fwd.hpp @@ -2,7 +2,7 @@ // detail/regex_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/resolve_endpoint_op.hpp b/3party/boost/boost/asio/detail/resolve_endpoint_op.hpp index 2c0cfd3fd0..28119bbef5 100644 --- a/3party/boost/boost/asio/detail/resolve_endpoint_op.hpp +++ b/3party/boost/boost/asio/detail/resolve_endpoint_op.hpp @@ -2,7 +2,7 @@ // detail/resolve_endpoint_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/resolve_op.hpp b/3party/boost/boost/asio/detail/resolve_op.hpp index 8528ed5ad6..bed1c3c60f 100644 --- a/3party/boost/boost/asio/detail/resolve_op.hpp +++ b/3party/boost/boost/asio/detail/resolve_op.hpp @@ -2,7 +2,7 @@ // detail/resolve_op.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/resolver_service.hpp b/3party/boost/boost/asio/detail/resolver_service.hpp index f4f3907c15..4ba295d155 100644 --- a/3party/boost/boost/asio/detail/resolver_service.hpp +++ b/3party/boost/boost/asio/detail/resolver_service.hpp @@ -2,7 +2,7 @@ // detail/resolver_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,6 +16,9 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include + +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #include #include #include @@ -123,4 +126,6 @@ public: #include +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #endif // BOOST_ASIO_DETAIL_RESOLVER_SERVICE_HPP diff --git a/3party/boost/boost/asio/detail/resolver_service_base.hpp b/3party/boost/boost/asio/detail/resolver_service_base.hpp index f618026eb3..0c00896097 100644 --- a/3party/boost/boost/asio/detail/resolver_service_base.hpp +++ b/3party/boost/boost/asio/detail/resolver_service_base.hpp @@ -2,7 +2,7 @@ // detail/resolver_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -65,6 +65,7 @@ protected: // Helper function to start an asynchronous resolve operation. BOOST_ASIO_DECL void start_resolve_op(operation* op); +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) // Helper class to perform exception-safe cleanup of addrinfo objects. class auto_addrinfo : private boost::asio::detail::noncopyable @@ -89,6 +90,7 @@ protected: private: boost::asio::detail::addrinfo_type* ai_; }; +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) // Helper class to run the work io_service in a thread. class work_io_service_runner; diff --git a/3party/boost/boost/asio/detail/scoped_lock.hpp b/3party/boost/boost/asio/detail/scoped_lock.hpp index c548dd5381..848864e97f 100644 --- a/3party/boost/boost/asio/detail/scoped_lock.hpp +++ b/3party/boost/boost/asio/detail/scoped_lock.hpp @@ -2,7 +2,7 @@ // detail/scoped_lock.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/scoped_ptr.hpp b/3party/boost/boost/asio/detail/scoped_ptr.hpp index d4361fd559..5df78f7415 100644 --- a/3party/boost/boost/asio/detail/scoped_ptr.hpp +++ b/3party/boost/boost/asio/detail/scoped_ptr.hpp @@ -2,7 +2,7 @@ // detail/scoped_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/select_interrupter.hpp b/3party/boost/boost/asio/detail/select_interrupter.hpp index 65caa097ae..4f802d1cbe 100644 --- a/3party/boost/boost/asio/detail/select_interrupter.hpp +++ b/3party/boost/boost/asio/detail/select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,6 +17,8 @@ #include +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__) # include #elif defined(BOOST_ASIO_HAS_EVENTFD) @@ -41,4 +43,6 @@ typedef pipe_select_interrupter select_interrupter; } // namespace asio } // namespace boost +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #endif // BOOST_ASIO_DETAIL_SELECT_INTERRUPTER_HPP diff --git a/3party/boost/boost/asio/detail/select_reactor.hpp b/3party/boost/boost/asio/detail/select_reactor.hpp index f5907694be..6d3b2432c6 100644 --- a/3party/boost/boost/asio/detail/select_reactor.hpp +++ b/3party/boost/boost/asio/detail/select_reactor.hpp @@ -2,7 +2,7 @@ // detail/select_reactor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -20,7 +20,8 @@ #if defined(BOOST_ASIO_HAS_IOCP) \ || (!defined(BOOST_ASIO_HAS_DEV_POLL) \ && !defined(BOOST_ASIO_HAS_EPOLL) \ - && !defined(BOOST_ASIO_HAS_KQUEUE)) + && !defined(BOOST_ASIO_HAS_KQUEUE) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME)) #include #include @@ -30,10 +31,8 @@ #include #include #include -#include #include #include -#include #include #include #include @@ -216,6 +215,7 @@ private: #endif // defined(BOOST_ASIO_HAS_IOCP) // || (!defined(BOOST_ASIO_HAS_DEV_POLL) // && !defined(BOOST_ASIO_HAS_EPOLL) - // && !defined(BOOST_ASIO_HAS_KQUEUE)) + // && !defined(BOOST_ASIO_HAS_KQUEUE) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME)) #endif // BOOST_ASIO_DETAIL_SELECT_REACTOR_HPP diff --git a/3party/boost/boost/asio/detail/select_reactor_fwd.hpp b/3party/boost/boost/asio/detail/select_reactor_fwd.hpp deleted file mode 100644 index f5a7a0ca1c..0000000000 --- a/3party/boost/boost/asio/detail/select_reactor_fwd.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// -// detail/select_reactor_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef BOOST_ASIO_DETAIL_SELECT_REACTOR_FWD_HPP -#define BOOST_ASIO_DETAIL_SELECT_REACTOR_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -namespace boost { -namespace asio { -namespace detail { - -class select_reactor; - -} // namespace detail -} // namespace asio -} // namespace boost - -#endif // BOOST_ASIO_DETAIL_SELECT_REACTOR_FWD_HPP diff --git a/3party/boost/boost/asio/detail/service_registry.hpp b/3party/boost/boost/asio/detail/service_registry.hpp index 1d4f84f8a1..bfd80fc8da 100644 --- a/3party/boost/boost/asio/detail/service_registry.hpp +++ b/3party/boost/boost/asio/detail/service_registry.hpp @@ -2,7 +2,7 @@ // detail/service_registry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/service_registry_fwd.hpp b/3party/boost/boost/asio/detail/service_registry_fwd.hpp deleted file mode 100644 index 8304cd0f37..0000000000 --- a/3party/boost/boost/asio/detail/service_registry_fwd.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// -// detail/service_registry_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef BOOST_ASIO_DETAIL_SERVICE_REGISTRY_FWD_HPP -#define BOOST_ASIO_DETAIL_SERVICE_REGISTRY_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -namespace boost { -namespace asio { -namespace detail { - -class service_registry; - -} // namespace detail -} // namespace asio -} // namespace boost - -#endif // BOOST_ASIO_DETAIL_SERVICE_REGISTRY_FWD_HPP diff --git a/3party/boost/boost/asio/detail/shared_ptr.hpp b/3party/boost/boost/asio/detail/shared_ptr.hpp index bbf61909c0..3c79f61236 100644 --- a/3party/boost/boost/asio/detail/shared_ptr.hpp +++ b/3party/boost/boost/asio/detail/shared_ptr.hpp @@ -2,7 +2,7 @@ // detail/shared_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/signal_blocker.hpp b/3party/boost/boost/asio/detail/signal_blocker.hpp index 559ef13942..ad6babaf3c 100644 --- a/3party/boost/boost/asio/detail/signal_blocker.hpp +++ b/3party/boost/boost/asio/detail/signal_blocker.hpp @@ -2,7 +2,7 @@ // detail/signal_blocker.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -18,6 +18,7 @@ #include #if !defined(BOOST_ASIO_HAS_THREADS) || defined(BOOST_ASIO_WINDOWS) \ + || defined(BOOST_ASIO_WINDOWS_RUNTIME) \ || defined(__CYGWIN__) || defined(__SYMBIAN32__) # include #elif defined(BOOST_ASIO_HAS_PTHREADS) @@ -31,6 +32,7 @@ namespace asio { namespace detail { #if !defined(BOOST_ASIO_HAS_THREADS) || defined(BOOST_ASIO_WINDOWS) \ + || defined(BOOST_ASIO_WINDOWS_RUNTIME) \ || defined(__CYGWIN__) || defined(__SYMBIAN32__) typedef null_signal_blocker signal_blocker; #elif defined(BOOST_ASIO_HAS_PTHREADS) diff --git a/3party/boost/boost/asio/detail/signal_handler.hpp b/3party/boost/boost/asio/detail/signal_handler.hpp index f3bcdbee3b..32ce844b8d 100644 --- a/3party/boost/boost/asio/detail/signal_handler.hpp +++ b/3party/boost/boost/asio/detail/signal_handler.hpp @@ -2,7 +2,7 @@ // detail/signal_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/signal_init.hpp b/3party/boost/boost/asio/detail/signal_init.hpp index c9483dab9a..0dc65586f4 100644 --- a/3party/boost/boost/asio/detail/signal_init.hpp +++ b/3party/boost/boost/asio/detail/signal_init.hpp @@ -2,7 +2,7 @@ // detail/signal_init.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/signal_op.hpp b/3party/boost/boost/asio/detail/signal_op.hpp index 9df0d9bcbd..e75d4126d7 100644 --- a/3party/boost/boost/asio/detail/signal_op.hpp +++ b/3party/boost/boost/asio/detail/signal_op.hpp @@ -2,7 +2,7 @@ // detail/signal_op.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/signal_set_service.hpp b/3party/boost/boost/asio/detail/signal_set_service.hpp index c833057c81..9949f04436 100644 --- a/3party/boost/boost/asio/detail/signal_set_service.hpp +++ b/3party/boost/boost/asio/detail/signal_set_service.hpp @@ -2,7 +2,7 @@ // detail/signal_set_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -46,7 +46,7 @@ enum { max_signal_number = 128 }; extern BOOST_ASIO_DECL struct signal_state* get_signal_state(); -extern "C" BOOST_ASIO_DECL void asio_signal_handler(int signal_number); +extern "C" BOOST_ASIO_DECL void boost_asio_signal_handler(int signal_number); class signal_set_service { @@ -182,7 +182,9 @@ private: // The io_service instance used for dispatching handlers. io_service_impl& io_service_; -#if !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#if !defined(BOOST_ASIO_WINDOWS) \ + && !defined(BOOST_ASIO_WINDOWS_RUNTIME) \ + && !defined(__CYGWIN__) // The type used for registering for pipe reactor notifications. class pipe_read_op; @@ -191,7 +193,9 @@ private: // The per-descriptor reactor data used for the pipe. reactor::per_descriptor_data reactor_data_; -#endif // !defined(BOOST_ASIO_WINDOWS) && !defined(__CYGWIN__) +#endif // !defined(BOOST_ASIO_WINDOWS) + // && !defined(BOOST_ASIO_WINDOWS_RUNTIME) + // && !defined(__CYGWIN__) // A mapping from signal number to the registered signal sets. registration* registrations_[max_signal_number]; diff --git a/3party/boost/boost/asio/detail/socket_holder.hpp b/3party/boost/boost/asio/detail/socket_holder.hpp index 0adbeed3c6..81f4142727 100644 --- a/3party/boost/boost/asio/detail/socket_holder.hpp +++ b/3party/boost/boost/asio/detail/socket_holder.hpp @@ -2,7 +2,7 @@ // detail/socket_holder.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/socket_ops.hpp b/3party/boost/boost/asio/detail/socket_ops.hpp index da736fa14c..04a28ef9e1 100644 --- a/3party/boost/boost/asio/detail/socket_ops.hpp +++ b/3party/boost/boost/asio/detail/socket_ops.hpp @@ -2,7 +2,7 @@ // detail/socket_ops.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -63,6 +63,8 @@ struct noop_deleter { void operator()(void*) {} }; typedef shared_ptr shared_cancel_token_type; typedef weak_ptr weak_cancel_token_type; +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + BOOST_ASIO_DECL socket_type accept(socket_type s, socket_addr_type* addr, std::size_t* addrlen, boost::system::error_code& ec); @@ -106,8 +108,14 @@ BOOST_ASIO_DECL int connect(socket_type s, const socket_addr_type* addr, BOOST_ASIO_DECL void sync_connect(socket_type s, const socket_addr_type* addr, std::size_t addrlen, boost::system::error_code& ec); +#if defined(BOOST_ASIO_HAS_IOCP) + +BOOST_ASIO_DECL void complete_iocp_connect(socket_type s, + boost::system::error_code& ec); + +#endif // defined(BOOST_ASIO_HAS_IOCP) + BOOST_ASIO_DECL bool non_blocking_connect(socket_type s, - const socket_addr_type* addr, std::size_t addrlen, boost::system::error_code& ec); BOOST_ASIO_DECL int socketpair(int af, int type, int protocol, @@ -264,6 +272,8 @@ BOOST_ASIO_DECL int poll_write(socket_type s, BOOST_ASIO_DECL int poll_connect(socket_type s, boost::system::error_code& ec); +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + BOOST_ASIO_DECL const char* inet_ntop(int af, const void* src, char* dest, size_t length, unsigned long scope_id, boost::system::error_code& ec); @@ -273,6 +283,8 @@ BOOST_ASIO_DECL int inet_pton(int af, const char* src, void* dest, BOOST_ASIO_DECL int gethostname(char* name, int namelen, boost::system::error_code& ec); +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + BOOST_ASIO_DECL boost::system::error_code getaddrinfo(const char* host, const char* service, const addrinfo_type& hints, addrinfo_type** result, boost::system::error_code& ec); @@ -300,6 +312,8 @@ BOOST_ASIO_DECL boost::system::error_code background_getnameinfo( char* host, std::size_t hostlen, char* serv, std::size_t servlen, int sock_type, boost::system::error_code& ec); +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + BOOST_ASIO_DECL u_long_type network_to_host_long(u_long_type value); BOOST_ASIO_DECL u_long_type host_to_network_long(u_long_type value); diff --git a/3party/boost/boost/asio/detail/socket_option.hpp b/3party/boost/boost/asio/detail/socket_option.hpp index 6f28dc5716..2fe5ee4d15 100644 --- a/3party/boost/boost/asio/detail/socket_option.hpp +++ b/3party/boost/boost/asio/detail/socket_option.hpp @@ -2,7 +2,7 @@ // detail/socket_option.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -274,14 +274,14 @@ public: // Get the address of the linger data. template - ::linger* data(const Protocol&) + detail::linger_type* data(const Protocol&) { return &value_; } // Get the address of the linger data. template - const ::linger* data(const Protocol&) const + const detail::linger_type* data(const Protocol&) const { return &value_; } @@ -305,7 +305,7 @@ public: } private: - ::linger value_; + detail::linger_type value_; }; } // namespace socket_option diff --git a/3party/boost/boost/asio/detail/socket_select_interrupter.hpp b/3party/boost/boost/asio/detail/socket_select_interrupter.hpp index 94fc3d7e7c..38f140ddfa 100644 --- a/3party/boost/boost/asio/detail/socket_select_interrupter.hpp +++ b/3party/boost/boost/asio/detail/socket_select_interrupter.hpp @@ -2,7 +2,7 @@ // detail/socket_select_interrupter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,6 +17,8 @@ #include +#if !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #if defined(BOOST_ASIO_WINDOWS) \ || defined(__CYGWIN__) \ || defined(__SYMBIAN32__) @@ -86,4 +88,6 @@ private: // || defined(__CYGWIN__) // || defined(__SYMBIAN32__) +#endif // !defined(BOOST_ASIO_WINDOWS_RUNTIME) + #endif // BOOST_ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP diff --git a/3party/boost/boost/asio/detail/socket_types.hpp b/3party/boost/boost/asio/detail/socket_types.hpp index e17c77fdd1..29e4739a96 100644 --- a/3party/boost/boost/asio/detail/socket_types.hpp +++ b/3party/boost/boost/asio/detail/socket_types.hpp @@ -2,7 +2,7 @@ // detail/socket_types.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,7 +17,9 @@ #include -#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +// Empty. +#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) # if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_) # error WinSock.h has already been included # endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_) @@ -28,6 +30,11 @@ # define BOOST_ASIO_WSPIAPI_H_DEFINED # endif // !defined(_WSPIAPI_H_) # endif // defined(__BORLANDC__) +# if defined(WINAPI_FAMILY) +# if ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0) +# include +# endif // ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0) +# endif // defined(WINAPI_FAMILY) # include # include # include @@ -81,7 +88,88 @@ namespace boost { namespace asio { namespace detail { -#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +const int max_addr_v4_str_len = 256; +const int max_addr_v6_str_len = 256; +typedef unsigned __int32 u_long_type; +typedef unsigned __int16 u_short_type; +struct in4_addr_type { u_long_type s_addr; }; +struct in4_mreq_type { in4_addr_type imr_multiaddr, imr_interface; }; +struct in6_addr_type { unsigned char s6_addr[16]; }; +struct in6_mreq_type { in6_addr_type ipv6mr_multiaddr; + unsigned long ipv6mr_interface; }; +struct socket_addr_type { int sa_family; }; +struct sockaddr_in4_type { int sin_family; + in4_addr_type sin_addr; u_short_type sin_port; }; +struct sockaddr_in6_type { int sin6_family; + in6_addr_type sin6_addr; u_short_type sin6_port; + u_long_type sin6_flowinfo; u_long_type sin6_scope_id; }; +struct sockaddr_storage_type { int ss_family; + unsigned char ss_bytes[128 - sizeof(int)]; }; +struct addrinfo_type { int ai_flags; + int ai_family, ai_socktype, ai_protocol; + int ai_addrlen; const void* ai_addr; + const char* ai_canonname; addrinfo_type* ai_next; }; +struct linger_type { u_short_type l_onoff, l_linger; }; +typedef u_long_type ioctl_arg_type; +typedef int signed_size_type; +# define BOOST_ASIO_OS_DEF(c) BOOST_ASIO_OS_DEF_##c +# define BOOST_ASIO_OS_DEF_AF_UNSPEC 0 +# define BOOST_ASIO_OS_DEF_AF_INET 2 +# define BOOST_ASIO_OS_DEF_AF_INET6 23 +# define BOOST_ASIO_OS_DEF_SOCK_STREAM 1 +# define BOOST_ASIO_OS_DEF_SOCK_DGRAM 2 +# define BOOST_ASIO_OS_DEF_SOCK_RAW 3 +# define BOOST_ASIO_OS_DEF_SOCK_SEQPACKET 5 +# define BOOST_ASIO_OS_DEF_IPPROTO_IP 0 +# define BOOST_ASIO_OS_DEF_IPPROTO_IPV6 41 +# define BOOST_ASIO_OS_DEF_IPPROTO_TCP 6 +# define BOOST_ASIO_OS_DEF_IPPROTO_UDP 17 +# define BOOST_ASIO_OS_DEF_IPPROTO_ICMP 1 +# define BOOST_ASIO_OS_DEF_IPPROTO_ICMPV6 58 +# define BOOST_ASIO_OS_DEF_FIONBIO 1 +# define BOOST_ASIO_OS_DEF_FIONREAD 2 +# define BOOST_ASIO_OS_DEF_INADDR_ANY 0 +# define BOOST_ASIO_OS_DEF_MSG_OOB 0x1 +# define BOOST_ASIO_OS_DEF_MSG_PEEK 0x2 +# define BOOST_ASIO_OS_DEF_MSG_DONTROUTE 0x4 +# define BOOST_ASIO_OS_DEF_MSG_EOR 0 // Not supported. +# define BOOST_ASIO_OS_DEF_SHUT_RD 0x0 +# define BOOST_ASIO_OS_DEF_SHUT_WR 0x1 +# define BOOST_ASIO_OS_DEF_SHUT_RDWR 0x2 +# define BOOST_ASIO_OS_DEF_SOMAXCONN 0x7fffffff +# define BOOST_ASIO_OS_DEF_SOL_SOCKET 0xffff +# define BOOST_ASIO_OS_DEF_SO_BROADCAST 0x20 +# define BOOST_ASIO_OS_DEF_SO_DEBUG 0x1 +# define BOOST_ASIO_OS_DEF_SO_DONTROUTE 0x10 +# define BOOST_ASIO_OS_DEF_SO_KEEPALIVE 0x8 +# define BOOST_ASIO_OS_DEF_SO_LINGER 0x80 +# define BOOST_ASIO_OS_DEF_SO_SNDBUF 0x1001 +# define BOOST_ASIO_OS_DEF_SO_RCVBUF 0x1002 +# define BOOST_ASIO_OS_DEF_SO_SNDLOWAT 0x1003 +# define BOOST_ASIO_OS_DEF_SO_RCVLOWAT 0x1004 +# define BOOST_ASIO_OS_DEF_SO_REUSEADDR 0x4 +# define BOOST_ASIO_OS_DEF_TCP_NODELAY 0x1 +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_IF 2 +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_TTL 3 +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_LOOP 4 +# define BOOST_ASIO_OS_DEF_IP_ADD_MEMBERSHIP 5 +# define BOOST_ASIO_OS_DEF_IP_DROP_MEMBERSHIP 6 +# define BOOST_ASIO_OS_DEF_IP_TTL 7 +# define BOOST_ASIO_OS_DEF_IPV6_UNICAST_HOPS 4 +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_IF 9 +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_HOPS 10 +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_LOOP 11 +# define BOOST_ASIO_OS_DEF_IPV6_JOIN_GROUP 12 +# define BOOST_ASIO_OS_DEF_IPV6_LEAVE_GROUP 13 +# define BOOST_ASIO_OS_DEF_AI_CANONNAME 0x2 +# define BOOST_ASIO_OS_DEF_AI_PASSIVE 0x1 +# define BOOST_ASIO_OS_DEF_AI_NUMERICHOST 0x4 +# define BOOST_ASIO_OS_DEF_AI_NUMERICSERV 0x8 +# define BOOST_ASIO_OS_DEF_AI_V4MAPPED 0x800 +# define BOOST_ASIO_OS_DEF_AI_ALL 0x100 +# define BOOST_ASIO_OS_DEF_AI_ADDRCONFIG 0x400 +#elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) typedef SOCKET socket_type; const SOCKET invalid_socket = INVALID_SOCKET; const int socket_error_retval = SOCKET_ERROR; @@ -104,17 +192,83 @@ typedef sockaddr_in6 sockaddr_in6_type; typedef sockaddr_storage sockaddr_storage_type; typedef addrinfo addrinfo_type; # endif +typedef ::linger linger_type; typedef unsigned long ioctl_arg_type; typedef u_long u_long_type; typedef u_short u_short_type; typedef int signed_size_type; -const int shutdown_receive = SD_RECEIVE; -const int shutdown_send = SD_SEND; -const int shutdown_both = SD_BOTH; -const int message_peek = MSG_PEEK; -const int message_out_of_band = MSG_OOB; -const int message_do_not_route = MSG_DONTROUTE; -const int message_end_of_record = 0; // Not supported on Windows. +# define BOOST_ASIO_OS_DEF(c) BOOST_ASIO_OS_DEF_##c +# define BOOST_ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC +# define BOOST_ASIO_OS_DEF_AF_INET AF_INET +# define BOOST_ASIO_OS_DEF_AF_INET6 AF_INET6 +# define BOOST_ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM +# define BOOST_ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM +# define BOOST_ASIO_OS_DEF_SOCK_RAW SOCK_RAW +# define BOOST_ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET +# define BOOST_ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP +# define BOOST_ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6 +# define BOOST_ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP +# define BOOST_ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP +# define BOOST_ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP +# define BOOST_ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6 +# define BOOST_ASIO_OS_DEF_FIONBIO FIONBIO +# define BOOST_ASIO_OS_DEF_FIONREAD FIONREAD +# define BOOST_ASIO_OS_DEF_INADDR_ANY INADDR_ANY +# define BOOST_ASIO_OS_DEF_MSG_OOB MSG_OOB +# define BOOST_ASIO_OS_DEF_MSG_PEEK MSG_PEEK +# define BOOST_ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE +# define BOOST_ASIO_OS_DEF_MSG_EOR 0 // Not supported on Windows. +# define BOOST_ASIO_OS_DEF_SHUT_RD SD_RECEIVE +# define BOOST_ASIO_OS_DEF_SHUT_WR SD_SEND +# define BOOST_ASIO_OS_DEF_SHUT_RDWR SD_BOTH +# define BOOST_ASIO_OS_DEF_SOMAXCONN SOMAXCONN +# define BOOST_ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET +# define BOOST_ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST +# define BOOST_ASIO_OS_DEF_SO_DEBUG SO_DEBUG +# define BOOST_ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE +# define BOOST_ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE +# define BOOST_ASIO_OS_DEF_SO_LINGER SO_LINGER +# define BOOST_ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF +# define BOOST_ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF +# define BOOST_ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT +# define BOOST_ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT +# define BOOST_ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR +# define BOOST_ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP +# define BOOST_ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP +# define BOOST_ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP +# define BOOST_ASIO_OS_DEF_IP_TTL IP_TTL +# define BOOST_ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP +# define BOOST_ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP +# define BOOST_ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP +# define BOOST_ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME +# define BOOST_ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE +# define BOOST_ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST +# if defined(AI_NUMERICSERV) +# define BOOST_ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV +# else +# define BOOST_ASIO_OS_DEF_AI_NUMERICSERV 0 +# endif +# if defined(AI_V4MAPPED) +# define BOOST_ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED +# else +# define BOOST_ASIO_OS_DEF_AI_V4MAPPED 0 +# endif +# if defined(AI_ALL) +# define BOOST_ASIO_OS_DEF_AI_ALL AI_ALL +# else +# define BOOST_ASIO_OS_DEF_AI_ALL 0 +# endif +# if defined(AI_ADDRCONFIG) +# define BOOST_ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG +# else +# define BOOST_ASIO_OS_DEF_AI_ADDRCONFIG 0 +# endif # if defined (_WIN32_WINNT) const int max_iov_len = 64; # else @@ -149,6 +303,7 @@ typedef sockaddr_in6 sockaddr_in6_type; typedef sockaddr_storage sockaddr_storage_type; typedef sockaddr_un sockaddr_un_type; typedef addrinfo addrinfo_type; +typedef ::linger linger_type; typedef int ioctl_arg_type; typedef uint32_t u_long_type; typedef uint16_t u_short_type; @@ -157,13 +312,80 @@ typedef ssize_t signed_size_type; #else // defined(BOOST_ASIO_HAS_SSIZE_T) typedef int signed_size_type; #endif // defined(BOOST_ASIO_HAS_SSIZE_T) -const int shutdown_receive = SHUT_RD; -const int shutdown_send = SHUT_WR; -const int shutdown_both = SHUT_RDWR; -const int message_peek = MSG_PEEK; -const int message_out_of_band = MSG_OOB; -const int message_do_not_route = MSG_DONTROUTE; -const int message_end_of_record = MSG_EOR; +# define BOOST_ASIO_OS_DEF(c) BOOST_ASIO_OS_DEF_##c +# define BOOST_ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC +# define BOOST_ASIO_OS_DEF_AF_INET AF_INET +# define BOOST_ASIO_OS_DEF_AF_INET6 AF_INET6 +# define BOOST_ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM +# define BOOST_ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM +# define BOOST_ASIO_OS_DEF_SOCK_RAW SOCK_RAW +# define BOOST_ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET +# define BOOST_ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP +# define BOOST_ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6 +# define BOOST_ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP +# define BOOST_ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP +# define BOOST_ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP +# define BOOST_ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6 +# define BOOST_ASIO_OS_DEF_FIONBIO FIONBIO +# define BOOST_ASIO_OS_DEF_FIONREAD FIONREAD +# define BOOST_ASIO_OS_DEF_INADDR_ANY INADDR_ANY +# define BOOST_ASIO_OS_DEF_MSG_OOB MSG_OOB +# define BOOST_ASIO_OS_DEF_MSG_PEEK MSG_PEEK +# define BOOST_ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE +# define BOOST_ASIO_OS_DEF_MSG_EOR MSG_EOR +# define BOOST_ASIO_OS_DEF_SHUT_RD SHUT_RD +# define BOOST_ASIO_OS_DEF_SHUT_WR SHUT_WR +# define BOOST_ASIO_OS_DEF_SHUT_RDWR SHUT_RDWR +# define BOOST_ASIO_OS_DEF_SOMAXCONN SOMAXCONN +# define BOOST_ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET +# define BOOST_ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST +# define BOOST_ASIO_OS_DEF_SO_DEBUG SO_DEBUG +# define BOOST_ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE +# define BOOST_ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE +# define BOOST_ASIO_OS_DEF_SO_LINGER SO_LINGER +# define BOOST_ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF +# define BOOST_ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF +# define BOOST_ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT +# define BOOST_ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT +# define BOOST_ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR +# define BOOST_ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL +# define BOOST_ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP +# define BOOST_ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP +# define BOOST_ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP +# define BOOST_ASIO_OS_DEF_IP_TTL IP_TTL +# define BOOST_ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS +# define BOOST_ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP +# define BOOST_ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP +# define BOOST_ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP +# define BOOST_ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME +# define BOOST_ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE +# define BOOST_ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST +# if defined(AI_NUMERICSERV) +# define BOOST_ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV +# else +# define BOOST_ASIO_OS_DEF_AI_NUMERICSERV 0 +# endif +// Note: QNX Neutrino 6.3 defines AI_V4MAPPED, AI_ALL and AI_ADDRCONFIG but +// does not implement them. Therefore they are specifically excluded here. +# if defined(AI_V4MAPPED) && !defined(__QNXNTO__) +# define BOOST_ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED +# else +# define BOOST_ASIO_OS_DEF_AI_V4MAPPED 0 +# endif +# if defined(AI_ALL) && !defined(__QNXNTO__) +# define BOOST_ASIO_OS_DEF_AI_ALL AI_ALL +# else +# define BOOST_ASIO_OS_DEF_AI_ALL 0 +# endif +# if defined(AI_ADDRCONFIG) && !defined(__QNXNTO__) +# define BOOST_ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG +# else +# define BOOST_ASIO_OS_DEF_AI_ADDRCONFIG 0 +# endif # if defined(IOV_MAX) const int max_iov_len = IOV_MAX; # else diff --git a/3party/boost/boost/asio/detail/solaris_fenced_block.hpp b/3party/boost/boost/asio/detail/solaris_fenced_block.hpp index 5bae658081..9063bfc31a 100644 --- a/3party/boost/boost/asio/detail/solaris_fenced_block.hpp +++ b/3party/boost/boost/asio/detail/solaris_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/solaris_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/static_mutex.hpp b/3party/boost/boost/asio/detail/static_mutex.hpp index ef39406b5f..cc005cbd47 100644 --- a/3party/boost/boost/asio/detail/static_mutex.hpp +++ b/3party/boost/boost/asio/detail/static_mutex.hpp @@ -2,7 +2,7 @@ // detail/static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,6 +23,8 @@ # include #elif defined(BOOST_ASIO_HAS_PTHREADS) # include +#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) +# include #else # error Only Windows and POSIX are supported! #endif @@ -40,6 +42,9 @@ typedef win_static_mutex static_mutex; #elif defined(BOOST_ASIO_HAS_PTHREADS) typedef posix_static_mutex static_mutex; # define BOOST_ASIO_STATIC_MUTEX_INIT BOOST_ASIO_POSIX_STATIC_MUTEX_INIT +#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) +typedef std_static_mutex static_mutex; +# define BOOST_ASIO_STATIC_MUTEX_INIT BOOST_ASIO_STD_STATIC_MUTEX_INIT #endif } // namespace detail diff --git a/3party/boost/boost/asio/detail/std_event.hpp b/3party/boost/boost/asio/detail/std_event.hpp new file mode 100644 index 0000000000..53390b8c66 --- /dev/null +++ b/3party/boost/boost/asio/detail/std_event.hpp @@ -0,0 +1,178 @@ +// +// detail/std_event.hpp +// ~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_STD_EVENT_HPP +#define BOOST_ASIO_DETAIL_STD_EVENT_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) + +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class std_event + : private noncopyable +{ +public: + // Constructor. + std_event() + : state_(0) + { + } + + // Destructor. + ~std_event() + { + } + + // Signal the event. (Retained for backward compatibility.) + template + void signal(Lock& lock) + { + this->signal_all(lock); + } + + // Signal all waiters. + template + void signal_all(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + (void)lock; + state_ |= 1; + cond_.notify_all(); + } + + // Unlock the mutex and signal one waiter. + template + void unlock_and_signal_one(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + state_ |= 1; + bool have_waiters = (state_ > 1); + lock.unlock(); + if (have_waiters) + cond_.notify_one(); + } + + // If there's a waiter, unlock the mutex and signal it. + template + bool maybe_unlock_and_signal_one(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + state_ |= 1; + if (state_ > 1) + { + lock.unlock(); + cond_.notify_one(); + return true; + } + return false; + } + + // Reset the event. + template + void clear(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + (void)lock; + state_ &= ~std::size_t(1); + } + + // Wait for the event to become signalled. + template + void wait(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + unique_lock_adapter u_lock(lock); + while ((state_ & 1) == 0) + { + waiter w(state_); + cond_.wait(u_lock.unique_lock_); + } + } + + // Timed wait for the event to become signalled. + template + bool wait_for_usec(Lock& lock, long usec) + { + BOOST_ASIO_ASSERT(lock.locked()); + unique_lock_adapter u_lock(lock); + if ((state_ & 1) == 0) + { + waiter w(state_); + cond_.wait_for(u_lock.unique_lock_, std::chrono::microseconds(usec)); + } + return (state_ & 1) != 0; + } + +private: + // Helper class to temporarily adapt a scoped_lock into a unique_lock so that + // it can be passed to std::condition_variable::wait(). + struct unique_lock_adapter + { + template + explicit unique_lock_adapter(Lock& lock) + : unique_lock_(lock.mutex().mutex_, std::adopt_lock) + { + } + + ~unique_lock_adapter() + { + unique_lock_.release(); + } + + std::unique_lock unique_lock_; + }; + + // Helper to increment and decrement the state to track outstanding waiters. + class waiter + { + public: + explicit waiter(std::size_t& state) + : state_(state) + { + state_ += 2; + } + + ~waiter() + { + state_ -= 2; + } + + private: + std::size_t& state_; + }; + + std::condition_variable cond_; + std::size_t state_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) + +#endif // BOOST_ASIO_DETAIL_STD_EVENT_HPP diff --git a/3party/boost/boost/asio/detail/std_mutex.hpp b/3party/boost/boost/asio/detail/std_mutex.hpp new file mode 100644 index 0000000000..58cdc070f1 --- /dev/null +++ b/3party/boost/boost/asio/detail/std_mutex.hpp @@ -0,0 +1,75 @@ +// +// detail/std_mutex.hpp +// ~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_STD_MUTEX_HPP +#define BOOST_ASIO_DETAIL_STD_MUTEX_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) + +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class std_event; + +class std_mutex + : private noncopyable +{ +public: + typedef boost::asio::detail::scoped_lock scoped_lock; + + // Constructor. + std_mutex() + { + } + + // Destructor. + ~std_mutex() + { + } + + // Lock the mutex. + void lock() + { + mutex_.lock(); + } + + // Unlock the mutex. + void unlock() + { + mutex_.unlock(); + } + +private: + friend class std_event; + std::mutex mutex_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) + +#endif // BOOST_ASIO_DETAIL_STD_MUTEX_HPP diff --git a/3party/boost/boost/asio/detail/std_static_mutex.hpp b/3party/boost/boost/asio/detail/std_static_mutex.hpp new file mode 100644 index 0000000000..68980ab4e4 --- /dev/null +++ b/3party/boost/boost/asio/detail/std_static_mutex.hpp @@ -0,0 +1,83 @@ +// +// detail/std_static_mutex.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_STD_STATIC_MUTEX_HPP +#define BOOST_ASIO_DETAIL_STD_STATIC_MUTEX_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) + +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class std_event; + +class std_static_mutex + : private noncopyable +{ +public: + typedef boost::asio::detail::scoped_lock scoped_lock; + + // Constructor. + std_static_mutex(int) + { + } + + // Destructor. + ~std_static_mutex() + { + } + + // Initialise the mutex. + void init() + { + // Nothing to do. + } + + // Lock the mutex. + void lock() + { + mutex_.lock(); + } + + // Unlock the mutex. + void unlock() + { + mutex_.unlock(); + } + +private: + friend class std_event; + std::mutex mutex_; +}; + +#define BOOST_ASIO_STD_STATIC_MUTEX_INIT 0 + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR) + +#endif // BOOST_ASIO_DETAIL_STD_STATIC_MUTEX_HPP diff --git a/3party/boost/boost/asio/detail/std_thread.hpp b/3party/boost/boost/asio/detail/std_thread.hpp new file mode 100644 index 0000000000..7dcb2fd66e --- /dev/null +++ b/3party/boost/boost/asio/detail/std_thread.hpp @@ -0,0 +1,67 @@ +// +// detail/std_thread.hpp +// ~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_STD_THREAD_HPP +#define BOOST_ASIO_DETAIL_STD_THREAD_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_HAS_STD_THREAD) + +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class std_thread + : private noncopyable +{ +public: + // Constructor. + template + std_thread(Function f, unsigned int = 0) + : thread_(f) + { + } + + // Destructor. + ~std_thread() + { + join(); + } + + // Wait for the thread to exit. + void join() + { + if (thread_.joinable()) + thread_.join(); + } + +private: + std::thread thread_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_HAS_STD_THREAD) + +#endif // BOOST_ASIO_DETAIL_STD_THREAD_HPP diff --git a/3party/boost/boost/asio/detail/strand_service.hpp b/3party/boost/boost/asio/detail/strand_service.hpp index 203ad07438..0e1dea874d 100644 --- a/3party/boost/boost/asio/detail/strand_service.hpp +++ b/3party/boost/boost/asio/detail/strand_service.hpp @@ -2,7 +2,7 @@ // detail/strand_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/task_io_service.hpp b/3party/boost/boost/asio/detail/task_io_service.hpp index 8b9783dd21..a30ea043da 100644 --- a/3party/boost/boost/asio/detail/task_io_service.hpp +++ b/3party/boost/boost/asio/detail/task_io_service.hpp @@ -2,7 +2,7 @@ // detail/task_io_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,10 +23,10 @@ #include #include #include +#include #include #include #include -#include #include #include @@ -35,6 +35,8 @@ namespace boost { namespace asio { namespace detail { +struct task_io_service_thread_info; + class task_io_service : public boost::asio::detail::service_base { @@ -118,7 +120,7 @@ public: BOOST_ASIO_DECL void abandon_operations(op_queue& ops); private: - // Structure containing information about an idle thread. + // Structure containing thread-specific data. typedef task_io_service_thread_info thread_info; // Enqueue the given operation following a failed attempt to dispatch the @@ -136,12 +138,6 @@ private: // Stop the task and all idle threads. BOOST_ASIO_DECL void stop_all_threads(mutex::scoped_lock& lock); - // Wakes a single idle thread and unlocks the mutex. Returns true if an idle - // thread was found. If there is no idle thread, returns false and leaves the - // mutex locked. - BOOST_ASIO_DECL bool wake_one_idle_thread_and_unlock( - mutex::scoped_lock& lock); - // Wake a single idle thread, or the task, and always unlock the mutex. BOOST_ASIO_DECL void wake_one_thread_and_unlock( mutex::scoped_lock& lock); @@ -160,6 +156,9 @@ private: // Mutex to protect access to internal data. mutable mutex mutex_; + // Event to wake up blocked threads. + event wakeup_event_; + // The task to be run by this service. reactor* task_; @@ -186,9 +185,6 @@ private: // Per-thread call stack to track the state of each thread in the io_service. typedef call_stack thread_call_stack; - - // The threads that are currently idle. - thread_info* first_idle_thread_; }; } // namespace detail diff --git a/3party/boost/boost/asio/detail/task_io_service_fwd.hpp b/3party/boost/boost/asio/detail/task_io_service_fwd.hpp deleted file mode 100644 index fa5a286af6..0000000000 --- a/3party/boost/boost/asio/detail/task_io_service_fwd.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// -// detail/task_io_service_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef BOOST_ASIO_DETAIL_TASK_IO_SERVICE_FWD_HPP -#define BOOST_ASIO_DETAIL_TASK_IO_SERVICE_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -namespace boost { -namespace asio { -namespace detail { - -class task_io_service; -class task_io_service_operation; -struct task_io_service_thread_info; - -} // namespace detail -} // namespace asio -} // namespace boost - -#endif // BOOST_ASIO_DETAIL_TASK_IO_SERVICE_FWD_HPP diff --git a/3party/boost/boost/asio/detail/task_io_service_operation.hpp b/3party/boost/boost/asio/detail/task_io_service_operation.hpp index ceb3d443ab..ea1c85e0be 100644 --- a/3party/boost/boost/asio/detail/task_io_service_operation.hpp +++ b/3party/boost/boost/asio/detail/task_io_service_operation.hpp @@ -2,7 +2,7 @@ // detail/task_io_service_operation.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -18,7 +18,6 @@ #include #include #include -#include #include @@ -26,6 +25,8 @@ namespace boost { namespace asio { namespace detail { +class task_io_service; + // Base class for all operations. A function pointer is used instead of virtual // functions to avoid the associated overhead. class task_io_service_operation BOOST_ASIO_INHERIT_TRACKED_HANDLER diff --git a/3party/boost/boost/asio/detail/task_io_service_thread_info.hpp b/3party/boost/boost/asio/detail/task_io_service_thread_info.hpp index 4fcfac9c90..7165552eb7 100644 --- a/3party/boost/boost/asio/detail/task_io_service_thread_info.hpp +++ b/3party/boost/boost/asio/detail/task_io_service_thread_info.hpp @@ -2,7 +2,7 @@ // detail/task_io_service_thread_info.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -15,9 +15,7 @@ # pragma once #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) -#include #include -#include #include #include @@ -26,12 +24,13 @@ namespace boost { namespace asio { namespace detail { +class task_io_service; +class task_io_service_operation; + struct task_io_service_thread_info : public thread_info_base { - event* wakeup_event; op_queue private_op_queue; long private_outstanding_work; - task_io_service_thread_info* next; }; } // namespace detail diff --git a/3party/boost/boost/asio/detail/thread.hpp b/3party/boost/boost/asio/detail/thread.hpp index 11bcd16aa3..68755e439a 100644 --- a/3party/boost/boost/asio/detail/thread.hpp +++ b/3party/boost/boost/asio/detail/thread.hpp @@ -2,7 +2,7 @@ // detail/thread.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -27,8 +27,10 @@ # endif #elif defined(BOOST_ASIO_HAS_PTHREADS) # include +#elif defined(BOOST_ASIO_HAS_STD_THREAD) +# include #else -# error Only Windows and POSIX are supported! +# error Only Windows, POSIX and std::thread are supported! #endif namespace boost { @@ -45,6 +47,8 @@ typedef win_thread thread; # endif #elif defined(BOOST_ASIO_HAS_PTHREADS) typedef posix_thread thread; +#elif defined(BOOST_ASIO_HAS_STD_THREAD) +typedef std_thread thread; #endif } // namespace detail diff --git a/3party/boost/boost/asio/detail/thread_info_base.hpp b/3party/boost/boost/asio/detail/thread_info_base.hpp index fedcda7219..9a12e254b3 100644 --- a/3party/boost/boost/asio/detail/thread_info_base.hpp +++ b/3party/boost/boost/asio/detail/thread_info_base.hpp @@ -2,7 +2,7 @@ // detail/thread_info_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/throw_error.hpp b/3party/boost/boost/asio/detail/throw_error.hpp index 39c1b15aa6..3ca8b8a394 100644 --- a/3party/boost/boost/asio/detail/throw_error.hpp +++ b/3party/boost/boost/asio/detail/throw_error.hpp @@ -2,7 +2,7 @@ // detail/throw_error.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/throw_exception.hpp b/3party/boost/boost/asio/detail/throw_exception.hpp index bbf6eadd49..636e1a2283 100644 --- a/3party/boost/boost/asio/detail/throw_exception.hpp +++ b/3party/boost/boost/asio/detail/throw_exception.hpp @@ -2,7 +2,7 @@ // detail/throw_exception.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/timer_queue.hpp b/3party/boost/boost/asio/detail/timer_queue.hpp index 02e5b2897b..1c94bcd987 100644 --- a/3party/boost/boost/asio/detail/timer_queue.hpp +++ b/3party/boost/boost/asio/detail/timer_queue.hpp @@ -2,7 +2,7 @@ // detail/timer_queue.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/timer_queue_base.hpp b/3party/boost/boost/asio/detail/timer_queue_base.hpp index 2a1e84455a..44ac90fbd6 100644 --- a/3party/boost/boost/asio/detail/timer_queue_base.hpp +++ b/3party/boost/boost/asio/detail/timer_queue_base.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -58,6 +58,9 @@ private: timer_queue_base* next_; }; +template +class timer_queue; + } // namespace detail } // namespace asio } // namespace boost diff --git a/3party/boost/boost/asio/detail/timer_queue_fwd.hpp b/3party/boost/boost/asio/detail/timer_queue_fwd.hpp deleted file mode 100644 index 846d512b9b..0000000000 --- a/3party/boost/boost/asio/detail/timer_queue_fwd.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// -// detail/timer_queue_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef BOOST_ASIO_DETAIL_TIMER_QUEUE_FWD_HPP -#define BOOST_ASIO_DETAIL_TIMER_QUEUE_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -namespace boost { -namespace asio { -namespace detail { - -template -class timer_queue; - -} // namespace detail -} // namespace asio -} // namespace boost - -#endif // BOOST_ASIO_DETAIL_TIMER_QUEUE_FWD_HPP diff --git a/3party/boost/boost/asio/detail/timer_queue_ptime.hpp b/3party/boost/boost/asio/detail/timer_queue_ptime.hpp index 243b5d0250..91640590e9 100644 --- a/3party/boost/boost/asio/detail/timer_queue_ptime.hpp +++ b/3party/boost/boost/asio/detail/timer_queue_ptime.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_ptime.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/timer_queue_set.hpp b/3party/boost/boost/asio/detail/timer_queue_set.hpp index 94a189f6e1..e0086132d4 100644 --- a/3party/boost/boost/asio/detail/timer_queue_set.hpp +++ b/3party/boost/boost/asio/detail/timer_queue_set.hpp @@ -2,7 +2,7 @@ // detail/timer_queue_set.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/timer_scheduler.hpp b/3party/boost/boost/asio/detail/timer_scheduler.hpp index e0bd35a1f8..8fdc36fe47 100644 --- a/3party/boost/boost/asio/detail/timer_scheduler.hpp +++ b/3party/boost/boost/asio/detail/timer_scheduler.hpp @@ -2,7 +2,7 @@ // detail/timer_scheduler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -18,7 +18,9 @@ #include #include -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +#elif defined(BOOST_ASIO_HAS_IOCP) # include #elif defined(BOOST_ASIO_HAS_EPOLL) # include diff --git a/3party/boost/boost/asio/detail/timer_scheduler_fwd.hpp b/3party/boost/boost/asio/detail/timer_scheduler_fwd.hpp index 90545f3b2c..5bcf249434 100644 --- a/3party/boost/boost/asio/detail/timer_scheduler_fwd.hpp +++ b/3party/boost/boost/asio/detail/timer_scheduler_fwd.hpp @@ -2,7 +2,7 @@ // detail/timer_scheduler_fwd.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -17,32 +17,22 @@ #include -#if defined(BOOST_ASIO_HAS_IOCP) -# include -#elif defined(BOOST_ASIO_HAS_EPOLL) -# include -#elif defined(BOOST_ASIO_HAS_KQUEUE) -# include -#elif defined(BOOST_ASIO_HAS_DEV_POLL) -# include -#else -# include -#endif - namespace boost { namespace asio { namespace detail { -#if defined(BOOST_ASIO_HAS_IOCP) -typedef win_iocp_io_service timer_scheduler; +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +typedef class winrt_timer_scheduler timer_scheduler; +#elif defined(BOOST_ASIO_HAS_IOCP) +typedef class win_iocp_io_service timer_scheduler; #elif defined(BOOST_ASIO_HAS_EPOLL) -typedef epoll_reactor timer_scheduler; +typedef class epoll_reactor timer_scheduler; #elif defined(BOOST_ASIO_HAS_KQUEUE) -typedef kqueue_reactor timer_scheduler; +typedef class kqueue_reactor timer_scheduler; #elif defined(BOOST_ASIO_HAS_DEV_POLL) -typedef dev_poll_reactor timer_scheduler; +typedef class dev_poll_reactor timer_scheduler; #else -typedef select_reactor timer_scheduler; +typedef class select_reactor timer_scheduler; #endif } // namespace detail diff --git a/3party/boost/boost/asio/detail/tss_ptr.hpp b/3party/boost/boost/asio/detail/tss_ptr.hpp index d26212eddd..4b4e7666c7 100644 --- a/3party/boost/boost/asio/detail/tss_ptr.hpp +++ b/3party/boost/boost/asio/detail/tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/type_traits.hpp b/3party/boost/boost/asio/detail/type_traits.hpp index b42c65397f..67e04041d6 100644 --- a/3party/boost/boost/asio/detail/type_traits.hpp +++ b/3party/boost/boost/asio/detail/type_traits.hpp @@ -2,7 +2,7 @@ // detail/type_traits.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/variadic_templates.hpp b/3party/boost/boost/asio/detail/variadic_templates.hpp new file mode 100644 index 0000000000..b116fe8dcc --- /dev/null +++ b/3party/boost/boost/asio/detail/variadic_templates.hpp @@ -0,0 +1,63 @@ +// +// detail/variadic_templates.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_VARIADIC_TEMPLATES_HPP +#define BOOST_ASIO_DETAIL_VARIADIC_TEMPLATES_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) + +# define BOOST_ASIO_VARIADIC_TPARAMS(n) BOOST_ASIO_VARIADIC_TPARAMS_##n + +# define BOOST_ASIO_VARIADIC_TPARAMS_1 \ + typename T1 +# define BOOST_ASIO_VARIADIC_TPARAMS_2 \ + typename T1, typename T2 +# define BOOST_ASIO_VARIADIC_TPARAMS_3 \ + typename T1, typename T2, typename T3 +# define BOOST_ASIO_VARIADIC_TPARAMS_4 \ + typename T1, typename T2, typename T3, typename T4 +# define BOOST_ASIO_VARIADIC_TPARAMS_5 \ + typename T1, typename T2, typename T3, typename T4, typename T5 + +# define BOOST_ASIO_VARIADIC_TARGS(n) BOOST_ASIO_VARIADIC_TARGS_##n + +# define BOOST_ASIO_VARIADIC_TARGS_1 x1 +# define BOOST_ASIO_VARIADIC_TARGS_2 x1, x2 +# define BOOST_ASIO_VARIADIC_TARGS_3 x1, x2, x3 +# define BOOST_ASIO_VARIADIC_TARGS_4 x1, x2, x3, x4 +# define BOOST_ASIO_VARIADIC_TARGS_5 x1, x2, x3, x4, x5 + +# define BOOST_ASIO_VARIADIC_PARAMS(n) BOOST_ASIO_VARIADIC_PARAMS_##n + +# define BOOST_ASIO_VARIADIC_PARAMS_1 T1 x1 +# define BOOST_ASIO_VARIADIC_PARAMS_2 T1 x1, T2 x2 +# define BOOST_ASIO_VARIADIC_PARAMS_3 T1 x1, T2 x2, T3 x3 +# define BOOST_ASIO_VARIADIC_PARAMS_4 T1 x1, T2 x2, T3 x3, T4 x4 +# define BOOST_ASIO_VARIADIC_PARAMS_5 T1 x1, T2 x2, T3 x3, T4 x4, T5 x5 + +# define BOOST_ASIO_VARIADIC_ARGS(n) BOOST_ASIO_VARIADIC_ARGS_##n + +# define BOOST_ASIO_VARIADIC_ARGS_1 x1 +# define BOOST_ASIO_VARIADIC_ARGS_2 x1, x2 +# define BOOST_ASIO_VARIADIC_ARGS_3 x1, x2, x3 +# define BOOST_ASIO_VARIADIC_ARGS_4 x1, x2, x3, x4 +# define BOOST_ASIO_VARIADIC_ARGS_5 x1, x2, x3, x4, x5 + +# define BOOST_ASIO_VARIADIC_GENERATE(m) m(1) m(2) m(3) m(4) m(5) + +#endif // !defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) + +#endif // BOOST_ASIO_DETAIL_VARIADIC_TEMPLATES_HPP diff --git a/3party/boost/boost/asio/detail/wait_handler.hpp b/3party/boost/boost/asio/detail/wait_handler.hpp index be31d20763..6f2cbc53f9 100644 --- a/3party/boost/boost/asio/detail/wait_handler.hpp +++ b/3party/boost/boost/asio/detail/wait_handler.hpp @@ -2,7 +2,7 @@ // detail/wait_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/wait_op.hpp b/3party/boost/boost/asio/detail/wait_op.hpp index acf681fff1..cb6c045248 100644 --- a/3party/boost/boost/asio/detail/wait_op.hpp +++ b/3party/boost/boost/asio/detail/wait_op.hpp @@ -2,7 +2,7 @@ // detail/wait_op.hpp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/weak_ptr.hpp b/3party/boost/boost/asio/detail/weak_ptr.hpp index 4f974adadf..2604d10715 100644 --- a/3party/boost/boost/asio/detail/weak_ptr.hpp +++ b/3party/boost/boost/asio/detail/weak_ptr.hpp @@ -2,7 +2,7 @@ // detail/weak_ptr.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_event.hpp b/3party/boost/boost/asio/detail/win_event.hpp index f78a155c6e..8ef90c5266 100644 --- a/3party/boost/boost/asio/detail/win_event.hpp +++ b/3party/boost/boost/asio/detail/win_event.hpp @@ -2,7 +2,7 @@ // detail/win_event.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -37,27 +37,50 @@ public: BOOST_ASIO_DECL win_event(); // Destructor. - ~win_event() - { - ::CloseHandle(event_); - } + BOOST_ASIO_DECL ~win_event(); - // Signal the event. + // Signal the event. (Retained for backward compatibility.) template void signal(Lock& lock) { - BOOST_ASIO_ASSERT(lock.locked()); - (void)lock; - ::SetEvent(event_); + this->signal_all(lock); } - // Signal the event and unlock the mutex. + // Signal all waiters. template - void signal_and_unlock(Lock& lock) + void signal_all(Lock& lock) { BOOST_ASIO_ASSERT(lock.locked()); + (void)lock; + state_ |= 1; + ::SetEvent(events_[0]); + } + + // Unlock the mutex and signal one waiter. + template + void unlock_and_signal_one(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + state_ |= 1; + bool have_waiters = (state_ > 1); lock.unlock(); - ::SetEvent(event_); + if (have_waiters) + ::SetEvent(events_[1]); + } + + // If there's a waiter, unlock the mutex and signal it. + template + bool maybe_unlock_and_signal_one(Lock& lock) + { + BOOST_ASIO_ASSERT(lock.locked()); + state_ |= 1; + if (state_ > 1) + { + lock.unlock(); + ::SetEvent(events_[1]); + return true; + } + return false; } // Reset the event. @@ -66,7 +89,8 @@ public: { BOOST_ASIO_ASSERT(lock.locked()); (void)lock; - ::ResetEvent(event_); + ::ResetEvent(events_[0]); + state_ &= ~std::size_t(1); } // Wait for the event to become signalled. @@ -74,13 +98,19 @@ public: void wait(Lock& lock) { BOOST_ASIO_ASSERT(lock.locked()); - lock.unlock(); - ::WaitForSingleObject(event_, INFINITE); - lock.lock(); + while ((state_ & 1) == 0) + { + state_ += 2; + lock.unlock(); + ::WaitForMultipleObjects(2, events_, false, INFINITE); + lock.lock(); + state_ -= 2; + } } private: - HANDLE event_; + HANDLE events_[2]; + std::size_t state_; }; } // namespace detail diff --git a/3party/boost/boost/asio/detail/win_fd_set_adapter.hpp b/3party/boost/boost/asio/detail/win_fd_set_adapter.hpp index 09db196f92..89f5ffdbef 100644 --- a/3party/boost/boost/asio/detail/win_fd_set_adapter.hpp +++ b/3party/boost/boost/asio/detail/win_fd_set_adapter.hpp @@ -2,7 +2,7 @@ // detail/win_fd_set_adapter.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -20,6 +20,7 @@ #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) #include +#include #include #include @@ -61,26 +62,22 @@ public: if (fd_set_->fd_array[i] == descriptor) return true; - if (fd_set_->fd_count == capacity_) - { - u_int new_capacity = capacity_ + capacity_ / 2; - win_fd_set* new_fd_set = static_cast(::operator new( - sizeof(win_fd_set) - sizeof(SOCKET) - + sizeof(SOCKET) * (new_capacity))); - - new_fd_set->fd_count = fd_set_->fd_count; - for (u_int i = 0; i < fd_set_->fd_count; ++i) - new_fd_set->fd_array[i] = fd_set_->fd_array[i]; - - ::operator delete(fd_set_); - fd_set_ = new_fd_set; - capacity_ = new_capacity; - } - + reserve(fd_set_->fd_count + 1); fd_set_->fd_array[fd_set_->fd_count++] = descriptor; return true; } + void set(reactor_op_queue& operations, op_queue&) + { + reactor_op_queue::iterator i = operations.begin(); + while (i != operations.end()) + { + reactor_op_queue::iterator op_iter = i++; + reserve(fd_set_->fd_count + 1); + fd_set_->fd_array[fd_set_->fd_count++] = op_iter->first; + } + } + bool is_set(socket_type descriptor) const { return !!__WSAFDIsSet(descriptor, @@ -97,8 +94,14 @@ public: return max_descriptor_; } -private: + void perform(reactor_op_queue& operations, + op_queue& ops) const + { + for (u_int i = 0; i < fd_set_->fd_count; ++i) + operations.perform_operations(fd_set_->fd_array[i], ops); + } +private: // This structure is defined to be compatible with the Windows API fd_set // structure, but without being dependent on the value of FD_SETSIZE. We use // the "struct hack" to allow the number of descriptors to be varied at @@ -109,6 +112,29 @@ private: SOCKET fd_array[1]; }; + // Increase the fd_set_ capacity to at least the specified number of elements. + void reserve(u_int n) + { + if (n <= capacity_) + return; + + u_int new_capacity = capacity_ + capacity_ / 2; + if (new_capacity < n) + new_capacity = n; + + win_fd_set* new_fd_set = static_cast(::operator new( + sizeof(win_fd_set) - sizeof(SOCKET) + + sizeof(SOCKET) * (new_capacity))); + + new_fd_set->fd_count = fd_set_->fd_count; + for (u_int i = 0; i < fd_set_->fd_count; ++i) + new_fd_set->fd_array[i] = fd_set_->fd_array[i]; + + ::operator delete(fd_set_); + fd_set_ = new_fd_set; + capacity_ = new_capacity; + } + win_fd_set* fd_set_; u_int capacity_; socket_type max_descriptor_; diff --git a/3party/boost/boost/asio/detail/win_fenced_block.hpp b/3party/boost/boost/asio/detail/win_fenced_block.hpp index 60cc1f7aa1..ebe580de1f 100644 --- a/3party/boost/boost/asio/detail/win_fenced_block.hpp +++ b/3party/boost/boost/asio/detail/win_fenced_block.hpp @@ -2,7 +2,7 @@ // detail/win_fenced_block.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_handle_read_op.hpp b/3party/boost/boost/asio/detail/win_iocp_handle_read_op.hpp index 1ca4222f8a..a69a291aef 100644 --- a/3party/boost/boost/asio/detail/win_iocp_handle_read_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_handle_read_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_read_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/win_iocp_handle_service.hpp b/3party/boost/boost/asio/detail/win_iocp_handle_service.hpp index 97460f3aad..c7698846db 100644 --- a/3party/boost/boost/asio/detail/win_iocp_handle_service.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_handle_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/win_iocp_handle_write_op.hpp b/3party/boost/boost/asio/detail/win_iocp_handle_write_op.hpp index f9bc3f0205..48af0b70b7 100644 --- a/3party/boost/boost/asio/detail/win_iocp_handle_write_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_handle_write_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_handle_write_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/win_iocp_io_service.hpp b/3party/boost/boost/asio/detail/win_iocp_io_service.hpp index 60222d5c63..215b796c01 100644 --- a/3party/boost/boost/asio/detail/win_iocp_io_service.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_io_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_io_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -28,10 +28,8 @@ #include #include #include -#include #include #include -#include #include #include @@ -209,6 +207,9 @@ private: // either 0 or 1). BOOST_ASIO_DECL size_t do_one(bool block, boost::system::error_code& ec); + // Helper to calculate the GetQueuedCompletionStatus timeout. + BOOST_ASIO_DECL static DWORD get_gqcs_timeout(); + // Helper function to add a new timer queue. BOOST_ASIO_DECL void do_add_timer_queue(timer_queue_base& queue); @@ -248,11 +249,11 @@ private: enum { - // Timeout to use with GetQueuedCompletionStatus. Some versions of windows - // have a "bug" where a call to GetQueuedCompletionStatus can appear stuck - // even though there are events waiting on the queue. Using a timeout helps - // to work around the issue. - gqcs_timeout = 500, + // Timeout to use with GetQueuedCompletionStatus on older versions of + // Windows. Some versions of windows have a "bug" where a call to + // GetQueuedCompletionStatus can appear stuck even though there are events + // waiting on the queue. Using a timeout helps to work around the issue. + default_gqcs_timeout = 500, // Maximum waitable timer timeout, in milliseconds. max_timeout_msec = 5 * 60 * 1000, @@ -270,6 +271,9 @@ private: overlapped_contains_result = 2 }; + // Timeout to use with GetQueuedCompletionStatus. + const DWORD gqcs_timeout_; + // Function object for processing timeouts in a background thread. struct timer_thread_function; friend struct timer_thread_function; diff --git a/3party/boost/boost/asio/detail/win_iocp_io_service_fwd.hpp b/3party/boost/boost/asio/detail/win_iocp_io_service_fwd.hpp deleted file mode 100644 index b833f58301..0000000000 --- a/3party/boost/boost/asio/detail/win_iocp_io_service_fwd.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// -// detail/win_iocp_io_service_fwd.hpp -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// - -#ifndef BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_FWD_HPP -#define BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_FWD_HPP - -#if defined(_MSC_VER) && (_MSC_VER >= 1200) -# pragma once -#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) - -#include - -#if defined(BOOST_ASIO_HAS_IOCP) - -namespace boost { -namespace asio { -namespace detail { - -class win_iocp_io_service; -class win_iocp_overlapped_ptr; - -} // namespace detail -} // namespace asio -} // namespace boost - -#endif // defined(BOOST_ASIO_HAS_IOCP) - -#endif // BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_FWD_HPP diff --git a/3party/boost/boost/asio/detail/win_iocp_null_buffers_op.hpp b/3party/boost/boost/asio/detail/win_iocp_null_buffers_op.hpp index 155b185eb1..ae49f3f679 100644 --- a/3party/boost/boost/asio/detail/win_iocp_null_buffers_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_null_buffers_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_null_buffers_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_operation.hpp b/3party/boost/boost/asio/detail/win_iocp_operation.hpp index 549da82f9a..41a58c64cd 100644 --- a/3party/boost/boost/asio/detail/win_iocp_operation.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_operation.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_operation.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -22,7 +22,6 @@ #include #include #include -#include #include #include @@ -31,6 +30,8 @@ namespace boost { namespace asio { namespace detail { +class win_iocp_io_service; + // Base class for all operations. A function pointer is used instead of virtual // functions to avoid the associated overhead. class win_iocp_operation diff --git a/3party/boost/boost/asio/detail/win_iocp_overlapped_op.hpp b/3party/boost/boost/asio/detail/win_iocp_overlapped_op.hpp index bba0e110e5..9a48433461 100644 --- a/3party/boost/boost/asio/detail/win_iocp_overlapped_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_overlapped_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_overlapped_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_overlapped_ptr.hpp b/3party/boost/boost/asio/detail/win_iocp_overlapped_ptr.hpp index 318d4ba2c0..d461e0d747 100644 --- a/3party/boost/boost/asio/detail/win_iocp_overlapped_ptr.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_overlapped_ptr.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_overlapped_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_serial_port_service.hpp b/3party/boost/boost/asio/detail/win_iocp_serial_port_service.hpp index b7fb6e9824..a8191ee4dc 100644 --- a/3party/boost/boost/asio/detail/win_iocp_serial_port_service.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_serial_port_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/detail/win_iocp_socket_accept_op.hpp b/3party/boost/boost/asio/detail/win_iocp_socket_accept_op.hpp index 3e7e944a70..86684d5234 100644 --- a/3party/boost/boost/asio/detail/win_iocp_socket_accept_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_socket_accept_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_accept_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_socket_connect_op.hpp b/3party/boost/boost/asio/detail/win_iocp_socket_connect_op.hpp new file mode 100644 index 0000000000..f940e0a464 --- /dev/null +++ b/3party/boost/boost/asio/detail/win_iocp_socket_connect_op.hpp @@ -0,0 +1,126 @@ +// +// detail/win_iocp_socket_connect_op.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP +#define BOOST_ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_HAS_IOCP) + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class win_iocp_socket_connect_op_base : public reactor_op +{ +public: + win_iocp_socket_connect_op_base(socket_type socket, func_type complete_func) + : reactor_op(&win_iocp_socket_connect_op_base::do_perform, complete_func), + socket_(socket), + connect_ex_(false) + { + } + + static bool do_perform(reactor_op* base) + { + win_iocp_socket_connect_op_base* o( + static_cast(base)); + + return socket_ops::non_blocking_connect(o->socket_, o->ec_); + } + + socket_type socket_; + bool connect_ex_; +}; + +template +class win_iocp_socket_connect_op : public win_iocp_socket_connect_op_base +{ +public: + BOOST_ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_connect_op); + + win_iocp_socket_connect_op(socket_type socket, Handler& handler) + : win_iocp_socket_connect_op_base(socket, + &win_iocp_socket_connect_op::do_complete), + handler_(BOOST_ASIO_MOVE_CAST(Handler)(handler)) + { + } + + static void do_complete(io_service_impl* owner, operation* base, + const boost::system::error_code& result_ec, + std::size_t /*bytes_transferred*/) + { + boost::system::error_code ec(result_ec); + + // Take ownership of the operation object. + win_iocp_socket_connect_op* o( + static_cast(base)); + ptr p = { boost::asio::detail::addressof(o->handler_), o, o }; + + if (owner) + { + if (o->connect_ex_) + socket_ops::complete_iocp_connect(o->socket_, ec); + else + ec = o->ec_; + } + + BOOST_ASIO_HANDLER_COMPLETION((o)); + + // Make a copy of the handler so that the memory can be deallocated before + // the upcall is made. Even if we're not about to make an upcall, a + // sub-object of the handler may be the true owner of the memory associated + // with the handler. Consequently, a local copy of the handler is required + // to ensure that any owning sub-object remains valid until after we have + // deallocated the memory here. + detail::binder1 + handler(o->handler_, ec); + p.h = boost::asio::detail::addressof(handler.handler_); + p.reset(); + + // Make the upcall if required. + if (owner) + { + fenced_block b(fenced_block::half); + BOOST_ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_)); + boost_asio_handler_invoke_helpers::invoke(handler, handler.handler_); + BOOST_ASIO_HANDLER_INVOCATION_END; + } + } + +private: + Handler handler_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_HAS_IOCP) + +#endif // BOOST_ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP diff --git a/3party/boost/boost/asio/detail/win_iocp_socket_recv_op.hpp b/3party/boost/boost/asio/detail/win_iocp_socket_recv_op.hpp index b6dc50567e..f7fdcee057 100644 --- a/3party/boost/boost/asio/detail/win_iocp_socket_recv_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_socket_recv_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_recv_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp b/3party/boost/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp index a77542a827..5e1ade67ff 100644 --- a/3party/boost/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_recvfrom_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp b/3party/boost/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp index 896c6d6af1..a09feab9e7 100644 --- a/3party/boost/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_recvmsg_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_socket_send_op.hpp b/3party/boost/boost/asio/detail/win_iocp_socket_send_op.hpp index 9049f84cdc..ef25b88b50 100644 --- a/3party/boost/boost/asio/detail/win_iocp_socket_send_op.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_socket_send_op.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_send_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_iocp_socket_service.hpp b/3party/boost/boost/asio/detail/win_iocp_socket_service.hpp index 24690d58a3..d82e40e787 100644 --- a/3party/boost/boost/asio/detail/win_iocp_socket_service.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_socket_service.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -31,7 +31,6 @@ #include #include #include -#include #include #include #include @@ -40,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -166,6 +166,24 @@ public: other_impl.remote_endpoint_ = endpoint_type(); } + // Move-construct a new socket implementation from another protocol type. + template + void converting_move_construct(implementation_type& impl, + typename win_iocp_socket_service< + Protocol1>::implementation_type& other_impl) + { + this->base_move_construct(impl, other_impl); + + impl.protocol_ = protocol_type(other_impl.protocol_); + other_impl.protocol_ = typename Protocol1::endpoint().protocol(); + + impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_; + other_impl.have_remote_endpoint_ = false; + + impl.remote_endpoint_ = other_impl.remote_endpoint_; + other_impl.remote_endpoint_ = typename Protocol1::endpoint(); + } + // Open a new socket implementation. boost::system::error_code open(implementation_type& impl, const protocol_type& protocol, boost::system::error_code& ec) @@ -433,7 +451,7 @@ public: peer_endpoint ? &addr_len : 0, ec)); // On success, assign new connection to peer socket object. - if (new_socket.get() >= 0) + if (new_socket.get() != invalid_socket) { if (peer_endpoint) peer_endpoint->resize(addr_len); @@ -484,16 +502,16 @@ public: const endpoint_type& peer_endpoint, Handler& handler) { // Allocate and construct an operation to wrap the handler. - typedef reactive_socket_connect_op op; + typedef win_iocp_socket_connect_op op; typename op::ptr p = { boost::asio::detail::addressof(handler), boost_asio_handler_alloc_helpers::allocate( sizeof(op), handler), 0 }; - p.p = new (p.v) op(impl.socket_, peer_endpoint, handler); + p.p = new (p.v) op(impl.socket_, handler); BOOST_ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect")); - start_connect_op(impl, p.p, peer_endpoint.data(), - static_cast(peer_endpoint.size())); + start_connect_op(impl, impl.protocol_.family(), impl.protocol_.type(), + peer_endpoint.data(), static_cast(peer_endpoint.size()), p.p); p.v = p.p = 0; } }; diff --git a/3party/boost/boost/asio/detail/win_iocp_socket_service_base.hpp b/3party/boost/boost/asio/detail/win_iocp_socket_service_base.hpp index 8b6a72f058..f5f0223386 100644 --- a/3party/boost/boost/asio/detail/win_iocp_socket_service_base.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_socket_service_base.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_socket_service_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -215,7 +216,7 @@ public: template void async_send(base_implementation_type& impl, const ConstBufferSequence& buffers, - socket_base::message_flags flags, Handler handler) + socket_base::message_flags flags, Handler& handler) { // Allocate and construct an operation to wrap the handler. typedef win_iocp_socket_send_op op; @@ -238,7 +239,7 @@ public: // Start an asynchronous wait until data can be sent without blocking. template void async_send(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags, Handler handler) + socket_base::message_flags, Handler& handler) { // Allocate and construct an operation to wrap the handler. typedef win_iocp_null_buffers_op op; @@ -282,7 +283,7 @@ public: template void async_receive(base_implementation_type& impl, const MutableBufferSequence& buffers, - socket_base::message_flags flags, Handler handler) + socket_base::message_flags flags, Handler& handler) { // Allocate and construct an operation to wrap the handler. typedef win_iocp_socket_recv_op op; @@ -305,7 +306,7 @@ public: // Wait until data can be received without blocking. template void async_receive(base_implementation_type& impl, const null_buffers&, - socket_base::message_flags flags, Handler handler) + socket_base::message_flags flags, Handler& handler) { // Allocate and construct an operation to wrap the handler. typedef win_iocp_null_buffers_op op; @@ -356,7 +357,7 @@ public: template void async_receive_with_flags(base_implementation_type& impl, const MutableBufferSequence& buffers, socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler handler) + socket_base::message_flags& out_flags, Handler& handler) { // Allocate and construct an operation to wrap the handler. typedef win_iocp_socket_recvmsg_op op; @@ -379,7 +380,7 @@ public: template void async_receive_with_flags(base_implementation_type& impl, const null_buffers&, socket_base::message_flags in_flags, - socket_base::message_flags& out_flags, Handler handler) + socket_base::message_flags& out_flags, Handler& handler) { // Allocate and construct an operation to wrap the handler. typedef win_iocp_null_buffers_op op; @@ -451,7 +452,8 @@ protected: // Start the asynchronous connect operation using the reactor. BOOST_ASIO_DECL void start_connect_op(base_implementation_type& impl, - reactor_op* op, const socket_addr_type* addr, std::size_t addrlen); + int family, int type, const socket_addr_type* remote_addr, + std::size_t remote_addrlen, win_iocp_socket_connect_op_base* op); // Helper function to close a socket when the associated object is being // destroyed. @@ -466,6 +468,16 @@ protected: // this service. BOOST_ASIO_DECL reactor& get_reactor(); + // The type of a ConnectEx function pointer, as old SDKs may not provide it. + typedef BOOL (PASCAL *connect_ex_fn)(SOCKET, + const socket_addr_type*, int, void*, DWORD, DWORD*, OVERLAPPED*); + + // Helper function to get the ConnectEx pointer. If no ConnectEx pointer has + // been obtained yet, one is obtained using WSAIoctl and the pointer is + // cached. Returns a null pointer if ConnectEx is not available. + BOOST_ASIO_DECL connect_ex_fn get_connect_ex( + base_implementation_type& impl, int type); + // Helper function to emulate InterlockedCompareExchangePointer functionality // for: // - very old Platform SDKs; and @@ -489,6 +501,9 @@ protected: // only if needed. reactor* reactor_; + // Pointer to ConnectEx implementation. + void* connect_ex_; + // Mutex to protect access to the linked list of implementations. boost::asio::detail::mutex mutex_; diff --git a/3party/boost/boost/asio/detail/win_iocp_thread_info.hpp b/3party/boost/boost/asio/detail/win_iocp_thread_info.hpp index f5d2c4123b..c036d393b9 100644 --- a/3party/boost/boost/asio/detail/win_iocp_thread_info.hpp +++ b/3party/boost/boost/asio/detail/win_iocp_thread_info.hpp @@ -2,7 +2,7 @@ // detail/win_iocp_thread_info.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_mutex.hpp b/3party/boost/boost/asio/detail/win_mutex.hpp index a8e001bfc8..2f927b3b55 100644 --- a/3party/boost/boost/asio/detail/win_mutex.hpp +++ b/3party/boost/boost/asio/detail/win_mutex.hpp @@ -2,7 +2,7 @@ // detail/win_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_object_handle_service.hpp b/3party/boost/boost/asio/detail/win_object_handle_service.hpp index edebf749cd..a9169ca9d6 100644 --- a/3party/boost/boost/asio/detail/win_object_handle_service.hpp +++ b/3party/boost/boost/asio/detail/win_object_handle_service.hpp @@ -2,7 +2,7 @@ // detail/win_object_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -130,7 +130,7 @@ public: /// Start an asynchronous wait. template - void async_wait(implementation_type& impl, Handler handler) + void async_wait(implementation_type& impl, Handler& handler) { // Allocate and construct an operation to wrap the handler. typedef wait_handler op; diff --git a/3party/boost/boost/asio/detail/win_static_mutex.hpp b/3party/boost/boost/asio/detail/win_static_mutex.hpp index 6cbfd1df19..a6a7e111cd 100644 --- a/3party/boost/boost/asio/detail/win_static_mutex.hpp +++ b/3party/boost/boost/asio/detail/win_static_mutex.hpp @@ -2,7 +2,7 @@ // detail/win_static_mutex.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_thread.hpp b/3party/boost/boost/asio/detail/win_thread.hpp index 2a745758ba..889eca690c 100644 --- a/3party/boost/boost/asio/detail/win_thread.hpp +++ b/3party/boost/boost/asio/detail/win_thread.hpp @@ -2,7 +2,7 @@ // detail/win_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/win_tss_ptr.hpp b/3party/boost/boost/asio/detail/win_tss_ptr.hpp index bc0d5bfa27..ca32feaccb 100644 --- a/3party/boost/boost/asio/detail/win_tss_ptr.hpp +++ b/3party/boost/boost/asio/detail/win_tss_ptr.hpp @@ -2,7 +2,7 @@ // detail/win_tss_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/wince_thread.hpp b/3party/boost/boost/asio/detail/wince_thread.hpp index 33311770e8..6b9104af0c 100644 --- a/3party/boost/boost/asio/detail/wince_thread.hpp +++ b/3party/boost/boost/asio/detail/wince_thread.hpp @@ -2,7 +2,7 @@ // detail/wince_thread.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/winrt_async_manager.hpp b/3party/boost/boost/asio/detail/winrt_async_manager.hpp new file mode 100644 index 0000000000..1c389a0ad7 --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_async_manager.hpp @@ -0,0 +1,296 @@ +// +// detail/winrt_async_manager.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP +#define BOOST_ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class winrt_async_manager + : public boost::asio::detail::service_base +{ +public: + // Constructor. + winrt_async_manager(boost::asio::io_service& io_service) + : boost::asio::detail::service_base(io_service), + io_service_(use_service(io_service)), + outstanding_ops_(1) + { + } + + // Destructor. + ~winrt_async_manager() + { + } + + // Destroy all user-defined handler objects owned by the service. + void shutdown_service() + { + if (--outstanding_ops_ > 0) + { + // Block until last operation is complete. + std::future f = promise_.get_future(); + f.wait(); + } + } + + void sync(Windows::Foundation::IAsyncAction^ action, + boost::system::error_code& ec) + { + using namespace Windows::Foundation; + using Windows::Foundation::AsyncStatus; + + auto promise = std::make_shared>(); + auto future = promise->get_future(); + + action->Completed = ref new AsyncActionCompletedHandler( + [promise](IAsyncAction^ action, AsyncStatus status) + { + switch (status) + { + case AsyncStatus::Canceled: + promise->set_value(boost::asio::error::operation_aborted); + break; + case AsyncStatus::Error: + case AsyncStatus::Completed: + default: + boost::system::error_code ec( + action->ErrorCode.Value, + boost::system::system_category()); + promise->set_value(ec); + break; + } + }); + + ec = future.get(); + } + + template + TResult sync(Windows::Foundation::IAsyncOperation^ operation, + boost::system::error_code& ec) + { + using namespace Windows::Foundation; + using Windows::Foundation::AsyncStatus; + + auto promise = std::make_shared>(); + auto future = promise->get_future(); + + operation->Completed = ref new AsyncOperationCompletedHandler( + [promise](IAsyncOperation^ operation, AsyncStatus status) + { + switch (status) + { + case AsyncStatus::Canceled: + promise->set_value(boost::asio::error::operation_aborted); + break; + case AsyncStatus::Error: + case AsyncStatus::Completed: + default: + boost::system::error_code ec( + operation->ErrorCode.Value, + boost::system::system_category()); + promise->set_value(ec); + break; + } + }); + + ec = future.get(); + return operation->GetResults(); + } + + template + TResult sync( + Windows::Foundation::IAsyncOperationWithProgress< + TResult, TProgress>^ operation, + boost::system::error_code& ec) + { + using namespace Windows::Foundation; + using Windows::Foundation::AsyncStatus; + + auto promise = std::make_shared>(); + auto future = promise->get_future(); + + operation->Completed + = ref new AsyncOperationWithProgressCompletedHandler( + [promise](IAsyncOperationWithProgress^ operation, + AsyncStatus status) + { + switch (status) + { + case AsyncStatus::Canceled: + promise->set_value(boost::asio::error::operation_aborted); + break; + case AsyncStatus::Started: + break; + case AsyncStatus::Error: + case AsyncStatus::Completed: + default: + boost::system::error_code ec( + operation->ErrorCode.Value, + boost::system::system_category()); + promise->set_value(ec); + break; + } + }); + + ec = future.get(); + return operation->GetResults(); + } + + void async(Windows::Foundation::IAsyncAction^ action, + winrt_async_op* handler) + { + using namespace Windows::Foundation; + using Windows::Foundation::AsyncStatus; + + auto on_completed = ref new AsyncActionCompletedHandler( + [this, handler](IAsyncAction^ action, AsyncStatus status) + { + switch (status) + { + case AsyncStatus::Canceled: + handler->ec_ = boost::asio::error::operation_aborted; + break; + case AsyncStatus::Started: + return; + case AsyncStatus::Completed: + case AsyncStatus::Error: + default: + handler->ec_ = boost::system::error_code( + action->ErrorCode.Value, + boost::system::system_category()); + break; + } + io_service_.post_deferred_completion(handler); + if (--outstanding_ops_ == 0) + promise_.set_value(); + }); + + io_service_.work_started(); + ++outstanding_ops_; + action->Completed = on_completed; + } + + template + void async(Windows::Foundation::IAsyncOperation^ operation, + winrt_async_op* handler) + { + using namespace Windows::Foundation; + using Windows::Foundation::AsyncStatus; + + auto on_completed = ref new AsyncOperationCompletedHandler( + [this, handler](IAsyncOperation^ operation, AsyncStatus status) + { + switch (status) + { + case AsyncStatus::Canceled: + handler->ec_ = boost::asio::error::operation_aborted; + break; + case AsyncStatus::Started: + return; + case AsyncStatus::Completed: + handler->result_ = operation->GetResults(); + // Fall through. + case AsyncStatus::Error: + default: + handler->ec_ = boost::system::error_code( + operation->ErrorCode.Value, + boost::system::system_category()); + break; + } + io_service_.post_deferred_completion(handler); + if (--outstanding_ops_ == 0) + promise_.set_value(); + }); + + io_service_.work_started(); + ++outstanding_ops_; + operation->Completed = on_completed; + } + + template + void async( + Windows::Foundation::IAsyncOperationWithProgress< + TResult, TProgress>^ operation, + winrt_async_op* handler) + { + using namespace Windows::Foundation; + using Windows::Foundation::AsyncStatus; + + auto on_completed + = ref new AsyncOperationWithProgressCompletedHandler( + [this, handler](IAsyncOperationWithProgress< + TResult, TProgress>^ operation, AsyncStatus status) + { + switch (status) + { + case AsyncStatus::Canceled: + handler->ec_ = boost::asio::error::operation_aborted; + break; + case AsyncStatus::Started: + return; + case AsyncStatus::Completed: + handler->result_ = operation->GetResults(); + // Fall through. + case AsyncStatus::Error: + default: + handler->ec_ = boost::system::error_code( + operation->ErrorCode.Value, + boost::system::system_category()); + break; + } + io_service_.post_deferred_completion(handler); + if (--outstanding_ops_ == 0) + promise_.set_value(); + }); + + io_service_.work_started(); + ++outstanding_ops_; + operation->Completed = on_completed; + } + +private: + // The io_service implementation used to post completed handlers. + io_service_impl& io_service_; + + // Count of outstanding operations. + atomic_count outstanding_ops_; + + // Used to keep wait for outstanding operations to complete. + std::promise promise_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP diff --git a/3party/boost/boost/asio/detail/winrt_async_op.hpp b/3party/boost/boost/asio/detail/winrt_async_op.hpp new file mode 100644 index 0000000000..cded1311fa --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_async_op.hpp @@ -0,0 +1,67 @@ +// +// detail/winrt_async_op.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_ASYNC_OP_HPP +#define BOOST_ASIO_DETAIL_WINRT_ASYNC_OP_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +class winrt_async_op + : public operation +{ +public: + // The error code to be passed to the completion handler. + boost::system::error_code ec_; + + // The result of the operation, to be passed to the completion handler. + TResult result_; + +protected: + winrt_async_op(func_type complete_func) + : operation(complete_func), + result_() + { + } +}; + +template <> +class winrt_async_op + : public operation +{ +public: + // The error code to be passed to the completion handler. + boost::system::error_code ec_; + +protected: + winrt_async_op(func_type complete_func) + : operation(complete_func) + { + } +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // BOOST_ASIO_DETAIL_WINRT_ASYNC_OP_HPP diff --git a/3party/boost/boost/asio/detail/winrt_resolve_op.hpp b/3party/boost/boost/asio/detail/winrt_resolve_op.hpp new file mode 100644 index 0000000000..fa12889141 --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_resolve_op.hpp @@ -0,0 +1,119 @@ +// +// detail/winrt_resolve_op.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_RESOLVE_OP_HPP +#define BOOST_ASIO_DETAIL_WINRT_RESOLVE_OP_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +class winrt_resolve_op : + public winrt_async_op< + Windows::Foundation::Collections::IVectorView< + Windows::Networking::EndpointPair^>^> +{ +public: + BOOST_ASIO_DEFINE_HANDLER_PTR(winrt_resolve_op); + + typedef typename Protocol::endpoint endpoint_type; + typedef boost::asio::ip::basic_resolver_query query_type; + typedef boost::asio::ip::basic_resolver_iterator iterator_type; + + winrt_resolve_op(const query_type& query, Handler& handler) + : winrt_async_op< + Windows::Foundation::Collections::IVectorView< + Windows::Networking::EndpointPair^>^>( + &winrt_resolve_op::do_complete), + query_(query), + handler_(BOOST_ASIO_MOVE_CAST(Handler)(handler)) + { + } + + static void do_complete(io_service_impl* owner, operation* base, + const boost::system::error_code&, std::size_t) + { + // Take ownership of the operation object. + winrt_resolve_op* o(static_cast(base)); + ptr p = { boost::asio::detail::addressof(o->handler_), o, o }; + + BOOST_ASIO_HANDLER_COMPLETION((o)); + + iterator_type iterator = iterator_type(); + if (!o->ec_) + { + try + { + iterator = iterator_type::create( + o->result_, o->query_.hints(), + o->query_.host_name(), o->query_.service_name()); + } + catch (Platform::Exception^ e) + { + o->ec_ = boost::system::error_code(e->HResult, + boost::system::system_category()); + } + } + + // Make a copy of the handler so that the memory can be deallocated before + // the upcall is made. Even if we're not about to make an upcall, a + // sub-object of the handler may be the true owner of the memory associated + // with the handler. Consequently, a local copy of the handler is required + // to ensure that any owning sub-object remains valid until after we have + // deallocated the memory here. + detail::binder2 + handler(o->handler_, o->ec_, iterator); + p.h = boost::asio::detail::addressof(handler.handler_); + p.reset(); + + // Make the upcall if required. + if (owner) + { + fenced_block b(fenced_block::half); + BOOST_ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); + boost_asio_handler_invoke_helpers::invoke(handler, handler.handler_); + BOOST_ASIO_HANDLER_INVOCATION_END; + } + } + +private: + query_type query_; + Handler handler_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_RESOLVE_OP_HPP diff --git a/3party/boost/boost/asio/detail/winrt_resolver_service.hpp b/3party/boost/boost/asio/detail/winrt_resolver_service.hpp new file mode 100644 index 0000000000..624305fdb3 --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_resolver_service.hpp @@ -0,0 +1,185 @@ +// +// detail/winrt_resolver_service.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP +#define BOOST_ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +class winrt_resolver_service +{ +public: + // The implementation type of the resolver. A cancellation token is used to + // indicate to the asynchronous operation that the operation has been + // cancelled. + typedef socket_ops::shared_cancel_token_type implementation_type; + + // The endpoint type. + typedef typename Protocol::endpoint endpoint_type; + + // The query type. + typedef boost::asio::ip::basic_resolver_query query_type; + + // The iterator type. + typedef boost::asio::ip::basic_resolver_iterator iterator_type; + + // Constructor. + winrt_resolver_service(boost::asio::io_service& io_service) + : io_service_(use_service(io_service)), + async_manager_(use_service(io_service)) + { + } + + // Destructor. + ~winrt_resolver_service() + { + } + + // Destroy all user-defined handler objects owned by the service. + void shutdown_service() + { + } + + // Perform any fork-related housekeeping. + void fork_service(boost::asio::io_service::fork_event) + { + } + + // Construct a new resolver implementation. + void construct(implementation_type&) + { + } + + // Destroy a resolver implementation. + void destroy(implementation_type&) + { + } + + // Cancel pending asynchronous operations. + void cancel(implementation_type&) + { + } + + // Resolve a query to a list of entries. + iterator_type resolve(implementation_type&, + const query_type& query, boost::system::error_code& ec) + { + try + { + using namespace Windows::Networking::Sockets; + auto endpoint_pairs = async_manager_.sync( + DatagramSocket::GetEndpointPairsAsync( + winrt_utils::host_name(query.host_name()), + winrt_utils::string(query.service_name())), ec); + + if (ec) + return iterator_type(); + + return iterator_type::create( + endpoint_pairs, query.hints(), + query.host_name(), query.service_name()); + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + return iterator_type(); + } + } + + // Asynchronously resolve a query to a list of entries. + template + void async_resolve(implementation_type&, + const query_type& query, Handler& handler) + { + bool is_continuation = + boost_asio_handler_cont_helpers::is_continuation(handler); + + // Allocate and construct an operation to wrap the handler. + typedef winrt_resolve_op op; + typename op::ptr p = { boost::asio::detail::addressof(handler), + boost_asio_handler_alloc_helpers::allocate( + sizeof(op), handler), 0 }; + p.p = new (p.v) op(query, handler); + + BOOST_ASIO_HANDLER_CREATION((p.p, "resolver", &impl, "async_resolve")); + + try + { + using namespace Windows::Networking::Sockets; + async_manager_.async(DatagramSocket::GetEndpointPairsAsync( + winrt_utils::host_name(query.host_name()), + winrt_utils::string(query.service_name())), p.p); + p.v = p.p = 0; + } + catch (Platform::Exception^ e) + { + p.p->ec_ = boost::system::error_code( + e->HResult, boost::system::system_category()); + io_service_.post_immediate_completion(p.p, is_continuation); + p.v = p.p = 0; + } + } + + // Resolve an endpoint to a list of entries. + iterator_type resolve(implementation_type&, + const endpoint_type&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return iterator_type(); + } + + // Asynchronously resolve an endpoint to a list of entries. + template + void async_resolve(implementation_type&, + const endpoint_type&, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const iterator_type iterator; + io_service_.get_io_service().post( + detail::bind_handler(handler, ec, iterator)); + } + +private: + io_service_impl& io_service_; + winrt_async_manager& async_manager_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP diff --git a/3party/boost/boost/asio/detail/winrt_socket_connect_op.hpp b/3party/boost/boost/asio/detail/winrt_socket_connect_op.hpp new file mode 100644 index 0000000000..0e3f230076 --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_socket_connect_op.hpp @@ -0,0 +1,92 @@ +// +// detail/winrt_socket_connect_op.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP +#define BOOST_ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +class winrt_socket_connect_op : + public winrt_async_op +{ +public: + BOOST_ASIO_DEFINE_HANDLER_PTR(winrt_socket_connect_op); + + winrt_socket_connect_op(Handler& handler) + : winrt_async_op(&winrt_socket_connect_op::do_complete), + handler_(BOOST_ASIO_MOVE_CAST(Handler)(handler)) + { + } + + static void do_complete(io_service_impl* owner, operation* base, + const boost::system::error_code&, std::size_t) + { + // Take ownership of the operation object. + winrt_socket_connect_op* o(static_cast(base)); + ptr p = { boost::asio::detail::addressof(o->handler_), o, o }; + + BOOST_ASIO_HANDLER_COMPLETION((o)); + + // Make a copy of the handler so that the memory can be deallocated before + // the upcall is made. Even if we're not about to make an upcall, a + // sub-object of the handler may be the true owner of the memory associated + // with the handler. Consequently, a local copy of the handler is required + // to ensure that any owning sub-object remains valid until after we have + // deallocated the memory here. + detail::binder1 + handler(o->handler_, o->ec_); + p.h = boost::asio::detail::addressof(handler.handler_); + p.reset(); + + // Make the upcall if required. + if (owner) + { + fenced_block b(fenced_block::half); + BOOST_ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); + boost_asio_handler_invoke_helpers::invoke(handler, handler.handler_); + BOOST_ASIO_HANDLER_INVOCATION_END; + } + } + +private: + Handler handler_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP diff --git a/3party/boost/boost/asio/detail/winrt_socket_recv_op.hpp b/3party/boost/boost/asio/detail/winrt_socket_recv_op.hpp new file mode 100644 index 0000000000..56545687fe --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_socket_recv_op.hpp @@ -0,0 +1,112 @@ +// +// detail/winrt_socket_recv_op.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP +#define BOOST_ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +class winrt_socket_recv_op : + public winrt_async_op +{ +public: + BOOST_ASIO_DEFINE_HANDLER_PTR(winrt_socket_recv_op); + + winrt_socket_recv_op(const MutableBufferSequence& buffers, Handler& handler) + : winrt_async_op( + &winrt_socket_recv_op::do_complete), + buffers_(buffers), + handler_(BOOST_ASIO_MOVE_CAST(Handler)(handler)) + { + } + + static void do_complete(io_service_impl* owner, operation* base, + const boost::system::error_code&, std::size_t) + { + // Take ownership of the operation object. + winrt_socket_recv_op* o(static_cast(base)); + ptr p = { boost::asio::detail::addressof(o->handler_), o, o }; + + BOOST_ASIO_HANDLER_COMPLETION((o)); + +#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING) + // Check whether buffers are still valid. + if (owner) + { + buffer_sequence_adapter::validate(o->buffers_); + } +#endif // defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING) + + std::size_t bytes_transferred = o->result_ ? o->result_->Length : 0; + if (bytes_transferred == 0 && !o->ec_ && + !buffer_sequence_adapter::all_empty(o->buffers_)) + { + o->ec_ = boost::asio::error::eof; + } + + // Make a copy of the handler so that the memory can be deallocated before + // the upcall is made. Even if we're not about to make an upcall, a + // sub-object of the handler may be the true owner of the memory associated + // with the handler. Consequently, a local copy of the handler is required + // to ensure that any owning sub-object remains valid until after we have + // deallocated the memory here. + detail::binder2 + handler(o->handler_, o->ec_, bytes_transferred); + p.h = boost::asio::detail::addressof(handler.handler_); + p.reset(); + + // Make the upcall if required. + if (owner) + { + fenced_block b(fenced_block::half); + BOOST_ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); + boost_asio_handler_invoke_helpers::invoke(handler, handler.handler_); + BOOST_ASIO_HANDLER_INVOCATION_END; + } + } + +private: + MutableBufferSequence buffers_; + Handler handler_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP diff --git a/3party/boost/boost/asio/detail/winrt_socket_send_op.hpp b/3party/boost/boost/asio/detail/winrt_socket_send_op.hpp new file mode 100644 index 0000000000..ef3676663a --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_socket_send_op.hpp @@ -0,0 +1,103 @@ +// +// detail/winrt_socket_send_op.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP +#define BOOST_ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +class winrt_socket_send_op : + public winrt_async_op +{ +public: + BOOST_ASIO_DEFINE_HANDLER_PTR(winrt_socket_send_op); + + winrt_socket_send_op(const ConstBufferSequence& buffers, Handler& handler) + : winrt_async_op(&winrt_socket_send_op::do_complete), + buffers_(buffers), + handler_(BOOST_ASIO_MOVE_CAST(Handler)(handler)) + { + } + + static void do_complete(io_service_impl* owner, operation* base, + const boost::system::error_code&, std::size_t) + { + // Take ownership of the operation object. + winrt_socket_send_op* o(static_cast(base)); + ptr p = { boost::asio::detail::addressof(o->handler_), o, o }; + + BOOST_ASIO_HANDLER_COMPLETION((o)); + +#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING) + // Check whether buffers are still valid. + if (owner) + { + buffer_sequence_adapter::validate(o->buffers_); + } +#endif // defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING) + + // Make a copy of the handler so that the memory can be deallocated before + // the upcall is made. Even if we're not about to make an upcall, a + // sub-object of the handler may be the true owner of the memory associated + // with the handler. Consequently, a local copy of the handler is required + // to ensure that any owning sub-object remains valid until after we have + // deallocated the memory here. + detail::binder2 + handler(o->handler_, o->ec_, o->result_); + p.h = boost::asio::detail::addressof(handler.handler_); + p.reset(); + + // Make the upcall if required. + if (owner) + { + fenced_block b(fenced_block::half); + BOOST_ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_)); + boost_asio_handler_invoke_helpers::invoke(handler, handler.handler_); + BOOST_ASIO_HANDLER_INVOCATION_END; + } + } + +private: + ConstBufferSequence buffers_; + Handler handler_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP diff --git a/3party/boost/boost/asio/detail/winrt_ssocket_service.hpp b/3party/boost/boost/asio/detail/winrt_ssocket_service.hpp new file mode 100644 index 0000000000..a701efae00 --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_ssocket_service.hpp @@ -0,0 +1,234 @@ +// +// detail/winrt_ssocket_service.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP +#define BOOST_ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +template +class winrt_ssocket_service : + public winrt_ssocket_service_base +{ +public: + // The protocol type. + typedef Protocol protocol_type; + + // The endpoint type. + typedef typename Protocol::endpoint endpoint_type; + + // The native type of a socket. + typedef Windows::Networking::Sockets::StreamSocket^ native_handle_type; + + // The implementation type of the socket. + struct implementation_type : base_implementation_type + { + // Default constructor. + implementation_type() + : base_implementation_type(), + protocol_(endpoint_type().protocol()) + { + } + + // The protocol associated with the socket. + protocol_type protocol_; + }; + + // Constructor. + winrt_ssocket_service(boost::asio::io_service& io_service) + : winrt_ssocket_service_base(io_service) + { + } + + // Move-construct a new socket implementation. + void move_construct(implementation_type& impl, + implementation_type& other_impl) + { + this->base_move_construct(impl, other_impl); + + impl.protocol_ = other_impl.protocol_; + other_impl.protocol_ = endpoint_type().protocol(); + } + + // Move-assign from another socket implementation. + void move_assign(implementation_type& impl, + winrt_ssocket_service& other_service, + implementation_type& other_impl) + { + this->base_move_assign(impl, other_service, other_impl); + + impl.protocol_ = other_impl.protocol_; + other_impl.protocol_ = endpoint_type().protocol(); + } + + // Move-construct a new socket implementation from another protocol type. + template + void converting_move_construct(implementation_type& impl, + typename winrt_ssocket_service< + Protocol1>::implementation_type& other_impl) + { + this->base_move_construct(impl, other_impl); + + impl.protocol_ = protocol_type(other_impl.protocol_); + other_impl.protocol_ = typename Protocol1::endpoint().protocol(); + } + + // Open a new socket implementation. + boost::system::error_code open(implementation_type& impl, + const protocol_type& protocol, boost::system::error_code& ec) + { + if (is_open(impl)) + { + ec = boost::asio::error::already_open; + return ec; + } + + try + { + impl.socket_ = ref new Windows::Networking::Sockets::StreamSocket; + impl.protocol_ = protocol; + ec = boost::system::error_code(); + } + catch (Platform::Exception^ e) + { + ec = boost::system::error_code(e->HResult, + boost::system::system_category()); + } + + return ec; + } + + // Assign a native socket to a socket implementation. + boost::system::error_code assign(implementation_type& impl, + const protocol_type& protocol, const native_handle_type& native_socket, + boost::system::error_code& ec) + { + if (is_open(impl)) + { + ec = boost::asio::error::already_open; + return ec; + } + + impl.socket_ = native_socket; + impl.protocol_ = protocol; + ec = boost::system::error_code(); + + return ec; + } + + // Bind the socket to the specified local endpoint. + boost::system::error_code bind(implementation_type&, + const endpoint_type&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Get the local endpoint. + endpoint_type local_endpoint(const implementation_type& impl, + boost::system::error_code& ec) const + { + endpoint_type endpoint; + endpoint.resize(do_get_endpoint(impl, true, + endpoint.data(), endpoint.size(), ec)); + return endpoint; + } + + // Get the remote endpoint. + endpoint_type remote_endpoint(const implementation_type& impl, + boost::system::error_code& ec) const + { + endpoint_type endpoint; + endpoint.resize(do_get_endpoint(impl, false, + endpoint.data(), endpoint.size(), ec)); + return endpoint; + } + + // Set a socket option. + template + boost::system::error_code set_option(implementation_type& impl, + const Option& option, boost::system::error_code& ec) + { + return do_set_option(impl, option.level(impl.protocol_), + option.name(impl.protocol_), option.data(impl.protocol_), + option.size(impl.protocol_), ec); + } + + // Get a socket option. + template + boost::system::error_code get_option(const implementation_type& impl, + Option& option, boost::system::error_code& ec) const + { + std::size_t size = option.size(impl.protocol_); + do_get_option(impl, option.level(impl.protocol_), + option.name(impl.protocol_), + option.data(impl.protocol_), &size, ec); + if (!ec) + option.resize(impl.protocol_, size); + return ec; + } + + // Connect the socket to the specified endpoint. + boost::system::error_code connect(implementation_type& impl, + const endpoint_type& peer_endpoint, boost::system::error_code& ec) + { + return do_connect(impl, peer_endpoint.data(), ec); + } + + // Start an asynchronous connect. + template + void async_connect(implementation_type& impl, + const endpoint_type& peer_endpoint, Handler& handler) + { + bool is_continuation = + boost_asio_handler_cont_helpers::is_continuation(handler); + + // Allocate and construct an operation to wrap the handler. + typedef winrt_socket_connect_op op; + typename op::ptr p = { boost::asio::detail::addressof(handler), + boost_asio_handler_alloc_helpers::allocate( + sizeof(op), handler), 0 }; + p.p = new (p.v) op(handler); + + BOOST_ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect")); + + start_connect_op(impl, peer_endpoint.data(), p.p, is_continuation); + p.v = p.p = 0; + } +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP diff --git a/3party/boost/boost/asio/detail/winrt_ssocket_service_base.hpp b/3party/boost/boost/asio/detail/winrt_ssocket_service_base.hpp new file mode 100644 index 0000000000..02469ef2e9 --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_ssocket_service_base.hpp @@ -0,0 +1,357 @@ +// +// detail/winrt_ssocket_service_base.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP +#define BOOST_ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { + +class winrt_ssocket_service_base +{ +public: + // The native type of a socket. + typedef Windows::Networking::Sockets::StreamSocket^ native_handle_type; + + // The implementation type of the socket. + struct base_implementation_type + { + // Default constructor. + base_implementation_type() + : socket_(nullptr), + next_(0), + prev_(0) + { + } + + // The underlying native socket. + native_handle_type socket_; + + // Pointers to adjacent socket implementations in linked list. + base_implementation_type* next_; + base_implementation_type* prev_; + }; + + // Constructor. + BOOST_ASIO_DECL winrt_ssocket_service_base( + boost::asio::io_service& io_service); + + // Destroy all user-defined handler objects owned by the service. + BOOST_ASIO_DECL void shutdown_service(); + + // Construct a new socket implementation. + BOOST_ASIO_DECL void construct(base_implementation_type&); + + // Move-construct a new socket implementation. + BOOST_ASIO_DECL void base_move_construct(base_implementation_type& impl, + base_implementation_type& other_impl); + + // Move-assign from another socket implementation. + BOOST_ASIO_DECL void base_move_assign(base_implementation_type& impl, + winrt_ssocket_service_base& other_service, + base_implementation_type& other_impl); + + // Destroy a socket implementation. + BOOST_ASIO_DECL void destroy(base_implementation_type& impl); + + // Determine whether the socket is open. + bool is_open(const base_implementation_type& impl) const + { + return impl.socket_ != nullptr; + } + + // Destroy a socket implementation. + BOOST_ASIO_DECL boost::system::error_code close( + base_implementation_type& impl, boost::system::error_code& ec); + + // Get the native socket representation. + native_handle_type native_handle(base_implementation_type& impl) + { + return impl.socket_; + } + + // Cancel all operations associated with the socket. + boost::system::error_code cancel(base_implementation_type&, + boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Determine whether the socket is at the out-of-band data mark. + bool at_mark(const base_implementation_type&, + boost::system::error_code& ec) const + { + ec = boost::asio::error::operation_not_supported; + return false; + } + + // Determine the number of bytes available for reading. + std::size_t available(const base_implementation_type&, + boost::system::error_code& ec) const + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Perform an IO control command on the socket. + template + boost::system::error_code io_control(base_implementation_type&, + IO_Control_Command&, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Gets the non-blocking mode of the socket. + bool non_blocking(const base_implementation_type&) const + { + return false; + } + + // Sets the non-blocking mode of the socket. + boost::system::error_code non_blocking(base_implementation_type&, + bool, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Gets the non-blocking mode of the native socket implementation. + bool native_non_blocking(const base_implementation_type&) const + { + return false; + } + + // Sets the non-blocking mode of the native socket implementation. + boost::system::error_code native_non_blocking(base_implementation_type&, + bool, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Disable sends or receives on the socket. + boost::system::error_code shutdown(base_implementation_type&, + socket_base::shutdown_type, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return ec; + } + + // Send the given data to the peer. + template + std::size_t send(base_implementation_type& impl, + const ConstBufferSequence& buffers, + socket_base::message_flags flags, boost::system::error_code& ec) + { + return do_send(impl, + buffer_sequence_adapter::first(buffers), flags, ec); + } + + // Wait until data can be sent without blocking. + std::size_t send(base_implementation_type&, const null_buffers&, + socket_base::message_flags, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Start an asynchronous send. The data being sent must be valid for the + // lifetime of the asynchronous operation. + template + void async_send(base_implementation_type& impl, + const ConstBufferSequence& buffers, + socket_base::message_flags flags, Handler& handler) + { + bool is_continuation = + boost_asio_handler_cont_helpers::is_continuation(handler); + + // Allocate and construct an operation to wrap the handler. + typedef winrt_socket_send_op op; + typename op::ptr p = { boost::asio::detail::addressof(handler), + boost_asio_handler_alloc_helpers::allocate( + sizeof(op), handler), 0 }; + p.p = new (p.v) op(buffers, handler); + + BOOST_ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send")); + + start_send_op(impl, + buffer_sequence_adapter::first(buffers), + flags, p.p, is_continuation); + p.v = p.p = 0; + } + + // Start an asynchronous wait until data can be sent without blocking. + template + void async_send(base_implementation_type&, const null_buffers&, + socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.get_io_service().post( + detail::bind_handler(handler, ec, bytes_transferred)); + } + + // Receive some data from the peer. Returns the number of bytes received. + template + std::size_t receive(base_implementation_type& impl, + const MutableBufferSequence& buffers, + socket_base::message_flags flags, boost::system::error_code& ec) + { + return do_receive(impl, + buffer_sequence_adapter::first(buffers), flags, ec); + } + + // Wait until data can be received without blocking. + std::size_t receive(base_implementation_type&, const null_buffers&, + socket_base::message_flags, boost::system::error_code& ec) + { + ec = boost::asio::error::operation_not_supported; + return 0; + } + + // Start an asynchronous receive. The buffer for the data being received + // must be valid for the lifetime of the asynchronous operation. + template + void async_receive(base_implementation_type& impl, + const MutableBufferSequence& buffers, + socket_base::message_flags flags, Handler& handler) + { + bool is_continuation = + boost_asio_handler_cont_helpers::is_continuation(handler); + + // Allocate and construct an operation to wrap the handler. + typedef winrt_socket_recv_op op; + typename op::ptr p = { boost::asio::detail::addressof(handler), + boost_asio_handler_alloc_helpers::allocate( + sizeof(op), handler), 0 }; + p.p = new (p.v) op(buffers, handler); + + BOOST_ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive")); + + start_receive_op(impl, + buffer_sequence_adapter::first(buffers), + flags, p.p, is_continuation); + p.v = p.p = 0; + } + + // Wait until data can be received without blocking. + template + void async_receive(base_implementation_type&, const null_buffers&, + socket_base::message_flags, Handler& handler) + { + boost::system::error_code ec = boost::asio::error::operation_not_supported; + const std::size_t bytes_transferred = 0; + io_service_.get_io_service().post( + detail::bind_handler(handler, ec, bytes_transferred)); + } + +protected: + // Helper function to obtain endpoints associated with the connection. + BOOST_ASIO_DECL std::size_t do_get_endpoint( + const base_implementation_type& impl, bool local, + void* addr, std::size_t addr_len, boost::system::error_code& ec) const; + + // Helper function to set a socket option. + BOOST_ASIO_DECL boost::system::error_code do_set_option( + base_implementation_type& impl, + int level, int optname, const void* optval, + std::size_t optlen, boost::system::error_code& ec); + + // Helper function to get a socket option. + BOOST_ASIO_DECL void do_get_option( + const base_implementation_type& impl, + int level, int optname, void* optval, + std::size_t* optlen, boost::system::error_code& ec) const; + + // Helper function to perform a synchronous connect. + BOOST_ASIO_DECL boost::system::error_code do_connect( + base_implementation_type& impl, + const void* addr, boost::system::error_code& ec); + + // Helper function to start an asynchronous connect. + BOOST_ASIO_DECL void start_connect_op( + base_implementation_type& impl, const void* addr, + winrt_async_op* op, bool is_continuation); + + // Helper function to perform a synchronous send. + BOOST_ASIO_DECL std::size_t do_send( + base_implementation_type& impl, const boost::asio::const_buffer& data, + socket_base::message_flags flags, boost::system::error_code& ec); + + // Helper function to start an asynchronous send. + BOOST_ASIO_DECL void start_send_op(base_implementation_type& impl, + const boost::asio::const_buffer& data, socket_base::message_flags flags, + winrt_async_op* op, bool is_continuation); + + // Helper function to perform a synchronous receive. + BOOST_ASIO_DECL std::size_t do_receive( + base_implementation_type& impl, const boost::asio::mutable_buffer& data, + socket_base::message_flags flags, boost::system::error_code& ec); + + // Helper function to start an asynchronous receive. + BOOST_ASIO_DECL void start_receive_op(base_implementation_type& impl, + const boost::asio::mutable_buffer& data, socket_base::message_flags flags, + winrt_async_op* op, + bool is_continuation); + + // The io_service implementation used for delivering completions. + io_service_impl& io_service_; + + // The manager that keeps track of outstanding operations. + winrt_async_manager& async_manager_; + + // Mutex to protect access to the linked list of implementations. + boost::asio::detail::mutex mutex_; + + // The head of a linked list of all implementations. + base_implementation_type* impl_list_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#if defined(BOOST_ASIO_HEADER_ONLY) +# include +#endif // defined(BOOST_ASIO_HEADER_ONLY) + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP diff --git a/3party/boost/boost/asio/detail/winrt_timer_scheduler.hpp b/3party/boost/boost/asio/detail/winrt_timer_scheduler.hpp new file mode 100644 index 0000000000..9cadecaae2 --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_timer_scheduler.hpp @@ -0,0 +1,133 @@ +// +// detail/winrt_timer_scheduler.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP +#define BOOST_ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(BOOST_ASIO_HAS_IOCP) +# include +#endif // defined(BOOST_ASIO_HAS_IOCP) + +#include + +namespace boost { +namespace asio { +namespace detail { + +class winrt_timer_scheduler + : public boost::asio::detail::service_base +{ +public: + // Constructor. + BOOST_ASIO_DECL winrt_timer_scheduler(boost::asio::io_service& io_service); + + // Destructor. + BOOST_ASIO_DECL ~winrt_timer_scheduler(); + + // Destroy all user-defined handler objects owned by the service. + BOOST_ASIO_DECL void shutdown_service(); + + // Recreate internal descriptors following a fork. + BOOST_ASIO_DECL void fork_service( + boost::asio::io_service::fork_event fork_ev); + + // Initialise the task. No effect as this class uses its own thread. + BOOST_ASIO_DECL void init_task(); + + // Add a new timer queue to the reactor. + template + void add_timer_queue(timer_queue& queue); + + // Remove a timer queue from the reactor. + template + void remove_timer_queue(timer_queue& queue); + + // Schedule a new operation in the given timer queue to expire at the + // specified absolute time. + template + void schedule_timer(timer_queue& queue, + const typename Time_Traits::time_type& time, + typename timer_queue::per_timer_data& timer, wait_op* op); + + // Cancel the timer operations associated with the given token. Returns the + // number of operations that have been posted or dispatched. + template + std::size_t cancel_timer(timer_queue& queue, + typename timer_queue::per_timer_data& timer, + std::size_t max_cancelled = (std::numeric_limits::max)()); + +private: + // Run the select loop in the thread. + BOOST_ASIO_DECL void run_thread(); + + // Entry point for the select loop thread. + BOOST_ASIO_DECL static void call_run_thread(winrt_timer_scheduler* reactor); + + // Helper function to add a new timer queue. + BOOST_ASIO_DECL void do_add_timer_queue(timer_queue_base& queue); + + // Helper function to remove a timer queue. + BOOST_ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue); + + // The io_service implementation used to post completions. + io_service_impl& io_service_; + + // Mutex used to protect internal variables. + boost::asio::detail::mutex mutex_; + + // Event used to wake up background thread. + boost::asio::detail::event event_; + + // The timer queues. + timer_queue_set timer_queues_; + + // The background thread that is waiting for timers to expire. + boost::asio::detail::thread* thread_; + + // Does the background thread need to stop. + bool stop_thread_; + + // Whether the service has been shut down. + bool shutdown_; +}; + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#include +#if defined(BOOST_ASIO_HEADER_ONLY) +# include +#endif // defined(BOOST_ASIO_HEADER_ONLY) + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP diff --git a/3party/boost/boost/asio/detail/winrt_utils.hpp b/3party/boost/boost/asio/detail/winrt_utils.hpp new file mode 100644 index 0000000000..3b10b07bd6 --- /dev/null +++ b/3party/boost/boost/asio/detail/winrt_utils.hpp @@ -0,0 +1,108 @@ +// +// detail/winrt_utils.hpp +// ~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_WINRT_UTILS_HPP +#define BOOST_ASIO_DETAIL_WINRT_UTILS_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { +namespace detail { +namespace winrt_utils { + +inline Platform::String^ string(const char* from) +{ + std::wstring tmp(from, from + std::strlen(from)); + return ref new Platform::String(tmp.c_str()); +} + +inline Platform::String^ string(const std::string& from) +{ + std::wstring tmp(from.begin(), from.end()); + return ref new Platform::String(tmp.c_str()); +} + +inline std::string string(Platform::String^ from) +{ + std::wstring_convert> converter; + return converter.to_bytes(from->Data()); +} + +inline Platform::String^ string(unsigned short from) +{ + return string(std::to_string(from)); +} + +template +inline Platform::String^ string(const T& from) +{ + return string(from.to_string()); +} + +inline int integer(Platform::String^ from) +{ + return _wtoi(from->Data()); +} + +template +inline Windows::Networking::HostName^ host_name(const T& from) +{ + return ref new Windows::Networking::HostName((string)(from)); +} + +template +inline Windows::Storage::Streams::IBuffer^ buffer_dup( + const ConstBufferSequence& buffers) +{ + using Microsoft::WRL::ComPtr; + std::size_t size = boost::asio::buffer_size(buffers); + auto b = ref new Windows::Storage::Streams::Buffer(size); + ComPtr insp = reinterpret_cast(b); + ComPtr bacc; + insp.As(&bacc); + byte* bytes = nullptr; + bacc->Buffer(&bytes); + boost::asio::buffer_copy(boost::asio::buffer(bytes, size), buffers); + b->Length = size; + return b; +} + +} // namespace winrt_utils +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + +#endif // BOOST_ASIO_DETAIL_WINRT_UTILS_HPP diff --git a/3party/boost/boost/asio/detail/winsock_init.hpp b/3party/boost/boost/asio/detail/winsock_init.hpp index 261bd45405..aef74f0b5a 100644 --- a/3party/boost/boost/asio/detail/winsock_init.hpp +++ b/3party/boost/boost/asio/detail/winsock_init.hpp @@ -2,7 +2,7 @@ // detail/winsock_init.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/detail/wrapped_handler.hpp b/3party/boost/boost/asio/detail/wrapped_handler.hpp index b80e11b125..0ff28eddb1 100644 --- a/3party/boost/boost/asio/detail/wrapped_handler.hpp +++ b/3party/boost/boost/asio/detail/wrapped_handler.hpp @@ -2,7 +2,7 @@ // detail/wrapped_handler.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -73,7 +73,7 @@ public: void operator()() { - dispatcher_.dispatch(handler_); + dispatcher_.dispatch(BOOST_ASIO_MOVE_CAST(Handler)(handler_)); } void operator()() const @@ -265,7 +265,7 @@ inline bool asio_handler_is_continuation( rewrapped_handler* this_handler) { return boost_asio_handler_cont_helpers::is_continuation( - this_handler->handler_); + this_handler->context_); } template diff --git a/3party/boost/boost/asio/error.hpp b/3party/boost/boost/asio/error.hpp index a303e57aff..7bcc00f9be 100644 --- a/3party/boost/boost/asio/error.hpp +++ b/3party/boost/boost/asio/error.hpp @@ -2,7 +2,7 @@ // error.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -18,7 +18,10 @@ #include #include #include -#if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) +#include +#if defined(BOOST_ASIO_WINDOWS) \ + || defined(__CYGWIN__) \ + || defined(BOOST_ASIO_WINDOWS_RUNTIME) # include #else # include @@ -36,6 +39,12 @@ # define BOOST_ASIO_GETADDRINFO_ERROR(e) implementation_defined /// INTERNAL ONLY. # define BOOST_ASIO_WIN_OR_POSIX(e_win, e_posix) implementation_defined +#elif defined(BOOST_ASIO_WINDOWS_RUNTIME) +# define BOOST_ASIO_NATIVE_ERROR(e) __HRESULT_FROM_WIN32(e) +# define BOOST_ASIO_SOCKET_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e) +# define BOOST_ASIO_NETDB_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e) +# define BOOST_ASIO_GETADDRINFO_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e) +# define BOOST_ASIO_WIN_OR_POSIX(e_win, e_posix) e_win #elif defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) # define BOOST_ASIO_NATIVE_ERROR(e) e # define BOOST_ASIO_SOCKET_ERROR(e) WSA ## e diff --git a/3party/boost/boost/asio/generic/basic_endpoint.hpp b/3party/boost/boost/asio/generic/basic_endpoint.hpp index 54ce07da22..bb6344d9f3 100644 --- a/3party/boost/boost/asio/generic/basic_endpoint.hpp +++ b/3party/boost/boost/asio/generic/basic_endpoint.hpp @@ -2,7 +2,7 @@ // generic/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/generic/datagram_protocol.hpp b/3party/boost/boost/asio/generic/datagram_protocol.hpp index 01539cb721..48fa36d89c 100644 --- a/3party/boost/boost/asio/generic/datagram_protocol.hpp +++ b/3party/boost/boost/asio/generic/datagram_protocol.hpp @@ -2,7 +2,7 @@ // generic/datagram_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -76,7 +76,7 @@ public: /// Obtain an identifier for the type of the protocol. int type() const { - return SOCK_DGRAM; + return BOOST_ASIO_OS_DEF(SOCK_DGRAM); } /// Obtain an identifier for the protocol. diff --git a/3party/boost/boost/asio/generic/detail/endpoint.hpp b/3party/boost/boost/asio/generic/detail/endpoint.hpp index 644675e68b..3f5437db82 100644 --- a/3party/boost/boost/asio/generic/detail/endpoint.hpp +++ b/3party/boost/boost/asio/generic/detail/endpoint.hpp @@ -2,7 +2,7 @@ // generic/detail/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/generic/detail/impl/endpoint.ipp b/3party/boost/boost/asio/generic/detail/impl/endpoint.ipp index 17460a5969..af049ca793 100644 --- a/3party/boost/boost/asio/generic/detail/impl/endpoint.ipp +++ b/3party/boost/boost/asio/generic/detail/impl/endpoint.ipp @@ -2,7 +2,7 @@ // generic/detail/impl/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/generic/raw_protocol.hpp b/3party/boost/boost/asio/generic/raw_protocol.hpp index 0097e32978..bb1b1a4af6 100644 --- a/3party/boost/boost/asio/generic/raw_protocol.hpp +++ b/3party/boost/boost/asio/generic/raw_protocol.hpp @@ -2,7 +2,7 @@ // generic/raw_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -76,7 +76,7 @@ public: /// Obtain an identifier for the type of the protocol. int type() const { - return SOCK_RAW; + return BOOST_ASIO_OS_DEF(SOCK_RAW); } /// Obtain an identifier for the protocol. diff --git a/3party/boost/boost/asio/generic/seq_packet_protocol.hpp b/3party/boost/boost/asio/generic/seq_packet_protocol.hpp index 935596b91a..2a17b80667 100644 --- a/3party/boost/boost/asio/generic/seq_packet_protocol.hpp +++ b/3party/boost/boost/asio/generic/seq_packet_protocol.hpp @@ -2,7 +2,7 @@ // generic/seq_packet_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -75,7 +75,7 @@ public: /// Obtain an identifier for the type of the protocol. int type() const { - return SOCK_SEQPACKET; + return BOOST_ASIO_OS_DEF(SOCK_SEQPACKET); } /// Obtain an identifier for the protocol. diff --git a/3party/boost/boost/asio/generic/stream_protocol.hpp b/3party/boost/boost/asio/generic/stream_protocol.hpp index c14cb7f6e0..1ec89b9dff 100644 --- a/3party/boost/boost/asio/generic/stream_protocol.hpp +++ b/3party/boost/boost/asio/generic/stream_protocol.hpp @@ -2,7 +2,7 @@ // generic/stream_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -77,7 +77,7 @@ public: /// Obtain an identifier for the type of the protocol. int type() const { - return SOCK_STREAM; + return BOOST_ASIO_OS_DEF(SOCK_STREAM); } /// Obtain an identifier for the protocol. diff --git a/3party/boost/boost/asio/handler_alloc_hook.hpp b/3party/boost/boost/asio/handler_alloc_hook.hpp index 8850d2b3ad..ed8956d1b6 100644 --- a/3party/boost/boost/asio/handler_alloc_hook.hpp +++ b/3party/boost/boost/asio/handler_alloc_hook.hpp @@ -2,7 +2,7 @@ // handler_alloc_hook.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/handler_continuation_hook.hpp b/3party/boost/boost/asio/handler_continuation_hook.hpp index 6b0ab6eb1e..929b855895 100644 --- a/3party/boost/boost/asio/handler_continuation_hook.hpp +++ b/3party/boost/boost/asio/handler_continuation_hook.hpp @@ -2,7 +2,7 @@ // handler_continuation_hook.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/handler_invoke_hook.hpp b/3party/boost/boost/asio/handler_invoke_hook.hpp index 8db36b38a4..e81b51a421 100644 --- a/3party/boost/boost/asio/handler_invoke_hook.hpp +++ b/3party/boost/boost/asio/handler_invoke_hook.hpp @@ -2,7 +2,7 @@ // handler_invoke_hook.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -22,8 +22,10 @@ namespace boost { namespace asio { -/// Default invoke function for handlers. -/** +/** @defgroup asio_handler_invoke boost::asio::asio_handler_invoke + * + * @brief Default invoke function for handlers. + * * Completion handlers for asynchronous operations are invoked by the * io_service associated with the corresponding object (e.g. a socket or * deadline_timer). Certain guarantees are made on when the handler may be @@ -42,10 +44,10 @@ namespace asio { * Implement asio_handler_invoke for your own handlers to specify a custom * invocation strategy. * - * This default implementation is simply: - * @code - * function(); - * @endcode + * This default implementation invokes the function object like so: + * @code function(); @endcode + * If necessary, the default implementation makes a copy of the function object + * so that the non-const operator() can be used. * * @par Example * @code @@ -58,12 +60,25 @@ namespace asio { * } * @endcode */ +/*@{*/ + +/// Default handler invocation hook used for non-const function objects. template -inline void asio_handler_invoke(Function function, ...) +inline void asio_handler_invoke(Function& function, ...) { function(); } +/// Default handler invocation hook used for const function objects. +template +inline void asio_handler_invoke(const Function& function, ...) +{ + Function tmp(function); + tmp(); +} + +/*@}*/ + } // namespace asio } // namespace boost diff --git a/3party/boost/boost/asio/handler_type.hpp b/3party/boost/boost/asio/handler_type.hpp index ba3ed5f6db..a933f6b64c 100644 --- a/3party/boost/boost/asio/handler_type.hpp +++ b/3party/boost/boost/asio/handler_type.hpp @@ -2,7 +2,7 @@ // handler_type.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/high_resolution_timer.hpp b/3party/boost/boost/asio/high_resolution_timer.hpp index 68eb1a6dba..abb589975d 100644 --- a/3party/boost/boost/asio/high_resolution_timer.hpp +++ b/3party/boost/boost/asio/high_resolution_timer.hpp @@ -2,7 +2,7 @@ // high_resolution_timer.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/buffered_read_stream.hpp b/3party/boost/boost/asio/impl/buffered_read_stream.hpp new file mode 100644 index 0000000000..00bc2041dc --- /dev/null +++ b/3party/boost/boost/asio/impl/buffered_read_stream.hpp @@ -0,0 +1,360 @@ +// +// impl/buffered_read_stream.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_IMPL_BUFFERED_READ_STREAM_HPP +#define BOOST_ASIO_IMPL_BUFFERED_READ_STREAM_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { + +template +std::size_t buffered_read_stream::fill() +{ + detail::buffer_resize_guard + resize_guard(storage_); + std::size_t previous_size = storage_.size(); + storage_.resize(storage_.capacity()); + storage_.resize(previous_size + next_layer_.read_some(buffer( + storage_.data() + previous_size, + storage_.size() - previous_size))); + resize_guard.commit(); + return storage_.size() - previous_size; +} + +template +std::size_t buffered_read_stream::fill(boost::system::error_code& ec) +{ + detail::buffer_resize_guard + resize_guard(storage_); + std::size_t previous_size = storage_.size(); + storage_.resize(storage_.capacity()); + storage_.resize(previous_size + next_layer_.read_some(buffer( + storage_.data() + previous_size, + storage_.size() - previous_size), + ec)); + resize_guard.commit(); + return storage_.size() - previous_size; +} + +namespace detail +{ + template + class buffered_fill_handler + { + public: + buffered_fill_handler(detail::buffered_stream_storage& storage, + std::size_t previous_size, ReadHandler& handler) + : storage_(storage), + previous_size_(previous_size), + handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)) + { + } + +#if defined(BOOST_ASIO_HAS_MOVE) + buffered_fill_handler(const buffered_fill_handler& other) + : storage_(other.storage_), + previous_size_(other.previous_size_), + handler_(other.handler_) + { + } + + buffered_fill_handler(buffered_fill_handler&& other) + : storage_(other.storage_), + previous_size_(other.previous_size_), + handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(other.handler_)) + { + } +#endif // defined(BOOST_ASIO_HAS_MOVE) + + void operator()(const boost::system::error_code& ec, + const std::size_t bytes_transferred) + { + storage_.resize(previous_size_ + bytes_transferred); + handler_(ec, bytes_transferred); + } + + //private: + detail::buffered_stream_storage& storage_; + std::size_t previous_size_; + ReadHandler handler_; + }; + + template + inline void* asio_handler_allocate(std::size_t size, + buffered_fill_handler* this_handler) + { + return boost_asio_handler_alloc_helpers::allocate( + size, this_handler->handler_); + } + + template + inline void asio_handler_deallocate(void* pointer, std::size_t size, + buffered_fill_handler* this_handler) + { + boost_asio_handler_alloc_helpers::deallocate( + pointer, size, this_handler->handler_); + } + + template + inline bool asio_handler_is_continuation( + buffered_fill_handler* this_handler) + { + return boost_asio_handler_cont_helpers::is_continuation( + this_handler->handler_); + } + + template + inline void asio_handler_invoke(Function& function, + buffered_fill_handler* this_handler) + { + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); + } + + template + inline void asio_handler_invoke(const Function& function, + buffered_fill_handler* this_handler) + { + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); + } +} // namespace detail + +template +template +BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)) +buffered_read_stream::async_fill( + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) +{ + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + detail::async_result_init< + ReadHandler, void (boost::system::error_code, std::size_t)> init( + BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); + + std::size_t previous_size = storage_.size(); + storage_.resize(storage_.capacity()); + next_layer_.async_read_some( + buffer( + storage_.data() + previous_size, + storage_.size() - previous_size), + detail::buffered_fill_handler( + storage_, previous_size, init.handler)); + + return init.result.get(); +} + +template +template +std::size_t buffered_read_stream::read_some( + const MutableBufferSequence& buffers) +{ + if (boost::asio::buffer_size(buffers) == 0) + return 0; + + if (storage_.empty()) + this->fill(); + + return this->copy(buffers); +} + +template +template +std::size_t buffered_read_stream::read_some( + const MutableBufferSequence& buffers, boost::system::error_code& ec) +{ + ec = boost::system::error_code(); + + if (boost::asio::buffer_size(buffers) == 0) + return 0; + + if (storage_.empty() && !this->fill(ec)) + return 0; + + return this->copy(buffers); +} + +namespace detail +{ + template + class buffered_read_some_handler + { + public: + buffered_read_some_handler(detail::buffered_stream_storage& storage, + const MutableBufferSequence& buffers, ReadHandler& handler) + : storage_(storage), + buffers_(buffers), + handler_(handler) + { + } + +#if defined(BOOST_ASIO_HAS_MOVE) + buffered_read_some_handler(const buffered_read_some_handler& other) + : storage_(other.storage_), + buffers_(other.buffers_), + handler_(other.handler_) + { + } + + buffered_read_some_handler(buffered_read_some_handler&& other) + : storage_(other.storage_), + buffers_(other.buffers_), + handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(other.handler_)) + { + } +#endif // defined(BOOST_ASIO_HAS_MOVE) + + void operator()(const boost::system::error_code& ec, std::size_t) + { + if (ec || storage_.empty()) + { + const std::size_t length = 0; + handler_(ec, length); + } + else + { + const std::size_t bytes_copied = boost::asio::buffer_copy( + buffers_, storage_.data(), storage_.size()); + storage_.consume(bytes_copied); + handler_(ec, bytes_copied); + } + } + + //private: + detail::buffered_stream_storage& storage_; + MutableBufferSequence buffers_; + ReadHandler handler_; + }; + + template + inline void* asio_handler_allocate(std::size_t size, + buffered_read_some_handler< + MutableBufferSequence, ReadHandler>* this_handler) + { + return boost_asio_handler_alloc_helpers::allocate( + size, this_handler->handler_); + } + + template + inline void asio_handler_deallocate(void* pointer, std::size_t size, + buffered_read_some_handler< + MutableBufferSequence, ReadHandler>* this_handler) + { + boost_asio_handler_alloc_helpers::deallocate( + pointer, size, this_handler->handler_); + } + + template + inline bool asio_handler_is_continuation( + buffered_read_some_handler< + MutableBufferSequence, ReadHandler>* this_handler) + { + return boost_asio_handler_cont_helpers::is_continuation( + this_handler->handler_); + } + + template + inline void asio_handler_invoke(Function& function, + buffered_read_some_handler< + MutableBufferSequence, ReadHandler>* this_handler) + { + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); + } + + template + inline void asio_handler_invoke(const Function& function, + buffered_read_some_handler< + MutableBufferSequence, ReadHandler>* this_handler) + { + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); + } +} // namespace detail + +template +template +BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)) +buffered_read_stream::async_read_some( + const MutableBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(ReadHandler) handler) +{ + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a ReadHandler. + BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check; + + detail::async_result_init< + ReadHandler, void (boost::system::error_code, std::size_t)> init( + BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); + + if (boost::asio::buffer_size(buffers) == 0 || !storage_.empty()) + { + next_layer_.async_read_some(boost::asio::mutable_buffers_1(0, 0), + detail::buffered_read_some_handler< + MutableBufferSequence, BOOST_ASIO_HANDLER_TYPE( + ReadHandler, void (boost::system::error_code, std::size_t))>( + storage_, buffers, init.handler)); + } + else + { + this->async_fill(detail::buffered_read_some_handler< + MutableBufferSequence, BOOST_ASIO_HANDLER_TYPE( + ReadHandler, void (boost::system::error_code, std::size_t))>( + storage_, buffers, init.handler)); + } + + return init.result.get(); +} + +template +template +std::size_t buffered_read_stream::peek( + const MutableBufferSequence& buffers) +{ + if (storage_.empty()) + this->fill(); + return this->peek_copy(buffers); +} + +template +template +std::size_t buffered_read_stream::peek( + const MutableBufferSequence& buffers, boost::system::error_code& ec) +{ + ec = boost::system::error_code(); + if (storage_.empty() && !this->fill(ec)) + return 0; + return this->peek_copy(buffers); +} + +} // namespace asio +} // namespace boost + +#include + +#endif // BOOST_ASIO_IMPL_BUFFERED_READ_STREAM_HPP diff --git a/3party/boost/boost/asio/impl/buffered_write_stream.hpp b/3party/boost/boost/asio/impl/buffered_write_stream.hpp new file mode 100644 index 0000000000..65012088e5 --- /dev/null +++ b/3party/boost/boost/asio/impl/buffered_write_stream.hpp @@ -0,0 +1,340 @@ +// +// impl/buffered_write_stream.hpp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_IMPL_BUFFERED_WRITE_STREAM_HPP +#define BOOST_ASIO_IMPL_BUFFERED_WRITE_STREAM_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include +#include +#include +#include + +#include + +namespace boost { +namespace asio { + +template +std::size_t buffered_write_stream::flush() +{ + std::size_t bytes_written = write(next_layer_, + buffer(storage_.data(), storage_.size())); + storage_.consume(bytes_written); + return bytes_written; +} + +template +std::size_t buffered_write_stream::flush(boost::system::error_code& ec) +{ + std::size_t bytes_written = write(next_layer_, + buffer(storage_.data(), storage_.size()), + transfer_all(), ec); + storage_.consume(bytes_written); + return bytes_written; +} + +namespace detail +{ + template + class buffered_flush_handler + { + public: + buffered_flush_handler(detail::buffered_stream_storage& storage, + WriteHandler& handler) + : storage_(storage), + handler_(handler) + { + } + +#if defined(BOOST_ASIO_HAS_MOVE) + buffered_flush_handler(const buffered_flush_handler& other) + : storage_(other.storage_), + handler_(other.handler_) + { + } + + buffered_flush_handler(buffered_flush_handler&& other) + : storage_(other.storage_), + handler_(BOOST_ASIO_MOVE_CAST(WriteHandler)(other.handler_)) + { + } +#endif // defined(BOOST_ASIO_HAS_MOVE) + + void operator()(const boost::system::error_code& ec, + const std::size_t bytes_written) + { + storage_.consume(bytes_written); + handler_(ec, bytes_written); + } + + //private: + detail::buffered_stream_storage& storage_; + WriteHandler handler_; + }; + + template + inline void* asio_handler_allocate(std::size_t size, + buffered_flush_handler* this_handler) + { + return boost_asio_handler_alloc_helpers::allocate( + size, this_handler->handler_); + } + + template + inline void asio_handler_deallocate(void* pointer, std::size_t size, + buffered_flush_handler* this_handler) + { + boost_asio_handler_alloc_helpers::deallocate( + pointer, size, this_handler->handler_); + } + + template + inline bool asio_handler_is_continuation( + buffered_flush_handler* this_handler) + { + return boost_asio_handler_cont_helpers::is_continuation( + this_handler->handler_); + } + + template + inline void asio_handler_invoke(Function& function, + buffered_flush_handler* this_handler) + { + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); + } + + template + inline void asio_handler_invoke(const Function& function, + buffered_flush_handler* this_handler) + { + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); + } +} + +template +template +BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)) +buffered_write_stream::async_flush( + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) +{ + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + detail::async_result_init< + WriteHandler, void (boost::system::error_code, std::size_t)> init( + BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); + + async_write(next_layer_, buffer(storage_.data(), storage_.size()), + detail::buffered_flush_handler( + storage_, init.handler)); + + return init.result.get(); +} + +template +template +std::size_t buffered_write_stream::write_some( + const ConstBufferSequence& buffers) +{ + if (boost::asio::buffer_size(buffers) == 0) + return 0; + + if (storage_.size() == storage_.capacity()) + this->flush(); + + return this->copy(buffers); +} + +template +template +std::size_t buffered_write_stream::write_some( + const ConstBufferSequence& buffers, boost::system::error_code& ec) +{ + ec = boost::system::error_code(); + + if (boost::asio::buffer_size(buffers) == 0) + return 0; + + if (storage_.size() == storage_.capacity() && !flush(ec)) + return 0; + + return this->copy(buffers); +} + +namespace detail +{ + template + class buffered_write_some_handler + { + public: + buffered_write_some_handler(detail::buffered_stream_storage& storage, + const ConstBufferSequence& buffers, WriteHandler& handler) + : storage_(storage), + buffers_(buffers), + handler_(handler) + { + } + +#if defined(BOOST_ASIO_HAS_MOVE) + buffered_write_some_handler(const buffered_write_some_handler& other) + : storage_(other.storage_), + buffers_(other.buffers_), + handler_(other.handler_) + { + } + + buffered_write_some_handler(buffered_write_some_handler&& other) + : storage_(other.storage_), + buffers_(other.buffers_), + handler_(BOOST_ASIO_MOVE_CAST(WriteHandler)(other.handler_)) + { + } +#endif // defined(BOOST_ASIO_HAS_MOVE) + + void operator()(const boost::system::error_code& ec, std::size_t) + { + if (ec) + { + const std::size_t length = 0; + handler_(ec, length); + } + else + { + std::size_t orig_size = storage_.size(); + std::size_t space_avail = storage_.capacity() - orig_size; + std::size_t bytes_avail = boost::asio::buffer_size(buffers_); + std::size_t length = bytes_avail < space_avail + ? bytes_avail : space_avail; + storage_.resize(orig_size + length); + const std::size_t bytes_copied = boost::asio::buffer_copy( + storage_.data() + orig_size, buffers_, length); + handler_(ec, bytes_copied); + } + } + + //private: + detail::buffered_stream_storage& storage_; + ConstBufferSequence buffers_; + WriteHandler handler_; + }; + + template + inline void* asio_handler_allocate(std::size_t size, + buffered_write_some_handler< + ConstBufferSequence, WriteHandler>* this_handler) + { + return boost_asio_handler_alloc_helpers::allocate( + size, this_handler->handler_); + } + + template + inline void asio_handler_deallocate(void* pointer, std::size_t size, + buffered_write_some_handler< + ConstBufferSequence, WriteHandler>* this_handler) + { + boost_asio_handler_alloc_helpers::deallocate( + pointer, size, this_handler->handler_); + } + + template + inline bool asio_handler_is_continuation( + buffered_write_some_handler< + ConstBufferSequence, WriteHandler>* this_handler) + { + return boost_asio_handler_cont_helpers::is_continuation( + this_handler->handler_); + } + + template + inline void asio_handler_invoke(Function& function, + buffered_write_some_handler< + ConstBufferSequence, WriteHandler>* this_handler) + { + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); + } + + template + inline void asio_handler_invoke(const Function& function, + buffered_write_some_handler< + ConstBufferSequence, WriteHandler>* this_handler) + { + boost_asio_handler_invoke_helpers::invoke( + function, this_handler->handler_); + } +} // namespace detail + +template +template +BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)) +buffered_write_stream::async_write_some( + const ConstBufferSequence& buffers, + BOOST_ASIO_MOVE_ARG(WriteHandler) handler) +{ + // If you get an error on the following line it means that your handler does + // not meet the documented type requirements for a WriteHandler. + BOOST_ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check; + + detail::async_result_init< + WriteHandler, void (boost::system::error_code, std::size_t)> init( + BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); + + if (boost::asio::buffer_size(buffers) == 0 + || storage_.size() < storage_.capacity()) + { + next_layer_.async_write_some(boost::asio::const_buffers_1(0, 0), + detail::buffered_write_some_handler< + ConstBufferSequence, BOOST_ASIO_HANDLER_TYPE( + WriteHandler, void (boost::system::error_code, std::size_t))>( + storage_, buffers, init.handler)); + } + else + { + this->async_flush(detail::buffered_write_some_handler< + ConstBufferSequence, BOOST_ASIO_HANDLER_TYPE( + WriteHandler, void (boost::system::error_code, std::size_t))>( + storage_, buffers, init.handler)); + } + + return init.result.get(); +} + +template +template +std::size_t buffered_write_stream::copy( + const ConstBufferSequence& buffers) +{ + std::size_t orig_size = storage_.size(); + std::size_t space_avail = storage_.capacity() - orig_size; + std::size_t bytes_avail = boost::asio::buffer_size(buffers); + std::size_t length = bytes_avail < space_avail ? bytes_avail : space_avail; + storage_.resize(orig_size + length); + return boost::asio::buffer_copy( + storage_.data() + orig_size, buffers, length); +} + +} // namespace asio +} // namespace boost + +#include + +#endif // BOOST_ASIO_IMPL_BUFFERED_WRITE_STREAM_HPP diff --git a/3party/boost/boost/asio/impl/connect.hpp b/3party/boost/boost/asio/impl/connect.hpp index 07050516bb..68a903eed8 100644 --- a/3party/boost/boost/asio/impl/connect.hpp +++ b/3party/boost/boost/asio/impl/connect.hpp @@ -2,7 +2,7 @@ // impl/connect.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/error.ipp b/3party/boost/boost/asio/impl/error.ipp index 21ca931d22..ae43418988 100644 --- a/3party/boost/boost/asio/impl/error.ipp +++ b/3party/boost/boost/asio/impl/error.ipp @@ -2,7 +2,7 @@ // impl/error.ipp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,6 +16,7 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include +#include #include #include diff --git a/3party/boost/boost/asio/impl/handler_alloc_hook.ipp b/3party/boost/boost/asio/impl/handler_alloc_hook.ipp index b781c1c59b..2561f3b066 100644 --- a/3party/boost/boost/asio/impl/handler_alloc_hook.ipp +++ b/3party/boost/boost/asio/impl/handler_alloc_hook.ipp @@ -2,7 +2,7 @@ // impl/handler_alloc_hook.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -21,7 +21,6 @@ #if !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) # if defined(BOOST_ASIO_HAS_IOCP) -# include # include # else // defined(BOOST_ASIO_HAS_IOCP) # include @@ -33,6 +32,10 @@ namespace boost { namespace asio { +#if defined(BOOST_ASIO_HAS_IOCP) +namespace detail { class win_iocp_io_service; } +#endif // defined(BOOST_ASIO_HAS_IOCP) + void* asio_handler_allocate(std::size_t size, ...) { #if !defined(BOOST_ASIO_DISABLE_SMALL_BLOCK_RECYCLING) diff --git a/3party/boost/boost/asio/impl/io_service.hpp b/3party/boost/boost/asio/impl/io_service.hpp index 0aa5c61595..4c6f2e1396 100644 --- a/3party/boost/boost/asio/impl/io_service.hpp +++ b/3party/boost/boost/asio/impl/io_service.hpp @@ -2,7 +2,7 @@ // impl/io_service.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/io_service.ipp b/3party/boost/boost/asio/impl/io_service.ipp index 4f3f680c60..0bb5bbf8d4 100644 --- a/3party/boost/boost/asio/impl/io_service.ipp +++ b/3party/boost/boost/asio/impl/io_service.ipp @@ -2,7 +2,7 @@ // impl/io_service.ipp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/read.hpp b/3party/boost/boost/asio/impl/read.hpp index bb35f80263..86f8776292 100644 --- a/3party/boost/boost/asio/impl/read.hpp +++ b/3party/boost/boost/asio/impl/read.hpp @@ -2,7 +2,7 @@ // impl/read.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/read_at.hpp b/3party/boost/boost/asio/impl/read_at.hpp index 6fa116c93e..877a7c7bb7 100644 --- a/3party/boost/boost/asio/impl/read_at.hpp +++ b/3party/boost/boost/asio/impl/read_at.hpp @@ -2,7 +2,7 @@ // impl/read_at.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/read_until.hpp b/3party/boost/boost/asio/impl/read_until.hpp index 93f46ea598..349c447c70 100644 --- a/3party/boost/boost/asio/impl/read_until.hpp +++ b/3party/boost/boost/asio/impl/read_until.hpp @@ -2,7 +2,7 @@ // impl/read_until.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/serial_port_base.hpp b/3party/boost/boost/asio/impl/serial_port_base.hpp index 032325cafe..92be00d3a3 100644 --- a/3party/boost/boost/asio/impl/serial_port_base.hpp +++ b/3party/boost/boost/asio/impl/serial_port_base.hpp @@ -2,7 +2,7 @@ // impl/serial_port_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/impl/serial_port_base.ipp b/3party/boost/boost/asio/impl/serial_port_base.ipp index 8569ef0c04..51f66c161a 100644 --- a/3party/boost/boost/asio/impl/serial_port_base.ipp +++ b/3party/boost/boost/asio/impl/serial_port_base.ipp @@ -2,7 +2,7 @@ // impl/serial_port_base.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -111,7 +111,6 @@ boost::system::error_code serial_port_base::baud_rate::store( case 4000000: baud = B4000000; break; # endif default: - baud = B0; ec = boost::asio::error::invalid_argument; return ec; } diff --git a/3party/boost/boost/asio/impl/spawn.hpp b/3party/boost/boost/asio/impl/spawn.hpp index 1e25e6b60e..9f2f480f7d 100644 --- a/3party/boost/boost/asio/impl/spawn.hpp +++ b/3party/boost/boost/asio/impl/spawn.hpp @@ -2,7 +2,7 @@ // impl/spawn.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -171,7 +171,8 @@ public: typedef T type; explicit async_result(detail::coro_handler& h) - : ca_(h.ca_) + : handler_(h), + ca_(h.ca_) { out_ec_ = h.ec_; if (!out_ec_) h.ec_ = &ec_; @@ -180,12 +181,14 @@ public: type get() { + handler_.coro_.reset(); // Must not hold shared_ptr to coro while suspended. ca_(); if (!out_ec_ && ec_) throw boost::system::system_error(ec_); return value_; } private: + detail::coro_handler& handler_; typename basic_yield_context::caller_type& ca_; boost::system::error_code* out_ec_; boost::system::error_code ec_; @@ -199,7 +202,8 @@ public: typedef void type; explicit async_result(detail::coro_handler& h) - : ca_(h.ca_) + : handler_(h), + ca_(h.ca_) { out_ec_ = h.ec_; if (!out_ec_) h.ec_ = &ec_; @@ -207,11 +211,13 @@ public: void get() { + handler_.coro_.reset(); // Must not hold shared_ptr to coro while suspended. ca_(); if (!out_ec_ && ec_) throw boost::system::system_error(ec_); } private: + detail::coro_handler& handler_; typename basic_yield_context::caller_type& ca_; boost::system::error_code* out_ec_; boost::system::error_code ec_; @@ -242,7 +248,9 @@ namespace detail { void operator()(typename basic_yield_context::caller_type& ca) { shared_ptr > data(data_); +#if !defined(BOOST_COROUTINES_UNIDIRECT) && !defined(BOOST_COROUTINES_V2) ca(); // Yield until coroutine pointer has been initialised. +#endif // !defined(BOOST_COROUTINES_UNIDIRECT) && !defined(BOOST_COROUTINES_V2) const basic_yield_context yield( data->coro_, ca, data->handler_); (data->function_)(yield); diff --git a/3party/boost/boost/asio/impl/src.cpp b/3party/boost/boost/asio/impl/src.cpp index 553120e658..e8d239472c 100644 --- a/3party/boost/boost/asio/impl/src.cpp +++ b/3party/boost/boost/asio/impl/src.cpp @@ -2,7 +2,7 @@ // impl/src.cpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/src.hpp b/3party/boost/boost/asio/impl/src.hpp index bf6a6b57f2..03536b9ac2 100644 --- a/3party/boost/boost/asio/impl/src.hpp +++ b/3party/boost/boost/asio/impl/src.hpp @@ -2,7 +2,7 @@ // impl/src.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +59,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/3party/boost/boost/asio/impl/use_future.hpp b/3party/boost/boost/asio/impl/use_future.hpp index 4952d3d411..11194bd5db 100644 --- a/3party/boost/boost/asio/impl/use_future.hpp +++ b/3party/boost/boost/asio/impl/use_future.hpp @@ -2,7 +2,7 @@ // impl/use_future.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/write.hpp b/3party/boost/boost/asio/impl/write.hpp index 8abb62022f..ef0c092024 100644 --- a/3party/boost/boost/asio/impl/write.hpp +++ b/3party/boost/boost/asio/impl/write.hpp @@ -2,7 +2,7 @@ // impl/write.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/impl/write_at.hpp b/3party/boost/boost/asio/impl/write_at.hpp index 8ff083e55a..0d0dc4bd47 100644 --- a/3party/boost/boost/asio/impl/write_at.hpp +++ b/3party/boost/boost/asio/impl/write_at.hpp @@ -2,7 +2,7 @@ // impl/write_at.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/io_service.hpp b/3party/boost/boost/asio/io_service.hpp index 7148a89803..16b0bbf206 100644 --- a/3party/boost/boost/asio/io_service.hpp +++ b/3party/boost/boost/asio/io_service.hpp @@ -2,7 +2,7 @@ // io_service.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -21,16 +21,9 @@ #include #include #include -#include #include #include -#if defined(BOOST_ASIO_HAS_IOCP) -# include -#else -# include -#endif - #if defined(BOOST_ASIO_WINDOWS) || defined(__CYGWIN__) # include #elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \ @@ -48,11 +41,15 @@ template Service& use_service(io_service& ios); template void add_service(io_service& ios, Service* svc); template bool has_service(io_service& ios); +namespace detail { #if defined(BOOST_ASIO_HAS_IOCP) -namespace detail { typedef win_iocp_io_service io_service_impl; } + typedef class win_iocp_io_service io_service_impl; + class win_iocp_overlapped_ptr; #else -namespace detail { typedef task_io_service io_service_impl; } + typedef class task_io_service io_service_impl; #endif + class service_registry; +} // namespace detail /// Provides core I/O functionality. /** diff --git a/3party/boost/boost/asio/ip/address.hpp b/3party/boost/boost/asio/ip/address.hpp index abb079e889..e412313fa9 100644 --- a/3party/boost/boost/asio/ip/address.hpp +++ b/3party/boost/boost/asio/ip/address.hpp @@ -2,7 +2,7 @@ // ip/address.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/address_v4.hpp b/3party/boost/boost/asio/ip/address_v4.hpp index 4f9a2d1e5c..3b2fe0f43b 100644 --- a/3party/boost/boost/asio/ip/address_v4.hpp +++ b/3party/boost/boost/asio/ip/address_v4.hpp @@ -2,7 +2,7 @@ // ip/address_v4.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/address_v6.hpp b/3party/boost/boost/asio/ip/address_v6.hpp index 179fc1a2ba..0ec28185a9 100644 --- a/3party/boost/boost/asio/ip/address_v6.hpp +++ b/3party/boost/boost/asio/ip/address_v6.hpp @@ -2,7 +2,7 @@ // ip/address_v6.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/basic_endpoint.hpp b/3party/boost/boost/asio/ip/basic_endpoint.hpp index 4cc68ab4aa..d4a80f3a32 100644 --- a/3party/boost/boost/asio/ip/basic_endpoint.hpp +++ b/3party/boost/boost/asio/ip/basic_endpoint.hpp @@ -2,7 +2,7 @@ // ip/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/basic_resolver.hpp b/3party/boost/boost/asio/ip/basic_resolver.hpp index c28e642f9c..a4593af164 100644 --- a/3party/boost/boost/asio/ip/basic_resolver.hpp +++ b/3party/boost/boost/asio/ip/basic_resolver.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/basic_resolver_entry.hpp b/3party/boost/boost/asio/ip/basic_resolver_entry.hpp index abadfe475a..6fef220ef7 100644 --- a/3party/boost/boost/asio/ip/basic_resolver_entry.hpp +++ b/3party/boost/boost/asio/ip/basic_resolver_entry.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_entry.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/basic_resolver_iterator.hpp b/3party/boost/boost/asio/ip/basic_resolver_iterator.hpp index 2046439af8..c32d7023a6 100644 --- a/3party/boost/boost/asio/ip/basic_resolver_iterator.hpp +++ b/3party/boost/boost/asio/ip/basic_resolver_iterator.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_iterator.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -26,6 +26,10 @@ #include #include +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + #include namespace boost { @@ -86,8 +90,8 @@ public: while (address_info) { - if (address_info->ai_family == PF_INET - || address_info->ai_family == PF_INET6) + if (address_info->ai_family == BOOST_ASIO_OS_DEF(AF_INET) + || address_info->ai_family == BOOST_ASIO_OS_DEF(AF_INET6)) { using namespace std; // For memcpy. typename InternetProtocol::endpoint endpoint; @@ -117,6 +121,67 @@ public: return iter; } + /// Create an iterator from a sequence of endpoints, host and service name. + template + static basic_resolver_iterator create( + EndpointIterator begin, EndpointIterator end, + const std::string& host_name, const std::string& service_name) + { + basic_resolver_iterator iter; + if (begin != end) + { + iter.values_.reset(new values_type); + for (EndpointIterator ep_iter = begin; ep_iter != end; ++ep_iter) + { + iter.values_->push_back( + basic_resolver_entry( + *ep_iter, host_name, service_name)); + } + } + return iter; + } + +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + /// Create an iterator from a Windows Runtime list of EndpointPair objects. + static basic_resolver_iterator create( + Windows::Foundation::Collections::IVectorView< + Windows::Networking::EndpointPair^>^ endpoints, + const boost::asio::detail::addrinfo_type& hints, + const std::string& host_name, const std::string& service_name) + { + basic_resolver_iterator iter; + if (endpoints->Size) + { + iter.values_.reset(new values_type); + for (unsigned int i = 0; i < endpoints->Size; ++i) + { + auto pair = endpoints->GetAt(i); + + if (hints.ai_family == BOOST_ASIO_OS_DEF(AF_INET) + && pair->RemoteHostName->Type + != Windows::Networking::HostNameType::Ipv4) + continue; + + if (hints.ai_family == BOOST_ASIO_OS_DEF(AF_INET6) + && pair->RemoteHostName->Type + != Windows::Networking::HostNameType::Ipv6) + continue; + + iter.values_->push_back( + basic_resolver_entry( + typename InternetProtocol::endpoint( + ip::address::from_string( + boost::asio::detail::winrt_utils::string( + pair->RemoteHostName->CanonicalName)), + boost::asio::detail::winrt_utils::integer( + pair->RemoteServiceName)), + host_name, service_name)); + } + } + return iter; + } +#endif // defined(BOOST_ASIO_WINDOWS_RUNTIME) + /// Dereference an iterator. const basic_resolver_entry& operator*() const { diff --git a/3party/boost/boost/asio/ip/basic_resolver_query.hpp b/3party/boost/boost/asio/ip/basic_resolver_query.hpp index ec21e0f5a2..f8dcd2fe6e 100644 --- a/3party/boost/boost/asio/ip/basic_resolver_query.hpp +++ b/3party/boost/boost/asio/ip/basic_resolver_query.hpp @@ -2,7 +2,7 @@ // ip/basic_resolver_query.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -153,7 +153,7 @@ public: { typename InternetProtocol::endpoint endpoint; hints_.ai_flags = static_cast(resolve_flags); - hints_.ai_family = PF_UNSPEC; + hints_.ai_family = BOOST_ASIO_OS_DEF(AF_UNSPEC); hints_.ai_socktype = endpoint.protocol().type(); hints_.ai_protocol = endpoint.protocol().protocol(); hints_.ai_addrlen = 0; diff --git a/3party/boost/boost/asio/ip/detail/endpoint.hpp b/3party/boost/boost/asio/ip/detail/endpoint.hpp index e6d6013689..f171d58f9b 100644 --- a/3party/boost/boost/asio/ip/detail/endpoint.hpp +++ b/3party/boost/boost/asio/ip/detail/endpoint.hpp @@ -2,7 +2,7 @@ // ip/detail/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -109,7 +109,7 @@ public: // Determine whether the endpoint is IPv4. bool is_v4() const { - return data_.base.sa_family == AF_INET; + return data_.base.sa_family == BOOST_ASIO_OS_DEF(AF_INET); } #if !defined(BOOST_ASIO_NO_IOSTREAM) diff --git a/3party/boost/boost/asio/ip/detail/impl/endpoint.ipp b/3party/boost/boost/asio/ip/detail/impl/endpoint.ipp index 6be3d23787..4ad504612b 100644 --- a/3party/boost/boost/asio/ip/detail/impl/endpoint.ipp +++ b/3party/boost/boost/asio/ip/detail/impl/endpoint.ipp @@ -2,7 +2,7 @@ // ip/detail/impl/endpoint.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -35,25 +35,25 @@ namespace detail { endpoint::endpoint() : data_() { - data_.v4.sin_family = AF_INET; + data_.v4.sin_family = BOOST_ASIO_OS_DEF(AF_INET); data_.v4.sin_port = 0; - data_.v4.sin_addr.s_addr = INADDR_ANY; + data_.v4.sin_addr.s_addr = BOOST_ASIO_OS_DEF(INADDR_ANY); } endpoint::endpoint(int family, unsigned short port_num) : data_() { using namespace std; // For memcpy. - if (family == PF_INET) + if (family == BOOST_ASIO_OS_DEF(AF_INET)) { - data_.v4.sin_family = AF_INET; + data_.v4.sin_family = BOOST_ASIO_OS_DEF(AF_INET); data_.v4.sin_port = boost::asio::detail::socket_ops::host_to_network_short(port_num); - data_.v4.sin_addr.s_addr = INADDR_ANY; + data_.v4.sin_addr.s_addr = BOOST_ASIO_OS_DEF(INADDR_ANY); } else { - data_.v6.sin6_family = AF_INET6; + data_.v6.sin6_family = BOOST_ASIO_OS_DEF(AF_INET6); data_.v6.sin6_port = boost::asio::detail::socket_ops::host_to_network_short(port_num); data_.v6.sin6_flowinfo = 0; @@ -76,7 +76,7 @@ endpoint::endpoint(const boost::asio::ip::address& addr, using namespace std; // For memcpy. if (addr.is_v4()) { - data_.v4.sin_family = AF_INET; + data_.v4.sin_family = BOOST_ASIO_OS_DEF(AF_INET); data_.v4.sin_port = boost::asio::detail::socket_ops::host_to_network_short(port_num); data_.v4.sin_addr.s_addr = @@ -86,7 +86,7 @@ endpoint::endpoint(const boost::asio::ip::address& addr, } else { - data_.v6.sin6_family = AF_INET6; + data_.v6.sin6_family = BOOST_ASIO_OS_DEF(AF_INET6); data_.v6.sin6_port = boost::asio::detail::socket_ops::host_to_network_short(port_num); data_.v6.sin6_flowinfo = 0; diff --git a/3party/boost/boost/asio/ip/detail/socket_option.hpp b/3party/boost/boost/asio/ip/detail/socket_option.hpp index cd643c544a..3b053f18e3 100644 --- a/3party/boost/boost/asio/ip/detail/socket_option.hpp +++ b/3party/boost/boost/asio/ip/detail/socket_option.hpp @@ -2,7 +2,7 @@ // detail/socket_option.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -402,7 +402,7 @@ public: boost::asio::ip::address_v6 ipv6_address = multicast_address.to_v6(); boost::asio::ip::address_v6::bytes_type bytes = ipv6_address.to_bytes(); memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.data(), 16); - ipv6_value_.ipv6mr_interface = 0; + ipv6_value_.ipv6mr_interface = ipv6_address.scope_id(); } else { @@ -440,7 +440,10 @@ public: boost::asio::ip::address_v6::bytes_type bytes = multicast_address.to_bytes(); memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.data(), 16); - ipv6_value_.ipv6mr_interface = network_interface; + if (network_interface) + ipv6_value_.ipv6mr_interface = network_interface; + else + ipv6_value_.ipv6mr_interface = multicast_address.scope_id(); } // Get the level of the socket option. diff --git a/3party/boost/boost/asio/ip/host_name.hpp b/3party/boost/boost/asio/ip/host_name.hpp index d9046e9e99..f38c1eb5e4 100644 --- a/3party/boost/boost/asio/ip/host_name.hpp +++ b/3party/boost/boost/asio/ip/host_name.hpp @@ -2,7 +2,7 @@ // ip/host_name.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/icmp.hpp b/3party/boost/boost/asio/ip/icmp.hpp index fa2ff33e2a..9849c88e86 100644 --- a/3party/boost/boost/asio/ip/icmp.hpp +++ b/3party/boost/boost/asio/ip/icmp.hpp @@ -2,7 +2,7 @@ // ip/icmp.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -49,19 +49,21 @@ public: /// Construct to represent the IPv4 ICMP protocol. static icmp v4() { - return icmp(IPPROTO_ICMP, PF_INET); + return icmp(BOOST_ASIO_OS_DEF(IPPROTO_ICMP), + BOOST_ASIO_OS_DEF(AF_INET)); } /// Construct to represent the IPv6 ICMP protocol. static icmp v6() { - return icmp(IPPROTO_ICMPV6, PF_INET6); + return icmp(BOOST_ASIO_OS_DEF(IPPROTO_ICMPV6), + BOOST_ASIO_OS_DEF(AF_INET6)); } /// Obtain an identifier for the type of the protocol. int type() const { - return SOCK_RAW; + return BOOST_ASIO_OS_DEF(SOCK_RAW); } /// Obtain an identifier for the protocol. diff --git a/3party/boost/boost/asio/ip/impl/address.hpp b/3party/boost/boost/asio/ip/impl/address.hpp index 0f865e8e38..247e7d71cd 100644 --- a/3party/boost/boost/asio/ip/impl/address.hpp +++ b/3party/boost/boost/asio/ip/impl/address.hpp @@ -2,7 +2,7 @@ // ip/impl/address.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/impl/address.ipp b/3party/boost/boost/asio/ip/impl/address.ipp index b238aa06ab..de57587591 100644 --- a/3party/boost/boost/asio/ip/impl/address.ipp +++ b/3party/boost/boost/asio/ip/impl/address.ipp @@ -2,7 +2,7 @@ // ip/impl/address.ipp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/impl/address_v4.hpp b/3party/boost/boost/asio/ip/impl/address_v4.hpp index a27265c4e6..857b546e5a 100644 --- a/3party/boost/boost/asio/ip/impl/address_v4.hpp +++ b/3party/boost/boost/asio/ip/impl/address_v4.hpp @@ -2,7 +2,7 @@ // ip/impl/address_v4.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/impl/address_v4.ipp b/3party/boost/boost/asio/ip/impl/address_v4.ipp index 5e56fdce84..a2029016b3 100644 --- a/3party/boost/boost/asio/ip/impl/address_v4.ipp +++ b/3party/boost/boost/asio/ip/impl/address_v4.ipp @@ -2,7 +2,7 @@ // ip/impl/address_v4.ipp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -88,7 +88,8 @@ std::string address_v4::to_string(boost::system::error_code& ec) const { char addr_str[boost::asio::detail::max_addr_v4_str_len]; const char* addr = - boost::asio::detail::socket_ops::inet_ntop(AF_INET, &addr_, addr_str, + boost::asio::detail::socket_ops::inet_ntop( + BOOST_ASIO_OS_DEF(AF_INET), &addr_, addr_str, boost::asio::detail::max_addr_v4_str_len, 0, ec); if (addr == 0) return std::string(); @@ -108,7 +109,7 @@ address_v4 address_v4::from_string( { address_v4 tmp; if (boost::asio::detail::socket_ops::inet_pton( - AF_INET, str, &tmp.addr_, 0, ec) <= 0) + BOOST_ASIO_OS_DEF(AF_INET), str, &tmp.addr_, 0, ec) <= 0) return address_v4(); return tmp; } diff --git a/3party/boost/boost/asio/ip/impl/address_v6.hpp b/3party/boost/boost/asio/ip/impl/address_v6.hpp index 6d012398b5..758d6466f9 100644 --- a/3party/boost/boost/asio/ip/impl/address_v6.hpp +++ b/3party/boost/boost/asio/ip/impl/address_v6.hpp @@ -2,7 +2,7 @@ // ip/impl/address_v6.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/impl/address_v6.ipp b/3party/boost/boost/asio/ip/impl/address_v6.ipp index e489e0c8f4..33db76b70d 100644 --- a/3party/boost/boost/asio/ip/impl/address_v6.ipp +++ b/3party/boost/boost/asio/ip/impl/address_v6.ipp @@ -2,7 +2,7 @@ // ip/impl/address_v6.ipp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -110,7 +110,8 @@ std::string address_v6::to_string(boost::system::error_code& ec) const { char addr_str[boost::asio::detail::max_addr_v6_str_len]; const char* addr = - boost::asio::detail::socket_ops::inet_ntop(AF_INET6, &addr_, addr_str, + boost::asio::detail::socket_ops::inet_ntop( + BOOST_ASIO_OS_DEF(AF_INET6), &addr_, addr_str, boost::asio::detail::max_addr_v6_str_len, scope_id_, ec); if (addr == 0) return std::string(); @@ -130,7 +131,7 @@ address_v6 address_v6::from_string( { address_v6 tmp; if (boost::asio::detail::socket_ops::inet_pton( - AF_INET6, str, &tmp.addr_, &tmp.scope_id_, ec) <= 0) + BOOST_ASIO_OS_DEF(AF_INET6), str, &tmp.addr_, &tmp.scope_id_, ec) <= 0) return address_v6(); return tmp; } diff --git a/3party/boost/boost/asio/ip/impl/basic_endpoint.hpp b/3party/boost/boost/asio/ip/impl/basic_endpoint.hpp index c1459a9fab..ec9b1fa04d 100644 --- a/3party/boost/boost/asio/ip/impl/basic_endpoint.hpp +++ b/3party/boost/boost/asio/ip/impl/basic_endpoint.hpp @@ -2,7 +2,7 @@ // ip/impl/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/impl/host_name.ipp b/3party/boost/boost/asio/ip/impl/host_name.ipp index f8a1bc1b90..092124269c 100644 --- a/3party/boost/boost/asio/ip/impl/host_name.ipp +++ b/3party/boost/boost/asio/ip/impl/host_name.ipp @@ -2,7 +2,7 @@ // ip/impl/host_name.ipp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ip/multicast.hpp b/3party/boost/boost/asio/ip/multicast.hpp index 6b687ac53a..c162aa0cd2 100644 --- a/3party/boost/boost/asio/ip/multicast.hpp +++ b/3party/boost/boost/asio/ip/multicast.hpp @@ -2,7 +2,7 @@ // ip/multicast.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -48,7 +48,10 @@ namespace multicast { typedef implementation_defined join_group; #else typedef boost::asio::ip::detail::socket_option::multicast_request< - IPPROTO_IP, IP_ADD_MEMBERSHIP, IPPROTO_IPV6, IPV6_JOIN_GROUP> join_group; + BOOST_ASIO_OS_DEF(IPPROTO_IP), + BOOST_ASIO_OS_DEF(IP_ADD_MEMBERSHIP), + BOOST_ASIO_OS_DEF(IPPROTO_IPV6), + BOOST_ASIO_OS_DEF(IPV6_JOIN_GROUP)> join_group; #endif /// Socket option to leave a multicast group on a specified interface. @@ -73,7 +76,10 @@ typedef boost::asio::ip::detail::socket_option::multicast_request< typedef implementation_defined leave_group; #else typedef boost::asio::ip::detail::socket_option::multicast_request< - IPPROTO_IP, IP_DROP_MEMBERSHIP, IPPROTO_IPV6, IPV6_LEAVE_GROUP> leave_group; + BOOST_ASIO_OS_DEF(IPPROTO_IP), + BOOST_ASIO_OS_DEF(IP_DROP_MEMBERSHIP), + BOOST_ASIO_OS_DEF(IPPROTO_IPV6), + BOOST_ASIO_OS_DEF(IPV6_LEAVE_GROUP)> leave_group; #endif /// Socket option for local interface to use for outgoing multicast packets. @@ -98,8 +104,10 @@ typedef boost::asio::ip::detail::socket_option::multicast_request< typedef implementation_defined outbound_interface; #else typedef boost::asio::ip::detail::socket_option::network_interface< - IPPROTO_IP, IP_MULTICAST_IF, IPPROTO_IPV6, IPV6_MULTICAST_IF> - outbound_interface; + BOOST_ASIO_OS_DEF(IPPROTO_IP), + BOOST_ASIO_OS_DEF(IP_MULTICAST_IF), + BOOST_ASIO_OS_DEF(IPPROTO_IPV6), + BOOST_ASIO_OS_DEF(IPV6_MULTICAST_IF)> outbound_interface; #endif /// Socket option for time-to-live associated with outgoing multicast packets. @@ -132,7 +140,10 @@ typedef boost::asio::ip::detail::socket_option::network_interface< typedef implementation_defined hops; #else typedef boost::asio::ip::detail::socket_option::multicast_hops< - IPPROTO_IP, IP_MULTICAST_TTL, IPPROTO_IPV6, IPV6_MULTICAST_HOPS> hops; + BOOST_ASIO_OS_DEF(IPPROTO_IP), + BOOST_ASIO_OS_DEF(IP_MULTICAST_TTL), + BOOST_ASIO_OS_DEF(IPPROTO_IPV6), + BOOST_ASIO_OS_DEF(IPV6_MULTICAST_HOPS)> hops; #endif /// Socket option determining whether outgoing multicast packets will be @@ -166,8 +177,10 @@ typedef boost::asio::ip::detail::socket_option::multicast_hops< typedef implementation_defined enable_loopback; #else typedef boost::asio::ip::detail::socket_option::multicast_enable_loopback< - IPPROTO_IP, IP_MULTICAST_LOOP, IPPROTO_IPV6, IPV6_MULTICAST_LOOP> - enable_loopback; + BOOST_ASIO_OS_DEF(IPPROTO_IP), + BOOST_ASIO_OS_DEF(IP_MULTICAST_LOOP), + BOOST_ASIO_OS_DEF(IPPROTO_IPV6), + BOOST_ASIO_OS_DEF(IPV6_MULTICAST_LOOP)> enable_loopback; #endif } // namespace multicast diff --git a/3party/boost/boost/asio/ip/resolver_query_base.hpp b/3party/boost/boost/asio/ip/resolver_query_base.hpp index d61253ada3..d53cd5bb05 100644 --- a/3party/boost/boost/asio/ip/resolver_query_base.hpp +++ b/3party/boost/boost/asio/ip/resolver_query_base.hpp @@ -2,7 +2,7 @@ // ip/resolver_query_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -63,31 +63,13 @@ public: #else enum flags { - canonical_name = AI_CANONNAME, - passive = AI_PASSIVE, - numeric_host = AI_NUMERICHOST, -# if defined(AI_NUMERICSERV) - numeric_service = AI_NUMERICSERV, -# else - numeric_service = 0, -# endif - // Note: QNX Neutrino 6.3 defines AI_V4MAPPED, AI_ALL and AI_ADDRCONFIG but - // does not implement them. Therefore they are specifically excluded here. -# if defined(AI_V4MAPPED) && !defined(__QNXNTO__) - v4_mapped = AI_V4MAPPED, -# else - v4_mapped = 0, -# endif -# if defined(AI_ALL) && !defined(__QNXNTO__) - all_matching = AI_ALL, -# else - all_matching = 0, -# endif -# if defined(AI_ADDRCONFIG) && !defined(__QNXNTO__) - address_configured = AI_ADDRCONFIG -# else - address_configured = 0 -# endif + canonical_name = BOOST_ASIO_OS_DEF(AI_CANONNAME), + passive = BOOST_ASIO_OS_DEF(AI_PASSIVE), + numeric_host = BOOST_ASIO_OS_DEF(AI_NUMERICHOST), + numeric_service = BOOST_ASIO_OS_DEF(AI_NUMERICSERV), + v4_mapped = BOOST_ASIO_OS_DEF(AI_V4MAPPED), + all_matching = BOOST_ASIO_OS_DEF(AI_ALL), + address_configured = BOOST_ASIO_OS_DEF(AI_ADDRCONFIG) }; // Implement bitmask operations as shown in C++ Std [lib.bitmask.types]. @@ -112,7 +94,7 @@ public: friend flags operator~(flags x) { - return static_cast(static_cast(~x)); + return static_cast(~static_cast(x)); } friend flags& operator&=(flags& x, flags y) diff --git a/3party/boost/boost/asio/ip/resolver_service.hpp b/3party/boost/boost/asio/ip/resolver_service.hpp index b5e889b7ae..ec12007511 100644 --- a/3party/boost/boost/asio/ip/resolver_service.hpp +++ b/3party/boost/boost/asio/ip/resolver_service.hpp @@ -2,7 +2,7 @@ // ip/resolver_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -18,11 +18,16 @@ #include #include #include -#include #include #include #include +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +#else +# include +#endif + #include namespace boost { @@ -59,8 +64,13 @@ public: private: // The type of the platform-specific implementation. +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + typedef boost::asio::detail::winrt_resolver_service + service_impl_type; +#else typedef boost::asio::detail::resolver_service service_impl_type; +#endif public: /// The type of a resolver implementation. diff --git a/3party/boost/boost/asio/ip/tcp.hpp b/3party/boost/boost/asio/ip/tcp.hpp index 74ce406fb0..efa5bf698c 100644 --- a/3party/boost/boost/asio/ip/tcp.hpp +++ b/3party/boost/boost/asio/ip/tcp.hpp @@ -2,7 +2,7 @@ // ip/tcp.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -52,25 +52,25 @@ public: /// Construct to represent the IPv4 TCP protocol. static tcp v4() { - return tcp(PF_INET); + return tcp(BOOST_ASIO_OS_DEF(AF_INET)); } /// Construct to represent the IPv6 TCP protocol. static tcp v6() { - return tcp(PF_INET6); + return tcp(BOOST_ASIO_OS_DEF(AF_INET6)); } /// Obtain an identifier for the type of the protocol. int type() const { - return SOCK_STREAM; + return BOOST_ASIO_OS_DEF(SOCK_STREAM); } /// Obtain an identifier for the protocol. int protocol() const { - return IPPROTO_TCP; + return BOOST_ASIO_OS_DEF(IPPROTO_TCP); } /// Obtain an identifier for the protocol family. @@ -123,7 +123,7 @@ public: typedef implementation_defined no_delay; #else typedef boost::asio::detail::socket_option::boolean< - IPPROTO_TCP, TCP_NODELAY> no_delay; + BOOST_ASIO_OS_DEF(IPPROTO_TCP), BOOST_ASIO_OS_DEF(TCP_NODELAY)> no_delay; #endif /// Compare two protocols for equality. diff --git a/3party/boost/boost/asio/ip/udp.hpp b/3party/boost/boost/asio/ip/udp.hpp index 2836b3c6c1..9eef4354c5 100644 --- a/3party/boost/boost/asio/ip/udp.hpp +++ b/3party/boost/boost/asio/ip/udp.hpp @@ -2,7 +2,7 @@ // ip/udp.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -49,25 +49,25 @@ public: /// Construct to represent the IPv4 UDP protocol. static udp v4() { - return udp(PF_INET); + return udp(BOOST_ASIO_OS_DEF(AF_INET)); } /// Construct to represent the IPv6 UDP protocol. static udp v6() { - return udp(PF_INET6); + return udp(BOOST_ASIO_OS_DEF(AF_INET6)); } /// Obtain an identifier for the type of the protocol. int type() const { - return SOCK_DGRAM; + return BOOST_ASIO_OS_DEF(SOCK_DGRAM); } /// Obtain an identifier for the protocol. int protocol() const { - return IPPROTO_UDP; + return BOOST_ASIO_OS_DEF(IPPROTO_UDP); } /// Obtain an identifier for the protocol family. diff --git a/3party/boost/boost/asio/ip/unicast.hpp b/3party/boost/boost/asio/ip/unicast.hpp index 8fc9858cc5..59a03e2d3d 100644 --- a/3party/boost/boost/asio/ip/unicast.hpp +++ b/3party/boost/boost/asio/ip/unicast.hpp @@ -2,7 +2,7 @@ // ip/unicast.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -56,7 +56,10 @@ namespace unicast { typedef implementation_defined hops; #else typedef boost::asio::ip::detail::socket_option::unicast_hops< - IPPROTO_IP, IP_TTL, IPPROTO_IPV6, IPV6_UNICAST_HOPS> hops; + BOOST_ASIO_OS_DEF(IPPROTO_IP), + BOOST_ASIO_OS_DEF(IP_TTL), + BOOST_ASIO_OS_DEF(IPPROTO_IPV6), + BOOST_ASIO_OS_DEF(IPV6_UNICAST_HOPS)> hops; #endif } // namespace unicast diff --git a/3party/boost/boost/asio/ip/v6_only.hpp b/3party/boost/boost/asio/ip/v6_only.hpp index 14b322be03..6386e1965a 100644 --- a/3party/boost/boost/asio/ip/v6_only.hpp +++ b/3party/boost/boost/asio/ip/v6_only.hpp @@ -2,7 +2,7 @@ // ip/v6_only.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/is_read_buffered.hpp b/3party/boost/boost/asio/is_read_buffered.hpp index df53b40a25..65c3aa9c56 100644 --- a/3party/boost/boost/asio/is_read_buffered.hpp +++ b/3party/boost/boost/asio/is_read_buffered.hpp @@ -2,7 +2,7 @@ // is_read_buffered.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/is_write_buffered.hpp b/3party/boost/boost/asio/is_write_buffered.hpp index 509efe3cee..964c299e58 100644 --- a/3party/boost/boost/asio/is_write_buffered.hpp +++ b/3party/boost/boost/asio/is_write_buffered.hpp @@ -2,7 +2,7 @@ // is_write_buffered.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/local/basic_endpoint.hpp b/3party/boost/boost/asio/local/basic_endpoint.hpp index 30d19f116e..ec3d1f89fb 100644 --- a/3party/boost/boost/asio/local/basic_endpoint.hpp +++ b/3party/boost/boost/asio/local/basic_endpoint.hpp @@ -2,7 +2,7 @@ // local/basic_endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/local/connect_pair.hpp b/3party/boost/boost/asio/local/connect_pair.hpp index 3d28f634df..4b169b563e 100644 --- a/3party/boost/boost/asio/local/connect_pair.hpp +++ b/3party/boost/boost/asio/local/connect_pair.hpp @@ -2,7 +2,7 @@ // local/connect_pair.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/local/datagram_protocol.hpp b/3party/boost/boost/asio/local/datagram_protocol.hpp index fcf50227da..ef6a7796c1 100644 --- a/3party/boost/boost/asio/local/datagram_protocol.hpp +++ b/3party/boost/boost/asio/local/datagram_protocol.hpp @@ -2,7 +2,7 @@ // local/datagram_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/local/detail/endpoint.hpp b/3party/boost/boost/asio/local/detail/endpoint.hpp index e876e54428..e6102045a8 100644 --- a/3party/boost/boost/asio/local/detail/endpoint.hpp +++ b/3party/boost/boost/asio/local/detail/endpoint.hpp @@ -2,7 +2,7 @@ // local/detail/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/local/detail/impl/endpoint.ipp b/3party/boost/boost/asio/local/detail/impl/endpoint.ipp index 525c71fcda..c02ae674f4 100644 --- a/3party/boost/boost/asio/local/detail/impl/endpoint.ipp +++ b/3party/boost/boost/asio/local/detail/impl/endpoint.ipp @@ -2,7 +2,7 @@ // local/detail/impl/endpoint.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Derived from a public domain implementation written by Daniel Casimiro. // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/local/stream_protocol.hpp b/3party/boost/boost/asio/local/stream_protocol.hpp index ef0ea8d1c5..c60b63a987 100644 --- a/3party/boost/boost/asio/local/stream_protocol.hpp +++ b/3party/boost/boost/asio/local/stream_protocol.hpp @@ -2,7 +2,7 @@ // local/stream_protocol.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/placeholders.hpp b/3party/boost/boost/asio/placeholders.hpp index d5e80cb77f..06a093ff67 100644 --- a/3party/boost/boost/asio/placeholders.hpp +++ b/3party/boost/boost/asio/placeholders.hpp @@ -2,7 +2,7 @@ // placeholders.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/posix/basic_descriptor.hpp b/3party/boost/boost/asio/posix/basic_descriptor.hpp index 81563d4b80..81a91c4426 100644 --- a/3party/boost/boost/asio/posix/basic_descriptor.hpp +++ b/3party/boost/boost/asio/posix/basic_descriptor.hpp @@ -2,7 +2,7 @@ // posix/basic_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/posix/basic_stream_descriptor.hpp b/3party/boost/boost/asio/posix/basic_stream_descriptor.hpp index 13972d7e9b..7a3a92112a 100644 --- a/3party/boost/boost/asio/posix/basic_stream_descriptor.hpp +++ b/3party/boost/boost/asio/posix/basic_stream_descriptor.hpp @@ -2,7 +2,7 @@ // posix/basic_stream_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/posix/descriptor_base.hpp b/3party/boost/boost/asio/posix/descriptor_base.hpp index 562589e4ea..8cfc0e6730 100644 --- a/3party/boost/boost/asio/posix/descriptor_base.hpp +++ b/3party/boost/boost/asio/posix/descriptor_base.hpp @@ -2,7 +2,7 @@ // posix/descriptor_base.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/posix/stream_descriptor.hpp b/3party/boost/boost/asio/posix/stream_descriptor.hpp index 114959415b..5a2e5fbb5b 100644 --- a/3party/boost/boost/asio/posix/stream_descriptor.hpp +++ b/3party/boost/boost/asio/posix/stream_descriptor.hpp @@ -2,7 +2,7 @@ // posix/stream_descriptor.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/posix/stream_descriptor_service.hpp b/3party/boost/boost/asio/posix/stream_descriptor_service.hpp index 5d9419862c..50a27e983c 100644 --- a/3party/boost/boost/asio/posix/stream_descriptor_service.hpp +++ b/3party/boost/boost/asio/posix/stream_descriptor_service.hpp @@ -2,7 +2,7 @@ // posix/stream_descriptor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/raw_socket_service.hpp b/3party/boost/boost/asio/raw_socket_service.hpp index 5b0049b325..c412e0a5ec 100644 --- a/3party/boost/boost/asio/raw_socket_service.hpp +++ b/3party/boost/boost/asio/raw_socket_service.hpp @@ -2,7 +2,7 @@ // raw_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -22,7 +22,9 @@ #include #include -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +#elif defined(BOOST_ASIO_HAS_IOCP) # include #else # include @@ -56,7 +58,9 @@ public: private: // The type of the platform-specific implementation. -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + typedef detail::null_socket_service service_impl_type; +#elif defined(BOOST_ASIO_HAS_IOCP) typedef detail::win_iocp_socket_service service_impl_type; #else typedef detail::reactive_socket_service service_impl_type; @@ -138,7 +142,7 @@ public: boost::system::error_code open(implementation_type& impl, const protocol_type& protocol, boost::system::error_code& ec) { - if (protocol.type() == SOCK_RAW) + if (protocol.type() == BOOST_ASIO_OS_DEF(SOCK_RAW)) service_impl_.open(impl, protocol, ec); else ec = boost::asio::error::invalid_argument; diff --git a/3party/boost/boost/asio/read.hpp b/3party/boost/boost/asio/read.hpp index 07a7d2ea22..20fea0b6c4 100644 --- a/3party/boost/boost/asio/read.hpp +++ b/3party/boost/boost/asio/read.hpp @@ -2,7 +2,7 @@ // read.hpp // ~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/read_at.hpp b/3party/boost/boost/asio/read_at.hpp index 58b139cbc0..02acbeec97 100644 --- a/3party/boost/boost/asio/read_at.hpp +++ b/3party/boost/boost/asio/read_at.hpp @@ -2,7 +2,7 @@ // read_at.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/read_until.hpp b/3party/boost/boost/asio/read_until.hpp index 1074ae748b..a351604bb2 100644 --- a/3party/boost/boost/asio/read_until.hpp +++ b/3party/boost/boost/asio/read_until.hpp @@ -2,7 +2,7 @@ // read_until.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/seq_packet_socket_service.hpp b/3party/boost/boost/asio/seq_packet_socket_service.hpp index 80ecea79a3..10d2fbaf16 100644 --- a/3party/boost/boost/asio/seq_packet_socket_service.hpp +++ b/3party/boost/boost/asio/seq_packet_socket_service.hpp @@ -2,7 +2,7 @@ // seq_packet_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -22,7 +22,9 @@ #include #include -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +#elif defined(BOOST_ASIO_HAS_IOCP) # include #else # include @@ -57,7 +59,9 @@ public: private: // The type of the platform-specific implementation. -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + typedef detail::null_socket_service service_impl_type; +#elif defined(BOOST_ASIO_HAS_IOCP) typedef detail::win_iocp_socket_service service_impl_type; #else typedef detail::reactive_socket_service service_impl_type; @@ -140,7 +144,7 @@ public: boost::system::error_code open(implementation_type& impl, const protocol_type& protocol, boost::system::error_code& ec) { - if (protocol.type() == SOCK_SEQPACKET) + if (protocol.type() == BOOST_ASIO_OS_DEF(SOCK_SEQPACKET)) service_impl_.open(impl, protocol, ec); else ec = boost::asio::error::invalid_argument; @@ -314,13 +318,20 @@ public: /// Start an asynchronous send. template - void async_send(implementation_type& impl, + BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, + void (boost::system::error_code, std::size_t)) + async_send(implementation_type& impl, const ConstBufferSequence& buffers, socket_base::message_flags flags, BOOST_ASIO_MOVE_ARG(WriteHandler) handler) { - service_impl_.async_send(impl, buffers, flags, + detail::async_result_init< + WriteHandler, void (boost::system::error_code, std::size_t)> init( BOOST_ASIO_MOVE_CAST(WriteHandler)(handler)); + + service_impl_.async_send(impl, buffers, flags, init.handler); + + return init.result.get(); } /// Receive some data from the peer. @@ -335,13 +346,21 @@ public: /// Start an asynchronous receive. template - void async_receive(implementation_type& impl, + BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, + void (boost::system::error_code, std::size_t)) + async_receive(implementation_type& impl, const MutableBufferSequence& buffers, socket_base::message_flags in_flags, socket_base::message_flags& out_flags, BOOST_ASIO_MOVE_ARG(ReadHandler) handler) { - service_impl_.async_receive_with_flags(impl, buffers, in_flags, - out_flags, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); + detail::async_result_init< + ReadHandler, void (boost::system::error_code, std::size_t)> init( + BOOST_ASIO_MOVE_CAST(ReadHandler)(handler)); + + service_impl_.async_receive_with_flags(impl, + buffers, in_flags, out_flags, init.handler); + + return init.result.get(); } private: diff --git a/3party/boost/boost/asio/serial_port.hpp b/3party/boost/boost/asio/serial_port.hpp index cbac6e998a..824e1e20ca 100644 --- a/3party/boost/boost/asio/serial_port.hpp +++ b/3party/boost/boost/asio/serial_port.hpp @@ -2,7 +2,7 @@ // serial_port.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/serial_port_base.hpp b/3party/boost/boost/asio/serial_port_base.hpp index bc4827a92e..d6f6677cb4 100644 --- a/3party/boost/boost/asio/serial_port_base.hpp +++ b/3party/boost/boost/asio/serial_port_base.hpp @@ -2,7 +2,7 @@ // serial_port_base.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/serial_port_service.hpp b/3party/boost/boost/asio/serial_port_service.hpp index 42191793b0..5b1767130b 100644 --- a/3party/boost/boost/asio/serial_port_service.hpp +++ b/3party/boost/boost/asio/serial_port_service.hpp @@ -2,7 +2,7 @@ // serial_port_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/signal_set.hpp b/3party/boost/boost/asio/signal_set.hpp index b275ad6796..94fcad8786 100644 --- a/3party/boost/boost/asio/signal_set.hpp +++ b/3party/boost/boost/asio/signal_set.hpp @@ -2,7 +2,7 @@ // signal_set.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/signal_set_service.hpp b/3party/boost/boost/asio/signal_set_service.hpp index 220a6bc59f..029b9afc39 100644 --- a/3party/boost/boost/asio/signal_set_service.hpp +++ b/3party/boost/boost/asio/signal_set_service.hpp @@ -2,7 +2,7 @@ // signal_set_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/socket_acceptor_service.hpp b/3party/boost/boost/asio/socket_acceptor_service.hpp index 553fdd3b55..9a1963cd5f 100644 --- a/3party/boost/boost/asio/socket_acceptor_service.hpp +++ b/3party/boost/boost/asio/socket_acceptor_service.hpp @@ -2,7 +2,7 @@ // socket_acceptor_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -21,7 +21,9 @@ #include #include -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +#elif defined(BOOST_ASIO_HAS_IOCP) # include #else # include @@ -55,7 +57,9 @@ public: private: // The type of the platform-specific implementation. -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + typedef detail::null_socket_service service_impl_type; +#elif defined(BOOST_ASIO_HAS_IOCP) typedef detail::win_iocp_socket_service service_impl_type; #else typedef detail::reactive_socket_service service_impl_type; diff --git a/3party/boost/boost/asio/socket_base.hpp b/3party/boost/boost/asio/socket_base.hpp index 9d16a45e81..e034d679b2 100644 --- a/3party/boost/boost/asio/socket_base.hpp +++ b/3party/boost/boost/asio/socket_base.hpp @@ -2,7 +2,7 @@ // socket_base.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -44,9 +44,9 @@ public: /// Shutdown both send and receive on the socket. shutdown_both = implementation_defined #else - shutdown_receive = boost::asio::detail::shutdown_receive, - shutdown_send = boost::asio::detail::shutdown_send, - shutdown_both = boost::asio::detail::shutdown_both + shutdown_receive = BOOST_ASIO_OS_DEF(SHUT_RD), + shutdown_send = BOOST_ASIO_OS_DEF(SHUT_WR), + shutdown_both = BOOST_ASIO_OS_DEF(SHUT_RDWR) #endif }; @@ -67,13 +67,13 @@ public: static const int message_end_of_record = implementation_defined; #else BOOST_ASIO_STATIC_CONSTANT(int, - message_peek = boost::asio::detail::message_peek); + message_peek = BOOST_ASIO_OS_DEF(MSG_PEEK)); BOOST_ASIO_STATIC_CONSTANT(int, - message_out_of_band = boost::asio::detail::message_out_of_band); + message_out_of_band = BOOST_ASIO_OS_DEF(MSG_OOB)); BOOST_ASIO_STATIC_CONSTANT(int, - message_do_not_route = boost::asio::detail::message_do_not_route); + message_do_not_route = BOOST_ASIO_OS_DEF(MSG_DONTROUTE)); BOOST_ASIO_STATIC_CONSTANT(int, - message_end_of_record = boost::asio::detail::message_end_of_record); + message_end_of_record = BOOST_ASIO_OS_DEF(MSG_EOR)); #endif /// Socket option to permit sending of broadcast messages. @@ -106,7 +106,8 @@ public: typedef implementation_defined broadcast; #else typedef boost::asio::detail::socket_option::boolean< - SOL_SOCKET, SO_BROADCAST> broadcast; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_BROADCAST)> + broadcast; #endif /// Socket option to enable socket-level debugging. @@ -139,7 +140,7 @@ public: typedef implementation_defined debug; #else typedef boost::asio::detail::socket_option::boolean< - SOL_SOCKET, SO_DEBUG> debug; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_DEBUG)> debug; #endif /// Socket option to prevent routing, use local interfaces only. @@ -172,7 +173,8 @@ public: typedef implementation_defined do_not_route; #else typedef boost::asio::detail::socket_option::boolean< - SOL_SOCKET, SO_DONTROUTE> do_not_route; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_DONTROUTE)> + do_not_route; #endif /// Socket option to send keep-alives. @@ -205,7 +207,7 @@ public: typedef implementation_defined keep_alive; #else typedef boost::asio::detail::socket_option::boolean< - SOL_SOCKET, SO_KEEPALIVE> keep_alive; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_KEEPALIVE)> keep_alive; #endif /// Socket option for the send buffer size of a socket. @@ -238,7 +240,8 @@ public: typedef implementation_defined send_buffer_size; #else typedef boost::asio::detail::socket_option::integer< - SOL_SOCKET, SO_SNDBUF> send_buffer_size; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_SNDBUF)> + send_buffer_size; #endif /// Socket option for the send low watermark. @@ -271,7 +274,8 @@ public: typedef implementation_defined send_low_watermark; #else typedef boost::asio::detail::socket_option::integer< - SOL_SOCKET, SO_SNDLOWAT> send_low_watermark; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_SNDLOWAT)> + send_low_watermark; #endif /// Socket option for the receive buffer size of a socket. @@ -304,7 +308,8 @@ public: typedef implementation_defined receive_buffer_size; #else typedef boost::asio::detail::socket_option::integer< - SOL_SOCKET, SO_RCVBUF> receive_buffer_size; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_RCVBUF)> + receive_buffer_size; #endif /// Socket option for the receive low watermark. @@ -337,7 +342,8 @@ public: typedef implementation_defined receive_low_watermark; #else typedef boost::asio::detail::socket_option::integer< - SOL_SOCKET, SO_RCVLOWAT> receive_low_watermark; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_RCVLOWAT)> + receive_low_watermark; #endif /// Socket option to allow the socket to be bound to an address that is @@ -371,7 +377,8 @@ public: typedef implementation_defined reuse_address; #else typedef boost::asio::detail::socket_option::boolean< - SOL_SOCKET, SO_REUSEADDR> reuse_address; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_REUSEADDR)> + reuse_address; #endif /// Socket option to specify whether the socket lingers on close if unsent @@ -406,7 +413,8 @@ public: typedef implementation_defined linger; #else typedef boost::asio::detail::socket_option::linger< - SOL_SOCKET, SO_LINGER> linger; + BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_LINGER)> + linger; #endif /// Socket option to report aborted connections on accept. @@ -495,7 +503,8 @@ public: #if defined(GENERATING_DOCUMENTATION) static const int max_connections = implementation_defined; #else - BOOST_ASIO_STATIC_CONSTANT(int, max_connections = SOMAXCONN); + BOOST_ASIO_STATIC_CONSTANT(int, max_connections + = BOOST_ASIO_OS_DEF(SOMAXCONN)); #endif protected: diff --git a/3party/boost/boost/asio/spawn.hpp b/3party/boost/boost/asio/spawn.hpp index ee70fe5373..498e7f7774 100644 --- a/3party/boost/boost/asio/spawn.hpp +++ b/3party/boost/boost/asio/spawn.hpp @@ -2,7 +2,7 @@ // spawn.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -16,7 +16,7 @@ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) #include -#include +#include #include #include #include @@ -58,7 +58,7 @@ public: */ #if defined(GENERATING_DOCUMENTATION) typedef implementation_defined callee_type; -#elif defined(BOOST_COROUTINES_UNIDRECT) || defined(BOOST_COROUTINES_V2) +#elif defined(BOOST_COROUTINES_UNIDIRECT) || defined(BOOST_COROUTINES_V2) typedef boost::coroutines::push_coroutine callee_type; #else typedef boost::coroutines::coroutine callee_type; @@ -73,7 +73,7 @@ public: */ #if defined(GENERATING_DOCUMENTATION) typedef implementation_defined caller_type; -#elif defined(BOOST_COROUTINES_UNIDRECT) || defined(BOOST_COROUTINES_V2) +#elif defined(BOOST_COROUTINES_UNIDIRECT) || defined(BOOST_COROUTINES_V2) typedef boost::coroutines::pull_coroutine caller_type; #else typedef boost::coroutines::coroutine::caller_type caller_type; @@ -131,7 +131,7 @@ private: }; #if defined(GENERATING_DOCUMENTATION) -/// Context object the represents the currently executing coroutine. +/// Context object that represents the currently executing coroutine. typedef basic_yield_context yield_context; #else // defined(GENERATING_DOCUMENTATION) typedef basic_yield_context< @@ -218,7 +218,7 @@ void spawn(basic_yield_context ctx, const boost::coroutines::attributes& attributes = boost::coroutines::attributes()); -/// Start a new stackful coroutine that executes in the contex of a strand. +/// Start a new stackful coroutine that executes in the context of a strand. /** * This function is used to launch a new coroutine. * diff --git a/3party/boost/boost/asio/ssl.hpp b/3party/boost/boost/asio/ssl.hpp index 0339c510b5..483b23a988 100644 --- a/3party/boost/boost/asio/ssl.hpp +++ b/3party/boost/boost/asio/ssl.hpp @@ -2,7 +2,7 @@ // ssl.hpp // ~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/basic_context.hpp b/3party/boost/boost/asio/ssl/basic_context.hpp index f32b1f5389..e51d39bc85 100644 --- a/3party/boost/boost/asio/ssl/basic_context.hpp +++ b/3party/boost/boost/asio/ssl/basic_context.hpp @@ -2,7 +2,7 @@ // ssl/basic_context.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/context.hpp b/3party/boost/boost/asio/ssl/context.hpp index df19bd2a67..e9d4db65d7 100644 --- a/3party/boost/boost/asio/ssl/context.hpp +++ b/3party/boost/boost/asio/ssl/context.hpp @@ -2,7 +2,7 @@ // ssl/context.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/context_base.hpp b/3party/boost/boost/asio/ssl/context_base.hpp index 23a35978d1..692372d4ba 100644 --- a/3party/boost/boost/asio/ssl/context_base.hpp +++ b/3party/boost/boost/asio/ssl/context_base.hpp @@ -2,7 +2,7 @@ // ssl/context_base.hpp // ~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/context_service.hpp b/3party/boost/boost/asio/ssl/context_service.hpp index 23d858c73b..3222dc52c7 100644 --- a/3party/boost/boost/asio/ssl/context_service.hpp +++ b/3party/boost/boost/asio/ssl/context_service.hpp @@ -2,7 +2,7 @@ // ssl/context_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/buffered_handshake_op.hpp b/3party/boost/boost/asio/ssl/detail/buffered_handshake_op.hpp index b8892fff9a..10608b0eb9 100644 --- a/3party/boost/boost/asio/ssl/detail/buffered_handshake_op.hpp +++ b/3party/boost/boost/asio/ssl/detail/buffered_handshake_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/buffered_handshake_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/engine.hpp b/3party/boost/boost/asio/ssl/detail/engine.hpp index 7b4bd1a2d1..8b24a96f01 100644 --- a/3party/boost/boost/asio/ssl/detail/engine.hpp +++ b/3party/boost/boost/asio/ssl/detail/engine.hpp @@ -2,7 +2,7 @@ // ssl/detail/engine.hpp // ~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/handshake_op.hpp b/3party/boost/boost/asio/ssl/detail/handshake_op.hpp index da184925e7..b886bb52f6 100644 --- a/3party/boost/boost/asio/ssl/detail/handshake_op.hpp +++ b/3party/boost/boost/asio/ssl/detail/handshake_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/handshake_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/impl/engine.ipp b/3party/boost/boost/asio/ssl/detail/impl/engine.ipp index 1a3e33364f..5aa9b5a68a 100644 --- a/3party/boost/boost/asio/ssl/detail/impl/engine.ipp +++ b/3party/boost/boost/asio/ssl/detail/impl/engine.ipp @@ -2,7 +2,7 @@ // ssl/detail/impl/engine.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/impl/openssl_init.ipp b/3party/boost/boost/asio/ssl/detail/impl/openssl_init.ipp index 6ec670fb23..d732fef309 100644 --- a/3party/boost/boost/asio/ssl/detail/impl/openssl_init.ipp +++ b/3party/boost/boost/asio/ssl/detail/impl/openssl_init.ipp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/io.hpp b/3party/boost/boost/asio/ssl/detail/io.hpp index b64c49a10f..ef821000ba 100644 --- a/3party/boost/boost/asio/ssl/detail/io.hpp +++ b/3party/boost/boost/asio/ssl/detail/io.hpp @@ -2,7 +2,7 @@ // ssl/detail/io.hpp // ~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -97,6 +97,7 @@ public: core_(core), op_(op), start_(0), + want_(engine::want_nothing), bytes_transferred_(0), handler_(BOOST_ASIO_MOVE_CAST(Handler)(handler)) { diff --git a/3party/boost/boost/asio/ssl/detail/openssl_init.hpp b/3party/boost/boost/asio/ssl/detail/openssl_init.hpp index d1a3c85727..985c14d9c5 100644 --- a/3party/boost/boost/asio/ssl/detail/openssl_init.hpp +++ b/3party/boost/boost/asio/ssl/detail/openssl_init.hpp @@ -2,7 +2,7 @@ // ssl/detail/openssl_init.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/openssl_types.hpp b/3party/boost/boost/asio/ssl/detail/openssl_types.hpp index 7c4d0df6d4..58b4733db6 100644 --- a/3party/boost/boost/asio/ssl/detail/openssl_types.hpp +++ b/3party/boost/boost/asio/ssl/detail/openssl_types.hpp @@ -2,7 +2,7 @@ // ssl/detail/openssl_types.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/password_callback.hpp b/3party/boost/boost/asio/ssl/detail/password_callback.hpp index 7d4f17f7ea..d64bf3a5be 100644 --- a/3party/boost/boost/asio/ssl/detail/password_callback.hpp +++ b/3party/boost/boost/asio/ssl/detail/password_callback.hpp @@ -2,7 +2,7 @@ // ssl/detail/password_callback.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/read_op.hpp b/3party/boost/boost/asio/ssl/detail/read_op.hpp index c90c69a82c..e0a0ad0ee8 100644 --- a/3party/boost/boost/asio/ssl/detail/read_op.hpp +++ b/3party/boost/boost/asio/ssl/detail/read_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/read_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/shutdown_op.hpp b/3party/boost/boost/asio/ssl/detail/shutdown_op.hpp index 3781f0998e..6a716f7090 100644 --- a/3party/boost/boost/asio/ssl/detail/shutdown_op.hpp +++ b/3party/boost/boost/asio/ssl/detail/shutdown_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/shutdown_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/stream_core.hpp b/3party/boost/boost/asio/ssl/detail/stream_core.hpp index fdd4715b52..663e258c03 100644 --- a/3party/boost/boost/asio/ssl/detail/stream_core.hpp +++ b/3party/boost/boost/asio/ssl/detail/stream_core.hpp @@ -2,7 +2,7 @@ // ssl/detail/stream_core.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -90,13 +90,13 @@ struct stream_core // Helper function for obtaining a time value that always fires. static boost::asio::steady_timer::time_point neg_infin() { - return boost::asio::steady_timer::time_point::min(); + return (boost::asio::steady_timer::time_point::min)(); } // Helper function for obtaining a time value that never fires. static boost::asio::steady_timer::time_point pos_infin() { - return boost::asio::steady_timer::time_point::max(); + return (boost::asio::steady_timer::time_point::max)(); } #endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) diff --git a/3party/boost/boost/asio/ssl/detail/verify_callback.hpp b/3party/boost/boost/asio/ssl/detail/verify_callback.hpp index 5ba2c7bcb6..eb40f488f4 100644 --- a/3party/boost/boost/asio/ssl/detail/verify_callback.hpp +++ b/3party/boost/boost/asio/ssl/detail/verify_callback.hpp @@ -2,7 +2,7 @@ // ssl/detail/verify_callback.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/detail/write_op.hpp b/3party/boost/boost/asio/ssl/detail/write_op.hpp index 3c37dedb42..24020983df 100644 --- a/3party/boost/boost/asio/ssl/detail/write_op.hpp +++ b/3party/boost/boost/asio/ssl/detail/write_op.hpp @@ -2,7 +2,7 @@ // ssl/detail/write_op.hpp // ~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/error.hpp b/3party/boost/boost/asio/ssl/error.hpp index 3a4b135826..a308fd2626 100644 --- a/3party/boost/boost/asio/ssl/error.hpp +++ b/3party/boost/boost/asio/ssl/error.hpp @@ -2,7 +2,7 @@ // ssl/error.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/impl/context.hpp b/3party/boost/boost/asio/ssl/impl/context.hpp index 07c815813f..345bc5b2ca 100644 --- a/3party/boost/boost/asio/ssl/impl/context.hpp +++ b/3party/boost/boost/asio/ssl/impl/context.hpp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/impl/context.ipp b/3party/boost/boost/asio/ssl/impl/context.ipp index 3f8dae138a..06c2743fdb 100644 --- a/3party/boost/boost/asio/ssl/impl/context.ipp +++ b/3party/boost/boost/asio/ssl/impl/context.ipp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -236,19 +236,27 @@ void context::clear_options(context::options o) boost::system::error_code context::clear_options( context::options o, boost::system::error_code& ec) { -#if !defined(SSL_OP_NO_COMPRESSION) +#if (OPENSSL_VERSION_NUMBER >= 0x009080DFL) \ + && (OPENSSL_VERSION_NUMBER != 0x00909000L) +# if !defined(SSL_OP_NO_COMPRESSION) if ((o & context::no_compression) != 0) { -#if (OPENSSL_VERSION_NUMBER >= 0x00908000L) +# if (OPENSSL_VERSION_NUMBER >= 0x00908000L) handle_->comp_methods = SSL_COMP_get_compression_methods(); -#endif // (OPENSSL_VERSION_NUMBER >= 0x00908000L) +# endif // (OPENSSL_VERSION_NUMBER >= 0x00908000L) o ^= context::no_compression; } -#endif // !defined(SSL_OP_NO_COMPRESSION) +# endif // !defined(SSL_OP_NO_COMPRESSION) ::SSL_CTX_clear_options(handle_, o); ec = boost::system::error_code(); +#else // (OPENSSL_VERSION_NUMBER >= 0x009080DFL) + // && (OPENSSL_VERSION_NUMBER != 0x00909000L) + (void)o; + ec = boost::asio::error::operation_not_supported; +#endif // (OPENSSL_VERSION_NUMBER >= 0x009080DFL) + // && (OPENSSL_VERSION_NUMBER != 0x00909000L) return ec; } @@ -428,7 +436,8 @@ boost::system::error_code context::use_certificate( if (format == context_base::asn1) { - if (::SSL_CTX_use_certificate_ASN1(handle_, buffer_size(certificate), + if (::SSL_CTX_use_certificate_ASN1(handle_, + static_cast(buffer_size(certificate)), buffer_cast(certificate)) == 1) { ec = boost::system::error_code(); @@ -929,7 +938,7 @@ BIO* context::make_buffer_bio(const const_buffer& b) { return ::BIO_new_mem_buf( const_cast(buffer_cast(b)), - buffer_size(b)); + static_cast(buffer_size(b))); } #endif // !defined(BOOST_ASIO_ENABLE_OLD_SSL) diff --git a/3party/boost/boost/asio/ssl/impl/error.ipp b/3party/boost/boost/asio/ssl/impl/error.ipp index e411a4d3d7..bacfc7bbf1 100644 --- a/3party/boost/boost/asio/ssl/impl/error.ipp +++ b/3party/boost/boost/asio/ssl/impl/error.ipp @@ -2,7 +2,7 @@ // ssl/impl/error.ipp // ~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/impl/rfc2818_verification.ipp b/3party/boost/boost/asio/ssl/impl/rfc2818_verification.ipp index 769762e985..e4f28ef946 100644 --- a/3party/boost/boost/asio/ssl/impl/rfc2818_verification.ipp +++ b/3party/boost/boost/asio/ssl/impl/rfc2818_verification.ipp @@ -2,7 +2,7 @@ // ssl/impl/rfc2818_verification.ipp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/impl/src.hpp b/3party/boost/boost/asio/ssl/impl/src.hpp index a8db0022e6..bc15b4e238 100644 --- a/3party/boost/boost/asio/ssl/impl/src.hpp +++ b/3party/boost/boost/asio/ssl/impl/src.hpp @@ -2,7 +2,7 @@ // impl/ssl/src.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/old/basic_context.hpp b/3party/boost/boost/asio/ssl/old/basic_context.hpp index 8995b28bca..b0b4b135d9 100644 --- a/3party/boost/boost/asio/ssl/old/basic_context.hpp +++ b/3party/boost/boost/asio/ssl/old/basic_context.hpp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/old/context_service.hpp b/3party/boost/boost/asio/ssl/old/context_service.hpp index 6d0b1eb34b..0912b55f2e 100644 --- a/3party/boost/boost/asio/ssl/old/context_service.hpp +++ b/3party/boost/boost/asio/ssl/old/context_service.hpp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/old/detail/openssl_context_service.hpp b/3party/boost/boost/asio/ssl/old/detail/openssl_context_service.hpp index 0eb45ed1d2..a6e25c9d96 100644 --- a/3party/boost/boost/asio/ssl/old/detail/openssl_context_service.hpp +++ b/3party/boost/boost/asio/ssl/old/detail/openssl_context_service.hpp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/old/detail/openssl_stream_service.hpp b/3party/boost/boost/asio/ssl/old/detail/openssl_stream_service.hpp index 24e09fd615..ab8f8cf439 100644 --- a/3party/boost/boost/asio/ssl/old/detail/openssl_stream_service.hpp +++ b/3party/boost/boost/asio/ssl/old/detail/openssl_stream_service.hpp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/old/stream.hpp b/3party/boost/boost/asio/ssl/old/stream.hpp index b9af97b92c..3bfe56df4a 100644 --- a/3party/boost/boost/asio/ssl/old/stream.hpp +++ b/3party/boost/boost/asio/ssl/old/stream.hpp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/old/stream_service.hpp b/3party/boost/boost/asio/ssl/old/stream_service.hpp index c9456192cd..3acecc5d5a 100644 --- a/3party/boost/boost/asio/ssl/old/stream_service.hpp +++ b/3party/boost/boost/asio/ssl/old/stream_service.hpp @@ -3,7 +3,7 @@ // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com -// Copyright (c) 2005-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2005-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/rfc2818_verification.hpp b/3party/boost/boost/asio/ssl/rfc2818_verification.hpp index c793034839..f2687b9461 100644 --- a/3party/boost/boost/asio/ssl/rfc2818_verification.hpp +++ b/3party/boost/boost/asio/ssl/rfc2818_verification.hpp @@ -2,7 +2,7 @@ // ssl/rfc2818_verification.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/stream.hpp b/3party/boost/boost/asio/ssl/stream.hpp index f73fc52981..3eafd16e9c 100644 --- a/3party/boost/boost/asio/ssl/stream.hpp +++ b/3party/boost/boost/asio/ssl/stream.hpp @@ -2,7 +2,7 @@ // ssl/stream.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/stream_base.hpp b/3party/boost/boost/asio/ssl/stream_base.hpp index 594ba277e1..06d7849530 100644 --- a/3party/boost/boost/asio/ssl/stream_base.hpp +++ b/3party/boost/boost/asio/ssl/stream_base.hpp @@ -2,7 +2,7 @@ // ssl/stream_base.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/stream_service.hpp b/3party/boost/boost/asio/ssl/stream_service.hpp index a48d9688c3..9fcb48e82c 100644 --- a/3party/boost/boost/asio/ssl/stream_service.hpp +++ b/3party/boost/boost/asio/ssl/stream_service.hpp @@ -2,7 +2,7 @@ // ssl/stream_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/verify_context.hpp b/3party/boost/boost/asio/ssl/verify_context.hpp index 1c2b02f3b9..ddd3fec5da 100644 --- a/3party/boost/boost/asio/ssl/verify_context.hpp +++ b/3party/boost/boost/asio/ssl/verify_context.hpp @@ -2,7 +2,7 @@ // ssl/verify_context.hpp // ~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/ssl/verify_mode.hpp b/3party/boost/boost/asio/ssl/verify_mode.hpp index 87e3932b09..4d4a1ed9bf 100644 --- a/3party/boost/boost/asio/ssl/verify_mode.hpp +++ b/3party/boost/boost/asio/ssl/verify_mode.hpp @@ -2,7 +2,7 @@ // ssl/verify_mode.hpp // ~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/steady_timer.hpp b/3party/boost/boost/asio/steady_timer.hpp index 1ec210878b..fd32529110 100644 --- a/3party/boost/boost/asio/steady_timer.hpp +++ b/3party/boost/boost/asio/steady_timer.hpp @@ -2,7 +2,7 @@ // steady_timer.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/strand.hpp b/3party/boost/boost/asio/strand.hpp index 10a466b6e9..f6b62fb6f3 100644 --- a/3party/boost/boost/asio/strand.hpp +++ b/3party/boost/boost/asio/strand.hpp @@ -2,7 +2,7 @@ // strand.hpp // ~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -73,6 +73,9 @@ namespace asio { * happens-before the other. Therefore none of the above conditions are met and * no ordering guarantee is made. * + * @note The implementation makes no guarantee that handlers posted or + * dispatched through different @c strand objects will be invoked concurrently. + * * @par Thread Safety * @e Distinct @e objects: Safe.@n * @e Shared @e objects: Safe. diff --git a/3party/boost/boost/asio/stream_socket_service.hpp b/3party/boost/boost/asio/stream_socket_service.hpp index 9145629977..f484d7d0ac 100644 --- a/3party/boost/boost/asio/stream_socket_service.hpp +++ b/3party/boost/boost/asio/stream_socket_service.hpp @@ -2,7 +2,7 @@ // stream_socket_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -22,7 +22,9 @@ #include #include -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) +# include +#elif defined(BOOST_ASIO_HAS_IOCP) # include #else # include @@ -56,7 +58,9 @@ public: private: // The type of the platform-specific implementation. -#if defined(BOOST_ASIO_HAS_IOCP) +#if defined(BOOST_ASIO_WINDOWS_RUNTIME) + typedef detail::winrt_ssocket_service service_impl_type; +#elif defined(BOOST_ASIO_HAS_IOCP) typedef detail::win_iocp_socket_service service_impl_type; #else typedef detail::reactive_socket_service service_impl_type; @@ -138,7 +142,7 @@ public: boost::system::error_code open(implementation_type& impl, const protocol_type& protocol, boost::system::error_code& ec) { - if (protocol.type() == SOCK_STREAM) + if (protocol.type() == BOOST_ASIO_OS_DEF(SOCK_STREAM)) service_impl_.open(impl, protocol, ec); else ec = boost::asio::error::invalid_argument; diff --git a/3party/boost/boost/asio/streambuf.hpp b/3party/boost/boost/asio/streambuf.hpp index 176a460f74..7dbbb49f5a 100644 --- a/3party/boost/boost/asio/streambuf.hpp +++ b/3party/boost/boost/asio/streambuf.hpp @@ -2,7 +2,7 @@ // streambuf.hpp // ~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/system_timer.hpp b/3party/boost/boost/asio/system_timer.hpp index 03a4eb7c57..c7ade7cb8f 100644 --- a/3party/boost/boost/asio/system_timer.hpp +++ b/3party/boost/boost/asio/system_timer.hpp @@ -2,7 +2,7 @@ // system_timer.hpp // ~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/time_traits.hpp b/3party/boost/boost/asio/time_traits.hpp index d45871028a..a5605c14d9 100644 --- a/3party/boost/boost/asio/time_traits.hpp +++ b/3party/boost/boost/asio/time_traits.hpp @@ -2,7 +2,7 @@ // time_traits.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/unyield.hpp b/3party/boost/boost/asio/unyield.hpp index de1d7136ab..0be57acc9a 100644 --- a/3party/boost/boost/asio/unyield.hpp +++ b/3party/boost/boost/asio/unyield.hpp @@ -2,7 +2,7 @@ // unyield.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/use_future.hpp b/3party/boost/boost/asio/use_future.hpp index 5bf7177097..c643c8d462 100644 --- a/3party/boost/boost/asio/use_future.hpp +++ b/3party/boost/boost/asio/use_future.hpp @@ -2,7 +2,7 @@ // use_future.hpp // ~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -47,7 +47,7 @@ public: typedef Allocator allocator_type; /// Construct using default-constructed allocator. - constexpr use_future_t() + BOOST_ASIO_CONSTEXPR use_future_t() { } @@ -78,7 +78,11 @@ private: /** * See the documentation for boost::asio::use_future_t for a usage example. */ +#if defined(BOOST_ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION) constexpr use_future_t<> use_future; +#elif defined(BOOST_ASIO_MSVC) +__declspec(selectany) use_future_t<> use_future; +#endif } // namespace asio } // namespace boost diff --git a/3party/boost/boost/asio/version.hpp b/3party/boost/boost/asio/version.hpp index f530cff063..deeab10891 100644 --- a/3party/boost/boost/asio/version.hpp +++ b/3party/boost/boost/asio/version.hpp @@ -2,7 +2,7 @@ // version.hpp // ~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -18,6 +18,6 @@ // BOOST_ASIO_VERSION % 100 is the sub-minor version // BOOST_ASIO_VERSION / 100 % 1000 is the minor version // BOOST_ASIO_VERSION / 100000 is the major version -#define BOOST_ASIO_VERSION 101000 // 1.10.0 +#define BOOST_ASIO_VERSION 101004 // 1.10.4 #endif // BOOST_ASIO_VERSION_HPP diff --git a/3party/boost/boost/asio/wait_traits.hpp b/3party/boost/boost/asio/wait_traits.hpp index 3a7164db6c..e875e5c24a 100644 --- a/3party/boost/boost/asio/wait_traits.hpp +++ b/3party/boost/boost/asio/wait_traits.hpp @@ -2,7 +2,7 @@ // wait_traits.hpp // ~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/waitable_timer_service.hpp b/3party/boost/boost/asio/waitable_timer_service.hpp index 301d406b76..0832bf10c2 100644 --- a/3party/boost/boost/asio/waitable_timer_service.hpp +++ b/3party/boost/boost/asio/waitable_timer_service.hpp @@ -2,7 +2,7 @@ // waitable_timer_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/windows/basic_handle.hpp b/3party/boost/boost/asio/windows/basic_handle.hpp index 593482786b..924945c7db 100644 --- a/3party/boost/boost/asio/windows/basic_handle.hpp +++ b/3party/boost/boost/asio/windows/basic_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/windows/basic_object_handle.hpp b/3party/boost/boost/asio/windows/basic_object_handle.hpp index 4bfa3b88b0..effa74af4b 100644 --- a/3party/boost/boost/asio/windows/basic_object_handle.hpp +++ b/3party/boost/boost/asio/windows/basic_object_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_object_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/windows/basic_random_access_handle.hpp b/3party/boost/boost/asio/windows/basic_random_access_handle.hpp index a673fc5211..22e4390d49 100644 --- a/3party/boost/boost/asio/windows/basic_random_access_handle.hpp +++ b/3party/boost/boost/asio/windows/basic_random_access_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_random_access_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/windows/basic_stream_handle.hpp b/3party/boost/boost/asio/windows/basic_stream_handle.hpp index 3b517c4cd5..479707acdc 100644 --- a/3party/boost/boost/asio/windows/basic_stream_handle.hpp +++ b/3party/boost/boost/asio/windows/basic_stream_handle.hpp @@ -2,7 +2,7 @@ // windows/basic_stream_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/windows/object_handle.hpp b/3party/boost/boost/asio/windows/object_handle.hpp index c85401bcba..307963e578 100644 --- a/3party/boost/boost/asio/windows/object_handle.hpp +++ b/3party/boost/boost/asio/windows/object_handle.hpp @@ -2,7 +2,7 @@ // windows/object_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/windows/object_handle_service.hpp b/3party/boost/boost/asio/windows/object_handle_service.hpp index 020ba71a21..dd33277eed 100644 --- a/3party/boost/boost/asio/windows/object_handle_service.hpp +++ b/3party/boost/boost/asio/windows/object_handle_service.hpp @@ -2,7 +2,7 @@ // windows/object_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // Copyright (c) 2011 Boris Schaeling (boris@highscore.de) // // Distributed under the Boost Software License, Version 1.0. (See accompanying diff --git a/3party/boost/boost/asio/windows/overlapped_ptr.hpp b/3party/boost/boost/asio/windows/overlapped_ptr.hpp index 48ec3f794a..4c6d4abe58 100644 --- a/3party/boost/boost/asio/windows/overlapped_ptr.hpp +++ b/3party/boost/boost/asio/windows/overlapped_ptr.hpp @@ -2,7 +2,7 @@ // windows/overlapped_ptr.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/windows/random_access_handle.hpp b/3party/boost/boost/asio/windows/random_access_handle.hpp index 7124b1fc7e..e7dbfacd1a 100644 --- a/3party/boost/boost/asio/windows/random_access_handle.hpp +++ b/3party/boost/boost/asio/windows/random_access_handle.hpp @@ -2,7 +2,7 @@ // windows/random_access_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/windows/random_access_handle_service.hpp b/3party/boost/boost/asio/windows/random_access_handle_service.hpp index 8d33fc6ab8..bc013d90c1 100644 --- a/3party/boost/boost/asio/windows/random_access_handle_service.hpp +++ b/3party/boost/boost/asio/windows/random_access_handle_service.hpp @@ -2,7 +2,7 @@ // windows/random_access_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -21,7 +21,6 @@ || defined(GENERATING_DOCUMENTATION) #include -#include #include #include #include diff --git a/3party/boost/boost/asio/windows/stream_handle.hpp b/3party/boost/boost/asio/windows/stream_handle.hpp index 365a1ff5a8..dad6b74b32 100644 --- a/3party/boost/boost/asio/windows/stream_handle.hpp +++ b/3party/boost/boost/asio/windows/stream_handle.hpp @@ -2,7 +2,7 @@ // windows/stream_handle.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/windows/stream_handle_service.hpp b/3party/boost/boost/asio/windows/stream_handle_service.hpp index 8ab900deb0..87c3a2091e 100644 --- a/3party/boost/boost/asio/windows/stream_handle_service.hpp +++ b/3party/boost/boost/asio/windows/stream_handle_service.hpp @@ -2,7 +2,7 @@ // windows/stream_handle_service.hpp // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/write.hpp b/3party/boost/boost/asio/write.hpp index 6edd4fe9e0..fdde975fdb 100644 --- a/3party/boost/boost/asio/write.hpp +++ b/3party/boost/boost/asio/write.hpp @@ -2,7 +2,7 @@ // write.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/asio/write_at.hpp b/3party/boost/boost/asio/write_at.hpp index 2edd05a2be..6df000ca03 100644 --- a/3party/boost/boost/asio/write_at.hpp +++ b/3party/boost/boost/asio/write_at.hpp @@ -2,7 +2,7 @@ // write_at.hpp // ~~~~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -407,7 +407,12 @@ std::size_t write_at(SyncRandomAccessWriteDevice& d, uint64_t offset, * @li An error occurred. * * This operation is implemented in terms of zero or more calls to the device's - * async_write_some_at function. + * async_write_some_at function, and is known as a composed operation. + * The program must ensure that the device performs no overlapping + * write operations (such as async_write_at, the device's async_write_some_at + * function, or any other composed operations that perform writes) until this + * operation completes. Operations are overlapping if the regions defined by + * their offsets, and the numbers of bytes to write, intersect. * * @param d The device to which the data is to be written. The type must support * the AsyncRandomAccessWriteDevice concept. @@ -466,7 +471,12 @@ async_write_at(AsyncRandomAccessWriteDevice& d, uint64_t offset, * @li The completion_condition function object returns 0. * * This operation is implemented in terms of zero or more calls to the device's - * async_write_some_at function. + * async_write_some_at function, and is known as a composed operation. + * The program must ensure that the device performs no overlapping + * write operations (such as async_write_at, the device's async_write_some_at + * function, or any other composed operations that perform writes) until this + * operation completes. Operations are overlapping if the regions defined by + * their offsets, and the numbers of bytes to write, intersect. * * @param d The device to which the data is to be written. The type must support * the AsyncRandomAccessWriteDevice concept. @@ -542,7 +552,12 @@ async_write_at(AsyncRandomAccessWriteDevice& d, * @li An error occurred. * * This operation is implemented in terms of zero or more calls to the device's - * async_write_some_at function. + * async_write_some_at function, and is known as a composed operation. + * The program must ensure that the device performs no overlapping + * write operations (such as async_write_at, the device's async_write_some_at + * function, or any other composed operations that perform writes) until this + * operation completes. Operations are overlapping if the regions defined by + * their offsets, and the numbers of bytes to write, intersect. * * @param d The device to which the data is to be written. The type must support * the AsyncRandomAccessWriteDevice concept. @@ -589,7 +604,12 @@ async_write_at(AsyncRandomAccessWriteDevice& d, uint64_t offset, * @li The completion_condition function object returns 0. * * This operation is implemented in terms of zero or more calls to the device's - * async_write_some_at function. + * async_write_some_at function, and is known as a composed operation. + * The program must ensure that the device performs no overlapping + * write operations (such as async_write_at, the device's async_write_some_at + * function, or any other composed operations that perform writes) until this + * operation completes. Operations are overlapping if the regions defined by + * their offsets, and the numbers of bytes to write, intersect. * * @param d The device to which the data is to be written. The type must support * the AsyncRandomAccessWriteDevice concept. diff --git a/3party/boost/boost/asio/yield.hpp b/3party/boost/boost/asio/yield.hpp index a82a25d77d..beda983eb0 100644 --- a/3party/boost/boost/asio/yield.hpp +++ b/3party/boost/boost/asio/yield.hpp @@ -2,7 +2,7 @@ // yield.hpp // ~~~~~~~~~ // -// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// Copyright (c) 2003-2014 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) diff --git a/3party/boost/boost/assert.hpp b/3party/boost/boost/assert.hpp index a2335058f0..1713d9bb1d 100644 --- a/3party/boost/boost/assert.hpp +++ b/3party/boost/boost/assert.hpp @@ -2,18 +2,19 @@ // boost/assert.hpp - BOOST_ASSERT(expr) // BOOST_ASSERT_MSG(expr, msg) // BOOST_VERIFY(expr) +// BOOST_VERIFY_MSG(expr, msg) // // Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// Copyright (c) 2007 Peter Dimov +// Copyright (c) 2007, 2014 Peter Dimov // Copyright (c) Beman Dawes 2011 // -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt // // Note: There are no include guards. This is intentional. // -// See http://www.boost.org/libs/utility/assert.html for documentation. +// See http://www.boost.org/libs/assert/assert.html for documentation. // // @@ -22,115 +23,56 @@ // boostinspect:naassert_macro // -//--------------------------------------------------------------------------------------// -// BOOST_ASSERT // -//--------------------------------------------------------------------------------------// +// +// BOOST_ASSERT, BOOST_ASSERT_MSG +// #undef BOOST_ASSERT +#undef BOOST_ASSERT_MSG -#if defined(BOOST_DISABLE_ASSERTS) +#if defined(BOOST_DISABLE_ASSERTS) || ( defined(BOOST_ENABLE_ASSERT_DEBUG_HANDLER) && defined(NDEBUG) ) # define BOOST_ASSERT(expr) ((void)0) +# define BOOST_ASSERT_MSG(expr, msg) ((void)0) -#elif defined(BOOST_ENABLE_ASSERT_HANDLER) +#elif defined(BOOST_ENABLE_ASSERT_HANDLER) || ( defined(BOOST_ENABLE_ASSERT_DEBUG_HANDLER) && !defined(NDEBUG) ) +#include // for BOOST_LIKELY #include namespace boost { - void assertion_failed(char const * expr, - char const * function, char const * file, long line); // user defined + void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined + void assertion_failed_msg(char const * expr, char const * msg, char const * function, char const * file, long line); // user defined } // namespace boost -#define BOOST_ASSERT(expr) ((expr) \ - ? ((void)0) \ - : ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) +#define BOOST_ASSERT(expr) (BOOST_LIKELY(!!(expr))? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) +#define BOOST_ASSERT_MSG(expr, msg) (BOOST_LIKELY(!!(expr))? ((void)0): ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) #else + # include // .h to support old libraries w/o - effect is the same + # define BOOST_ASSERT(expr) assert(expr) +# define BOOST_ASSERT_MSG(expr, msg) assert((expr)&&(msg)) + #endif -//--------------------------------------------------------------------------------------// -// BOOST_ASSERT_MSG // -//--------------------------------------------------------------------------------------// - -# undef BOOST_ASSERT_MSG - -#if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG) - - #define BOOST_ASSERT_MSG(expr, msg) ((void)0) - -#elif defined(BOOST_ENABLE_ASSERT_HANDLER) - - #include - - namespace boost - { - void assertion_failed_msg(char const * expr, char const * msg, - char const * function, char const * file, long line); // user defined - } // namespace boost - - #define BOOST_ASSERT_MSG(expr, msg) ((expr) \ - ? ((void)0) \ - : ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) - -#else - #ifndef BOOST_ASSERT_HPP - #define BOOST_ASSERT_HPP - #include - #include - #include - - // IDE's like Visual Studio perform better if output goes to std::cout or - // some other stream, so allow user to configure output stream: - #ifndef BOOST_ASSERT_MSG_OSTREAM - # define BOOST_ASSERT_MSG_OSTREAM std::cerr - #endif - - namespace boost - { - namespace assertion - { - namespace detail - { - inline void assertion_failed_msg(char const * expr, char const * msg, char const * function, - char const * file, long line) - { - BOOST_ASSERT_MSG_OSTREAM - << "***** Internal Program Error - assertion (" << expr << ") failed in " - << function << ":\n" - << file << '(' << line << "): " << msg << std::endl; - #ifdef UNDER_CE - // The Windows CE CRT library does not have abort() so use exit(-1) instead. - std::exit(-1); - #else - std::abort(); - #endif - } - } // detail - } // assertion - } // detail - #endif - - #define BOOST_ASSERT_MSG(expr, msg) ((expr) \ - ? ((void)0) \ - : ::boost::assertion::detail::assertion_failed_msg(#expr, msg, \ - BOOST_CURRENT_FUNCTION, __FILE__, __LINE__)) -#endif - -//--------------------------------------------------------------------------------------// -// BOOST_VERIFY // -//--------------------------------------------------------------------------------------// +// +// BOOST_VERIFY, BOOST_VERIFY_MSG +// #undef BOOST_VERIFY +#undef BOOST_VERIFY_MSG #if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) ) # define BOOST_VERIFY(expr) ((void)(expr)) +# define BOOST_VERIFY_MSG(expr, msg) ((void)(expr)) #else # define BOOST_VERIFY(expr) BOOST_ASSERT(expr) +# define BOOST_VERIFY_MSG(expr, msg) BOOST_ASSERT_MSG(expr,msg) #endif diff --git a/3party/boost/boost/assign.hpp b/3party/boost/boost/assign.hpp index d74a56601c..fffb7ecee1 100644 --- a/3party/boost/boost/assign.hpp +++ b/3party/boost/boost/assign.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_HPP #define BOOST_ASSIGN_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/assignment_exception.hpp b/3party/boost/boost/assign/assignment_exception.hpp index 5079c3a82d..96ea41741c 100644 --- a/3party/boost/boost/assign/assignment_exception.hpp +++ b/3party/boost/boost/assign/assignment_exception.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_ASSIGNMENT_EXCEPTION_HPP #define BOOST_ASSIGN_ASSIGNMENT_EXCEPTION_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/list_inserter.hpp b/3party/boost/boost/assign/list_inserter.hpp index e67a3c5f5a..46d572c51d 100644 --- a/3party/boost/boost/assign/list_inserter.hpp +++ b/3party/boost/boost/assign/list_inserter.hpp @@ -11,7 +11,7 @@ #ifndef BOOST_ASSIGN_LIST_INSERTER_HPP #define BOOST_ASSIGN_LIST_INSERTER_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/list_of.hpp b/3party/boost/boost/assign/list_of.hpp index 6da444bf5e..5b995fdda6 100644 --- a/3party/boost/boost/assign/list_of.hpp +++ b/3party/boost/boost/assign/list_of.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_LIST_OF_HPP #define BOOST_ASSIGN_LIST_OF_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/ptr_list_inserter.hpp b/3party/boost/boost/assign/ptr_list_inserter.hpp index c2ac3d8bcb..20741f2c9c 100644 --- a/3party/boost/boost/assign/ptr_list_inserter.hpp +++ b/3party/boost/boost/assign/ptr_list_inserter.hpp @@ -11,7 +11,7 @@ #ifndef BOOST_ASSIGN_PTR_LIST_INSERTER_HPP #define BOOST_ASSIGN_PTR_LIST_INSERTER_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/ptr_list_of.hpp b/3party/boost/boost/assign/ptr_list_of.hpp index 3055ce791b..0ea6cd208b 100644 --- a/3party/boost/boost/assign/ptr_list_of.hpp +++ b/3party/boost/boost/assign/ptr_list_of.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_PTR_LIST_OF_HPP #define BOOST_ASSIGN_PTR_LIST_OF_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/ptr_map_inserter.hpp b/3party/boost/boost/assign/ptr_map_inserter.hpp index c45aeb8351..fb180f28fd 100644 --- a/3party/boost/boost/assign/ptr_map_inserter.hpp +++ b/3party/boost/boost/assign/ptr_map_inserter.hpp @@ -11,7 +11,7 @@ #ifndef BOOST_ASSIGN_PTR_CONTAINER_PTR_MAP_INSERTER_HPP #define BOOST_ASSIGN_PTR_CONTAINER_PTR_MAP_INSERTER_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std.hpp b/3party/boost/boost/assign/std.hpp index 2cdec96f6e..302ff6a0b5 100644 --- a/3party/boost/boost/assign/std.hpp +++ b/3party/boost/boost/assign/std.hpp @@ -11,7 +11,7 @@ #ifndef BOOST_ASSIGN_STD_HPP #define BOOST_ASSIGN_STD_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std/deque.hpp b/3party/boost/boost/assign/std/deque.hpp index 3546a0fc78..f808b70ca3 100644 --- a/3party/boost/boost/assign/std/deque.hpp +++ b/3party/boost/boost/assign/std/deque.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_STD_DEQUE_HPP #define BOOST_ASSIGN_STD_DEQUE_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std/list.hpp b/3party/boost/boost/assign/std/list.hpp index 2404b04663..439006da59 100644 --- a/3party/boost/boost/assign/std/list.hpp +++ b/3party/boost/boost/assign/std/list.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_STD_LIST_HPP #define BOOST_ASSIGN_STD_LIST_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std/map.hpp b/3party/boost/boost/assign/std/map.hpp index 4937492c86..2476a1d96b 100644 --- a/3party/boost/boost/assign/std/map.hpp +++ b/3party/boost/boost/assign/std/map.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_STD_MAP_HPP #define BOOST_ASSIGN_STD_MAP_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std/queue.hpp b/3party/boost/boost/assign/std/queue.hpp index a9dea3955d..d6023e8a12 100644 --- a/3party/boost/boost/assign/std/queue.hpp +++ b/3party/boost/boost/assign/std/queue.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_STD_QUEUE_HPP #define BOOST_ASSIGN_STD_QUEUE_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std/set.hpp b/3party/boost/boost/assign/std/set.hpp index 9ad79ef73a..e4d5ee2f86 100644 --- a/3party/boost/boost/assign/std/set.hpp +++ b/3party/boost/boost/assign/std/set.hpp @@ -12,7 +12,7 @@ #ifndef BOOST_ASSIGN_STD_SET_HPP #define BOOST_ASSIGN_STD_SET_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std/slist.hpp b/3party/boost/boost/assign/std/slist.hpp index 6e20f78a82..0704b238ce 100644 --- a/3party/boost/boost/assign/std/slist.hpp +++ b/3party/boost/boost/assign/std/slist.hpp @@ -14,7 +14,7 @@ #include #ifdef BOOST_HAS_SLIST -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std/stack.hpp b/3party/boost/boost/assign/std/stack.hpp index 89f58d9614..e528f169b1 100644 --- a/3party/boost/boost/assign/std/stack.hpp +++ b/3party/boost/boost/assign/std/stack.hpp @@ -11,7 +11,7 @@ #ifndef BOOST_ASSIGN_STD_STACK_HPP #define BOOST_ASSIGN_STD_STACK_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/assign/std/vector.hpp b/3party/boost/boost/assign/std/vector.hpp index e9f3b7981e..8861de9b43 100644 --- a/3party/boost/boost/assign/std/vector.hpp +++ b/3party/boost/boost/assign/std/vector.hpp @@ -11,7 +11,7 @@ #ifndef BOOST_ASSIGN_STD_VECTOR_HPP #define BOOST_ASSIGN_STD_VECTOR_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/atomic.hpp b/3party/boost/boost/atomic.hpp index 0f5883c387..cc28b1ab5e 100644 --- a/3party/boost/boost/atomic.hpp +++ b/3party/boost/boost/atomic.hpp @@ -11,7 +11,7 @@ #include -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE +#ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif diff --git a/3party/boost/boost/atomic/atomic.hpp b/3party/boost/boost/atomic/atomic.hpp index 9e1ecbd825..8b0bdd11c1 100644 --- a/3party/boost/boost/atomic/atomic.hpp +++ b/3party/boost/boost/atomic/atomic.hpp @@ -1,241 +1,93 @@ -#ifndef BOOST_ATOMIC_ATOMIC_HPP -#define BOOST_ATOMIC_ATOMIC_HPP +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/atomic.hpp + * + * This header contains definition of \c atomic template and \c atomic_flag. + */ -// Copyright (c) 2011 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_ATOMIC_ATOMIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_ATOMIC_HPP_INCLUDED_ -#include -#include +#include +#include +#include +#include +#include -#include - -#include -#include -#include -#include -#if defined(BOOST_MSVC) && BOOST_MSVC < 1400 -#include -#include -#endif - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE +#ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif namespace boost { -#ifndef BOOST_ATOMIC_CHAR_LOCK_FREE -#define BOOST_ATOMIC_CHAR_LOCK_FREE 0 -#endif +using atomics::atomic; -#ifndef BOOST_ATOMIC_CHAR16_T_LOCK_FREE -#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 0 -#endif - -#ifndef BOOST_ATOMIC_CHAR32_T_LOCK_FREE -#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 0 -#endif - -#ifndef BOOST_ATOMIC_WCHAR_T_LOCK_FREE -#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0 -#endif - -#ifndef BOOST_ATOMIC_SHORT_LOCK_FREE -#define BOOST_ATOMIC_SHORT_LOCK_FREE 0 -#endif - -#ifndef BOOST_ATOMIC_INT_LOCK_FREE -#define BOOST_ATOMIC_INT_LOCK_FREE 0 -#endif - -#ifndef BOOST_ATOMIC_LONG_LOCK_FREE -#define BOOST_ATOMIC_LONG_LOCK_FREE 0 -#endif - -#ifndef BOOST_ATOMIC_LLONG_LOCK_FREE -#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 -#endif - -#ifndef BOOST_ATOMIC_POINTER_LOCK_FREE -#define BOOST_ATOMIC_POINTER_LOCK_FREE 0 -#endif - -#define BOOST_ATOMIC_ADDRESS_LOCK_FREE BOOST_ATOMIC_POINTER_LOCK_FREE - -#ifndef BOOST_ATOMIC_BOOL_LOCK_FREE -#define BOOST_ATOMIC_BOOL_LOCK_FREE 0 -#endif - -#ifndef BOOST_ATOMIC_THREAD_FENCE -#define BOOST_ATOMIC_THREAD_FENCE 0 -inline void atomic_thread_fence(memory_order) -{ -} -#endif - -#ifndef BOOST_ATOMIC_SIGNAL_FENCE -#define BOOST_ATOMIC_SIGNAL_FENCE 0 -inline void atomic_signal_fence(memory_order order) -{ - atomic_thread_fence(order); -} -#endif - -template -class atomic : - public atomics::detail::base_atomic< - T, - typename atomics::detail::classify::type, - atomics::detail::storage_size_of::value, -#if !defined(BOOST_MSVC) || BOOST_MSVC >= 1400 - boost::is_signed::value -#else - // MSVC 2003 has problems instantiating is_signed on non-integral types - mpl::and_< boost::is_integral, boost::is_signed >::value -#endif - > -{ -private: - typedef T value_type; - typedef atomics::detail::base_atomic< - T, - typename atomics::detail::classify::type, - atomics::detail::storage_size_of::value, -#if !defined(BOOST_MSVC) || BOOST_MSVC >= 1400 - boost::is_signed::value -#else - // MSVC 2003 has problems instantiating is_signed on non-itegral types - mpl::and_< boost::is_integral, boost::is_signed >::value -#endif - > super; -public: - atomic(void) BOOST_NOEXCEPT : super() {} - BOOST_CONSTEXPR atomic(value_type v) BOOST_NOEXCEPT : super(v) {} - - value_type operator=(value_type v) volatile BOOST_NOEXCEPT - { - this->store(v); - return v; - } - - operator value_type(void) volatile const BOOST_NOEXCEPT - { - return this->load(); - } - -#ifdef BOOST_NO_CXX11_DELETED_FUNCTIONS -private: - atomic(const atomic &) /* =delete */ ; - atomic & operator=(const atomic &) volatile /* =delete */ ; -#else - atomic(const atomic &) = delete; - atomic & operator=(const atomic &) volatile = delete; -#endif -}; - -typedef atomic atomic_char; -typedef atomic atomic_uchar; -typedef atomic atomic_schar; -typedef atomic atomic_uint8_t; -typedef atomic atomic_int8_t; -typedef atomic atomic_ushort; -typedef atomic atomic_short; -typedef atomic atomic_uint16_t; -typedef atomic atomic_int16_t; -typedef atomic atomic_uint; -typedef atomic atomic_int; -typedef atomic atomic_uint32_t; -typedef atomic atomic_int32_t; -typedef atomic atomic_ulong; -typedef atomic atomic_long; -typedef atomic atomic_uint64_t; -typedef atomic atomic_int64_t; +using atomics::atomic_char; +using atomics::atomic_uchar; +using atomics::atomic_schar; +using atomics::atomic_uint8_t; +using atomics::atomic_int8_t; +using atomics::atomic_ushort; +using atomics::atomic_short; +using atomics::atomic_uint16_t; +using atomics::atomic_int16_t; +using atomics::atomic_uint; +using atomics::atomic_int; +using atomics::atomic_uint32_t; +using atomics::atomic_int32_t; +using atomics::atomic_ulong; +using atomics::atomic_long; +using atomics::atomic_uint64_t; +using atomics::atomic_int64_t; #ifdef BOOST_HAS_LONG_LONG -typedef atomic atomic_ullong; -typedef atomic atomic_llong; +using atomics::atomic_ullong; +using atomics::atomic_llong; #endif -typedef atomic atomic_address; -typedef atomic atomic_bool; -typedef atomic atomic_wchar_t; +using atomics::atomic_address; +using atomics::atomic_bool; +using atomics::atomic_wchar_t; #if !defined(BOOST_NO_CXX11_CHAR16_T) -typedef atomic atomic_char16_t; +using atomics::atomic_char16_t; #endif #if !defined(BOOST_NO_CXX11_CHAR32_T) -typedef atomic atomic_char32_t; +using atomics::atomic_char32_t; #endif -typedef atomic atomic_int_least8_t; -typedef atomic atomic_uint_least8_t; -typedef atomic atomic_int_least16_t; -typedef atomic atomic_uint_least16_t; -typedef atomic atomic_int_least32_t; -typedef atomic atomic_uint_least32_t; -typedef atomic atomic_int_least64_t; -typedef atomic atomic_uint_least64_t; -typedef atomic atomic_int_fast8_t; -typedef atomic atomic_uint_fast8_t; -typedef atomic atomic_int_fast16_t; -typedef atomic atomic_uint_fast16_t; -typedef atomic atomic_int_fast32_t; -typedef atomic atomic_uint_fast32_t; -typedef atomic atomic_int_fast64_t; -typedef atomic atomic_uint_fast64_t; -typedef atomic atomic_intmax_t; -typedef atomic atomic_uintmax_t; +using atomics::atomic_int_least8_t; +using atomics::atomic_uint_least8_t; +using atomics::atomic_int_least16_t; +using atomics::atomic_uint_least16_t; +using atomics::atomic_int_least32_t; +using atomics::atomic_uint_least32_t; +using atomics::atomic_int_least64_t; +using atomics::atomic_uint_least64_t; +using atomics::atomic_int_fast8_t; +using atomics::atomic_uint_fast8_t; +using atomics::atomic_int_fast16_t; +using atomics::atomic_uint_fast16_t; +using atomics::atomic_int_fast32_t; +using atomics::atomic_uint_fast32_t; +using atomics::atomic_int_fast64_t; +using atomics::atomic_uint_fast64_t; +using atomics::atomic_intmax_t; +using atomics::atomic_uintmax_t; -typedef atomic atomic_size_t; -typedef atomic atomic_ptrdiff_t; +using atomics::atomic_size_t; +using atomics::atomic_ptrdiff_t; -// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config. -#if !defined(__PGIC__) - -#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \ - || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \ - || defined(__CYGWIN__) \ - || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \ - || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) -typedef atomic atomic_intptr_t; -typedef atomic atomic_uintptr_t; -#elif defined(__GNUC__) || defined(__clang__) -#if defined(__INTPTR_TYPE__) -typedef atomic< __INTPTR_TYPE__ > atomic_intptr_t; -#endif -#if defined(__UINTPTR_TYPE__) -typedef atomic< __UINTPTR_TYPE__ > atomic_uintptr_t; -#endif +#if defined(BOOST_HAS_INTPTR_T) +using atomics::atomic_intptr_t; +using atomics::atomic_uintptr_t; #endif -#endif +} // namespace boost -#ifndef BOOST_ATOMIC_FLAG_LOCK_FREE -#define BOOST_ATOMIC_FLAG_LOCK_FREE 0 -class atomic_flag -{ -public: - BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(false) {} - - bool - test_and_set(memory_order order = memory_order_seq_cst) BOOST_NOEXCEPT - { - return v_.exchange(true, order); - } - - void - clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - v_.store(false, order); - } -private: - atomic_flag(const atomic_flag &) /* = delete */ ; - atomic_flag & operator=(const atomic_flag &) /* = delete */ ; - atomic v_; -}; -#endif - -} - -#endif +#endif // BOOST_ATOMIC_ATOMIC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/atomic_flag.hpp b/3party/boost/boost/atomic/atomic_flag.hpp new file mode 100644 index 0000000000..ac296bcc8e --- /dev/null +++ b/3party/boost/boost/atomic/atomic_flag.hpp @@ -0,0 +1,33 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/atomic_flag.hpp + * + * This header contains definition of \c atomic_flag. + */ + +#ifndef BOOST_ATOMIC_ATOMIC_FLAG_HPP_INCLUDED_ +#define BOOST_ATOMIC_ATOMIC_FLAG_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { + +using atomics::atomic_flag; + +} // namespace boost + +#endif // BOOST_ATOMIC_ATOMIC_FLAG_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/capabilities.hpp b/3party/boost/boost/atomic/capabilities.hpp new file mode 100644 index 0000000000..658dd22546 --- /dev/null +++ b/3party/boost/boost/atomic/capabilities.hpp @@ -0,0 +1,160 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/capabilities.hpp + * + * This header defines feature capabilities macros. + */ + +#ifndef BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_ +#define BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_ + +#include +#include +#include + +#if !defined(BOOST_ATOMIC_EMULATED) +#include BOOST_ATOMIC_DETAIL_HEADER(boost/atomic/detail/caps_) +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#ifndef BOOST_ATOMIC_INT8_LOCK_FREE +#define BOOST_ATOMIC_INT8_LOCK_FREE 0 +#endif + +#ifndef BOOST_ATOMIC_INT16_LOCK_FREE +#define BOOST_ATOMIC_INT16_LOCK_FREE 0 +#endif + +#ifndef BOOST_ATOMIC_INT32_LOCK_FREE +#define BOOST_ATOMIC_INT32_LOCK_FREE 0 +#endif + +#ifndef BOOST_ATOMIC_INT64_LOCK_FREE +#define BOOST_ATOMIC_INT64_LOCK_FREE 0 +#endif + +#ifndef BOOST_ATOMIC_INT128_LOCK_FREE +#define BOOST_ATOMIC_INT128_LOCK_FREE 0 +#endif + + +#ifndef BOOST_ATOMIC_CHAR_LOCK_FREE +#define BOOST_ATOMIC_CHAR_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_CHAR16_T_LOCK_FREE +#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_CHAR32_T_LOCK_FREE +#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_WCHAR_T_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 1 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 2 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 4 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T == 8 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_SHORT_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 1 +#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2 +#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4 +#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8 +#define BOOST_ATOMIC_SHORT_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_SHORT_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_INT_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_INT == 1 +#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2 +#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4 +#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8 +#define BOOST_ATOMIC_INT_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_INT_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_LONG_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 1 +#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2 +#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4 +#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 +#define BOOST_ATOMIC_LONG_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_LONG_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_LLONG_LOCK_FREE +#if BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 1 +#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2 +#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT16_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4 +#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 +#define BOOST_ATOMIC_LLONG_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#else +#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 +#endif +#endif + +#ifndef BOOST_ATOMIC_POINTER_LOCK_FREE +#if (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 8 +#define BOOST_ATOMIC_POINTER_LOCK_FREE BOOST_ATOMIC_INT64_LOCK_FREE +#elif (BOOST_ATOMIC_DETAIL_SIZEOF_POINTER + 0) == 4 +#define BOOST_ATOMIC_POINTER_LOCK_FREE BOOST_ATOMIC_INT32_LOCK_FREE +#else +#define BOOST_ATOMIC_POINTER_LOCK_FREE 0 +#endif +#endif + +#define BOOST_ATOMIC_ADDRESS_LOCK_FREE BOOST_ATOMIC_POINTER_LOCK_FREE + +#ifndef BOOST_ATOMIC_BOOL_LOCK_FREE +#define BOOST_ATOMIC_BOOL_LOCK_FREE BOOST_ATOMIC_INT8_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_FLAG_LOCK_FREE +#define BOOST_ATOMIC_FLAG_LOCK_FREE BOOST_ATOMIC_BOOL_LOCK_FREE +#endif + +#ifndef BOOST_ATOMIC_THREAD_FENCE +#define BOOST_ATOMIC_THREAD_FENCE 0 +#endif + +#ifndef BOOST_ATOMIC_SIGNAL_FENCE +#define BOOST_ATOMIC_SIGNAL_FENCE 0 +#endif + +#endif // BOOST_ATOMIC_CAPABILITIES_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/atomic_flag.hpp b/3party/boost/boost/atomic/detail/atomic_flag.hpp new file mode 100644 index 0000000000..6a6667d8eb --- /dev/null +++ b/3party/boost/boost/atomic/detail/atomic_flag.hpp @@ -0,0 +1,70 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/atomic_flag.hpp + * + * This header contains interface definition of \c atomic_flag. + */ + +#ifndef BOOST_ATOMIC_DETAIL_ATOMIC_FLAG_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_ATOMIC_FLAG_HPP_INCLUDED_ + +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +/* + * IMPLEMENTATION NOTE: All interface functions MUST be declared with BOOST_FORCEINLINE, + * see comment for convert_memory_order_to_gcc in ops_gcc_atomic.hpp. + */ + +namespace boost { +namespace atomics { + +#if defined(BOOST_NO_CXX11_CONSTEXPR) || defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) +#define BOOST_ATOMIC_NO_ATOMIC_FLAG_INIT +#else +#define BOOST_ATOMIC_FLAG_INIT {} +#endif + +struct atomic_flag +{ + typedef atomics::detail::operations< 1u, false > operations; + typedef operations::storage_type storage_type; + + storage_type m_storage; + + BOOST_FORCEINLINE BOOST_CONSTEXPR atomic_flag() BOOST_NOEXCEPT : m_storage(0) + { + } + + BOOST_FORCEINLINE bool test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return operations::test_and_set(m_storage, order); + } + + BOOST_FORCEINLINE void clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + operations::clear(m_storage, order); + } + + BOOST_DELETED_FUNCTION(atomic_flag(atomic_flag const&)) + BOOST_DELETED_FUNCTION(atomic_flag& operator= (atomic_flag const&)) +}; + +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_ATOMIC_FLAG_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/atomic_template.hpp b/3party/boost/boost/atomic/detail/atomic_template.hpp new file mode 100644 index 0000000000..4fd6d79b7d --- /dev/null +++ b/3party/boost/boost/atomic/detail/atomic_template.hpp @@ -0,0 +1,774 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/atomic_template.hpp + * + * This header contains interface definition of \c atomic template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_ATOMIC_TEMPLATE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_ATOMIC_TEMPLATE_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(BOOST_MSVC) +#pragma warning(push) +// 'boost::atomics::atomic' : multiple assignment operators specified +#pragma warning(disable: 4522) +#endif + +/* + * IMPLEMENTATION NOTE: All interface functions MUST be declared with BOOST_FORCEINLINE, + * see comment for convert_memory_order_to_gcc in ops_gcc_atomic.hpp. + */ + +namespace boost { +namespace atomics { +namespace detail { + +BOOST_FORCEINLINE BOOST_CONSTEXPR memory_order deduce_failure_order(memory_order order) BOOST_NOEXCEPT +{ + return order == memory_order_acq_rel ? memory_order_acquire : (order == memory_order_release ? memory_order_relaxed : order); +} + +BOOST_FORCEINLINE BOOST_CONSTEXPR bool cas_failure_order_must_not_be_stronger_than_success_order(memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT +{ + // 15 == (memory_order_seq_cst | memory_order_consume), see memory_order.hpp + // Given the enum values we can test the strength of memory order requirements with this single condition. + return (failure_order & 15u) <= (success_order & 15u); +} + +template< typename T, bool IsInt = boost::is_integral< T >::value > +struct classify +{ + typedef void type; +}; + +template< typename T > +struct classify< T, true > { typedef int type; }; + +template< typename T > +struct classify< T*, false > { typedef void* type; }; + +template< typename T, typename Kind > +class base_atomic; + +//! Implementation for integers +template< typename T > +class base_atomic< T, int > +{ +private: + typedef T value_type; + typedef T difference_type; + typedef atomics::detail::operations< storage_size_of< value_type >::value, boost::is_signed< T >::value > operations; + +protected: + typedef value_type value_arg_type; + +public: + typedef typename operations::storage_type storage_type; + +protected: + storage_type m_storage; + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic(), {}) + BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : m_storage(v) {} + + BOOST_FORCEINLINE void store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + operations::store(m_storage, static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return static_cast< value_type >(operations::load(m_storage, order)); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return static_cast< value_type >(operations::fetch_add(m_storage, static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return static_cast< value_type >(operations::fetch_sub(m_storage, static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return static_cast< value_type >(operations::exchange(m_storage, static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = static_cast< storage_type >(expected); + const bool res = operations::compare_exchange_strong(m_storage, old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = static_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = static_cast< storage_type >(expected); + const bool res = operations::compare_exchange_weak(m_storage, old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = static_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE value_type fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return static_cast< value_type >(operations::fetch_and(m_storage, static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return static_cast< value_type >(operations::fetch_or(m_storage, static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return static_cast< value_type >(operations::fetch_xor(m_storage, static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool is_lock_free() const volatile BOOST_NOEXCEPT + { + return operations::is_lock_free(m_storage); + } + + BOOST_FORCEINLINE value_type operator++(int) volatile BOOST_NOEXCEPT + { + return fetch_add(1); + } + + BOOST_FORCEINLINE value_type operator++() volatile BOOST_NOEXCEPT + { + return fetch_add(1) + 1; + } + + BOOST_FORCEINLINE value_type operator--(int) volatile BOOST_NOEXCEPT + { + return fetch_sub(1); + } + + BOOST_FORCEINLINE value_type operator--() volatile BOOST_NOEXCEPT + { + return fetch_sub(1) - 1; + } + + BOOST_FORCEINLINE value_type operator+=(difference_type v) volatile BOOST_NOEXCEPT + { + return fetch_add(v) + v; + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) volatile BOOST_NOEXCEPT + { + return fetch_sub(v) - v; + } + + BOOST_FORCEINLINE value_type operator&=(value_type v) volatile BOOST_NOEXCEPT + { + return fetch_and(v) & v; + } + + BOOST_FORCEINLINE value_type operator|=(value_type v) volatile BOOST_NOEXCEPT + { + return fetch_or(v) | v; + } + + BOOST_FORCEINLINE value_type operator^=(value_type v) volatile BOOST_NOEXCEPT + { + return fetch_xor(v) ^ v; + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) +}; + +//! Implementation for bool +template< > +class base_atomic< bool, int > +{ +private: + typedef bool value_type; + typedef atomics::detail::operations< storage_size_of< value_type >::value, false > operations; + +protected: + typedef value_type value_arg_type; + +public: + typedef operations::storage_type storage_type; + +protected: + storage_type m_storage; + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic(), {}) + BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : m_storage(v) {} + + BOOST_FORCEINLINE void store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + operations::store(m_storage, static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return !!operations::load(m_storage, order); + } + + BOOST_FORCEINLINE value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return !!operations::exchange(m_storage, static_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = static_cast< storage_type >(expected); + const bool res = operations::compare_exchange_strong(m_storage, old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = !!old_value; + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = static_cast< storage_type >(expected); + const bool res = operations::compare_exchange_weak(m_storage, old_value, static_cast< storage_type >(desired), success_order, failure_order); + expected = !!old_value; + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool is_lock_free() const volatile BOOST_NOEXCEPT + { + return operations::is_lock_free(m_storage); + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) +}; + + +//! Implementation for user-defined types, such as structs and enums +template< typename T > +class base_atomic< T, void > +{ +private: + typedef T value_type; + typedef atomics::detail::operations< storage_size_of< value_type >::value, false > operations; + +protected: + typedef value_type const& value_arg_type; + +public: + typedef typename operations::storage_type storage_type; + +protected: + storage_type m_storage; + +public: + BOOST_FORCEINLINE explicit base_atomic(value_type const& v = value_type()) BOOST_NOEXCEPT : m_storage(atomics::detail::memcpy_cast< storage_type >(v)) + { + } + + BOOST_FORCEINLINE void store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + operations::store(m_storage, atomics::detail::memcpy_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::memcpy_cast< value_type >(operations::load(m_storage, order)); + } + + BOOST_FORCEINLINE value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::memcpy_cast< value_type >(operations::exchange(m_storage, atomics::detail::memcpy_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = atomics::detail::memcpy_cast< storage_type >(expected); + const bool res = operations::compare_exchange_strong(m_storage, old_value, atomics::detail::memcpy_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::memcpy_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = atomics::detail::memcpy_cast< storage_type >(expected); + const bool res = operations::compare_exchange_weak(m_storage, old_value, atomics::detail::memcpy_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::memcpy_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool is_lock_free() const volatile BOOST_NOEXCEPT + { + return operations::is_lock_free(m_storage); + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) +}; + + +//! Implementation for pointers +template< typename T > +class base_atomic< T*, void* > +{ +private: + typedef T* value_type; + typedef std::ptrdiff_t difference_type; + typedef atomics::detail::operations< storage_size_of< value_type >::value, false > operations; + +protected: + typedef value_type value_arg_type; + +public: + typedef typename operations::storage_type storage_type; + +protected: + storage_type m_storage; + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic(), {}) + BOOST_FORCEINLINE explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : m_storage(atomics::detail::union_cast< storage_type >(v)) + { + } + + BOOST_FORCEINLINE void store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + operations::store(m_storage, atomics::detail::union_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::union_cast< value_type >(operations::load(m_storage, order)); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::union_cast< value_type >(operations::fetch_add(m_storage, static_cast< storage_type >(v * sizeof(T)), order)); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::union_cast< value_type >(operations::fetch_sub(m_storage, static_cast< storage_type >(v * sizeof(T)), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::union_cast< value_type >(operations::exchange(m_storage, atomics::detail::union_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = atomics::detail::union_cast< storage_type >(expected); + const bool res = operations::compare_exchange_strong(m_storage, old_value, atomics::detail::union_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::union_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = atomics::detail::union_cast< storage_type >(expected); + const bool res = operations::compare_exchange_weak(m_storage, old_value, atomics::detail::union_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::union_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool is_lock_free() const volatile BOOST_NOEXCEPT + { + return operations::is_lock_free(m_storage); + } + + BOOST_FORCEINLINE value_type operator++(int) volatile BOOST_NOEXCEPT + { + return fetch_add(1); + } + + BOOST_FORCEINLINE value_type operator++() volatile BOOST_NOEXCEPT + { + return fetch_add(1) + 1; + } + + BOOST_FORCEINLINE value_type operator--(int) volatile BOOST_NOEXCEPT + { + return fetch_sub(1); + } + + BOOST_FORCEINLINE value_type operator--() volatile BOOST_NOEXCEPT + { + return fetch_sub(1) - 1; + } + + BOOST_FORCEINLINE value_type operator+=(difference_type v) volatile BOOST_NOEXCEPT + { + return fetch_add(v) + v; + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) volatile BOOST_NOEXCEPT + { + return fetch_sub(v) - v; + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) +}; + + +//! Implementation for void pointers +template< > +class base_atomic< void*, void* > +{ +private: + typedef void* value_type; + typedef std::ptrdiff_t difference_type; + typedef atomics::detail::operations< storage_size_of< value_type >::value, false > operations; + +protected: + typedef value_type value_arg_type; + +public: + typedef operations::storage_type storage_type; + +protected: + storage_type m_storage; + +public: + BOOST_DEFAULTED_FUNCTION(base_atomic(), {}) + BOOST_FORCEINLINE explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : m_storage(atomics::detail::union_cast< storage_type >(v)) + { + } + + BOOST_FORCEINLINE void store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_consume); + BOOST_ASSERT(order != memory_order_acquire); + BOOST_ASSERT(order != memory_order_acq_rel); + + operations::store(m_storage, atomics::detail::union_cast< storage_type >(v), order); + } + + BOOST_FORCEINLINE value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(order != memory_order_release); + BOOST_ASSERT(order != memory_order_acq_rel); + + return atomics::detail::union_cast< value_type >(operations::load(m_storage, order)); + } + + BOOST_FORCEINLINE value_type fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::union_cast< value_type >(operations::fetch_add(m_storage, static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::union_cast< value_type >(operations::fetch_sub(m_storage, static_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return atomics::detail::union_cast< value_type >(operations::exchange(m_storage, atomics::detail::union_cast< storage_type >(v), order)); + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = atomics::detail::union_cast< storage_type >(expected); + const bool res = operations::compare_exchange_strong(m_storage, old_value, atomics::detail::union_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::union_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_strong(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_strong(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order success_order, memory_order failure_order) volatile BOOST_NOEXCEPT + { + BOOST_ASSERT(failure_order != memory_order_release); + BOOST_ASSERT(failure_order != memory_order_acq_rel); + BOOST_ASSERT(cas_failure_order_must_not_be_stronger_than_success_order(success_order, failure_order)); + + storage_type old_value = atomics::detail::union_cast< storage_type >(expected); + const bool res = operations::compare_exchange_weak(m_storage, old_value, atomics::detail::union_cast< storage_type >(desired), success_order, failure_order); + expected = atomics::detail::union_cast< value_type >(old_value); + return res; + } + + BOOST_FORCEINLINE bool compare_exchange_weak(value_type& expected, value_type desired, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT + { + return compare_exchange_weak(expected, desired, order, atomics::detail::deduce_failure_order(order)); + } + + BOOST_FORCEINLINE bool is_lock_free() const volatile BOOST_NOEXCEPT + { + return operations::is_lock_free(m_storage); + } + + BOOST_FORCEINLINE value_type operator++(int) volatile BOOST_NOEXCEPT + { + return fetch_add(1); + } + + BOOST_FORCEINLINE value_type operator++() volatile BOOST_NOEXCEPT + { + return (char*)fetch_add(1) + 1; + } + + BOOST_FORCEINLINE value_type operator--(int) volatile BOOST_NOEXCEPT + { + return fetch_sub(1); + } + + BOOST_FORCEINLINE value_type operator--() volatile BOOST_NOEXCEPT + { + return (char*)fetch_sub(1) - 1; + } + + BOOST_FORCEINLINE value_type operator+=(difference_type v) volatile BOOST_NOEXCEPT + { + return (char*)fetch_add(v) + v; + } + + BOOST_FORCEINLINE value_type operator-=(difference_type v) volatile BOOST_NOEXCEPT + { + return (char*)fetch_sub(v) - v; + } + + BOOST_DELETED_FUNCTION(base_atomic(base_atomic const&)) + BOOST_DELETED_FUNCTION(base_atomic& operator=(base_atomic const&)) +}; + +} // namespace detail + +template< typename T > +class atomic : + public atomics::detail::base_atomic< T, typename atomics::detail::classify< T >::type > +{ +private: + typedef T value_type; + typedef atomics::detail::base_atomic< T, typename atomics::detail::classify< T >::type > base_type; + typedef typename base_type::value_arg_type value_arg_type; + +public: + typedef typename base_type::storage_type storage_type; + +public: + BOOST_DEFAULTED_FUNCTION(atomic(), BOOST_NOEXCEPT {}) + + // NOTE: The constructor is made explicit because gcc 4.7 complains that + // operator=(value_arg_type) is considered ambiguous with operator=(atomic const&) + // in assignment expressions, even though conversion to atomic<> is less preferred + // than conversion to value_arg_type. + BOOST_FORCEINLINE explicit BOOST_CONSTEXPR atomic(value_arg_type v) BOOST_NOEXCEPT : base_type(v) {} + + BOOST_FORCEINLINE value_type operator= (value_arg_type v) volatile BOOST_NOEXCEPT + { + this->store(v); + return v; + } + + BOOST_FORCEINLINE operator value_type() volatile const BOOST_NOEXCEPT + { + return this->load(); + } + + BOOST_FORCEINLINE storage_type& storage() BOOST_NOEXCEPT { return this->m_storage; } + BOOST_FORCEINLINE storage_type volatile& storage() volatile BOOST_NOEXCEPT { return this->m_storage; } + BOOST_FORCEINLINE storage_type const& storage() const BOOST_NOEXCEPT { return this->m_storage; } + BOOST_FORCEINLINE storage_type const volatile& storage() const volatile BOOST_NOEXCEPT { return this->m_storage; } + + BOOST_DELETED_FUNCTION(atomic(atomic const&)) + BOOST_DELETED_FUNCTION(atomic& operator= (atomic const&)) + BOOST_DELETED_FUNCTION(atomic& operator= (atomic const&) volatile) +}; + +typedef atomic< char > atomic_char; +typedef atomic< unsigned char > atomic_uchar; +typedef atomic< signed char > atomic_schar; +typedef atomic< uint8_t > atomic_uint8_t; +typedef atomic< int8_t > atomic_int8_t; +typedef atomic< unsigned short > atomic_ushort; +typedef atomic< short > atomic_short; +typedef atomic< uint16_t > atomic_uint16_t; +typedef atomic< int16_t > atomic_int16_t; +typedef atomic< unsigned int > atomic_uint; +typedef atomic< int > atomic_int; +typedef atomic< uint32_t > atomic_uint32_t; +typedef atomic< int32_t > atomic_int32_t; +typedef atomic< unsigned long > atomic_ulong; +typedef atomic< long > atomic_long; +typedef atomic< uint64_t > atomic_uint64_t; +typedef atomic< int64_t > atomic_int64_t; +#ifdef BOOST_HAS_LONG_LONG +typedef atomic< boost::ulong_long_type > atomic_ullong; +typedef atomic< boost::long_long_type > atomic_llong; +#endif +typedef atomic< void* > atomic_address; +typedef atomic< bool > atomic_bool; +typedef atomic< wchar_t > atomic_wchar_t; +#if !defined(BOOST_NO_CXX11_CHAR16_T) +typedef atomic< char16_t > atomic_char16_t; +#endif +#if !defined(BOOST_NO_CXX11_CHAR32_T) +typedef atomic< char32_t > atomic_char32_t; +#endif + +typedef atomic< int_least8_t > atomic_int_least8_t; +typedef atomic< uint_least8_t > atomic_uint_least8_t; +typedef atomic< int_least16_t > atomic_int_least16_t; +typedef atomic< uint_least16_t > atomic_uint_least16_t; +typedef atomic< int_least32_t > atomic_int_least32_t; +typedef atomic< uint_least32_t > atomic_uint_least32_t; +typedef atomic< int_least64_t > atomic_int_least64_t; +typedef atomic< uint_least64_t > atomic_uint_least64_t; +typedef atomic< int_fast8_t > atomic_int_fast8_t; +typedef atomic< uint_fast8_t > atomic_uint_fast8_t; +typedef atomic< int_fast16_t > atomic_int_fast16_t; +typedef atomic< uint_fast16_t > atomic_uint_fast16_t; +typedef atomic< int_fast32_t > atomic_int_fast32_t; +typedef atomic< uint_fast32_t > atomic_uint_fast32_t; +typedef atomic< int_fast64_t > atomic_int_fast64_t; +typedef atomic< uint_fast64_t > atomic_uint_fast64_t; +typedef atomic< intmax_t > atomic_intmax_t; +typedef atomic< uintmax_t > atomic_uintmax_t; + +typedef atomic< std::size_t > atomic_size_t; +typedef atomic< std::ptrdiff_t > atomic_ptrdiff_t; + +#if defined(BOOST_HAS_INTPTR_T) +typedef atomic< intptr_t > atomic_intptr_t; +typedef atomic< uintptr_t > atomic_uintptr_t; +#endif + +} // namespace atomics +} // namespace boost + +#if defined(BOOST_MSVC) +#pragma warning(pop) +#endif + +#endif // BOOST_ATOMIC_DETAIL_ATOMIC_TEMPLATE_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/base.hpp b/3party/boost/boost/atomic/detail/base.hpp deleted file mode 100644 index 54dac6045c..0000000000 --- a/3party/boost/boost/atomic/detail/base.hpp +++ /dev/null @@ -1,585 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_BASE_HPP -#define BOOST_ATOMIC_DETAIL_BASE_HPP - -// Copyright (c) 2009 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// Base class definition and fallback implementation. -// To be overridden (through partial specialization) by -// platform implementations. - -#include - -#include -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -#define BOOST_ATOMIC_DECLARE_BASE_OPERATORS \ - bool \ - compare_exchange_strong( \ - value_type & expected, \ - value_type desired, \ - memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT \ - { \ - return compare_exchange_strong(expected, desired, order, calculate_failure_order(order)); \ - } \ - \ - bool \ - compare_exchange_weak( \ - value_type & expected, \ - value_type desired, \ - memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT \ - { \ - return compare_exchange_weak(expected, desired, order, calculate_failure_order(order)); \ - } \ - -#define BOOST_ATOMIC_DECLARE_ADDITIVE_OPERATORS \ - value_type \ - operator++(int) volatile BOOST_NOEXCEPT \ - { \ - return fetch_add(1); \ - } \ - \ - value_type \ - operator++(void) volatile BOOST_NOEXCEPT \ - { \ - return fetch_add(1) + 1; \ - } \ - \ - value_type \ - operator--(int) volatile BOOST_NOEXCEPT \ - { \ - return fetch_sub(1); \ - } \ - \ - value_type \ - operator--(void) volatile BOOST_NOEXCEPT \ - { \ - return fetch_sub(1) - 1; \ - } \ - \ - value_type \ - operator+=(difference_type v) volatile BOOST_NOEXCEPT \ - { \ - return fetch_add(v) + v; \ - } \ - \ - value_type \ - operator-=(difference_type v) volatile BOOST_NOEXCEPT \ - { \ - return fetch_sub(v) - v; \ - } \ - -#define BOOST_ATOMIC_DECLARE_VOID_POINTER_ADDITIVE_OPERATORS \ - value_type \ - operator++(int) volatile BOOST_NOEXCEPT \ - { \ - return fetch_add(1); \ - } \ - \ - value_type \ - operator++(void) volatile BOOST_NOEXCEPT \ - { \ - return (char*)fetch_add(1) + 1; \ - } \ - \ - value_type \ - operator--(int) volatile BOOST_NOEXCEPT \ - { \ - return fetch_sub(1); \ - } \ - \ - value_type \ - operator--(void) volatile BOOST_NOEXCEPT \ - { \ - return (char*)fetch_sub(1) - 1; \ - } \ - \ - value_type \ - operator+=(difference_type v) volatile BOOST_NOEXCEPT \ - { \ - return (char*)fetch_add(v) + v; \ - } \ - \ - value_type \ - operator-=(difference_type v) volatile BOOST_NOEXCEPT \ - { \ - return (char*)fetch_sub(v) - v; \ - } \ - -#define BOOST_ATOMIC_DECLARE_BIT_OPERATORS \ - value_type \ - operator&=(difference_type v) volatile BOOST_NOEXCEPT \ - { \ - return fetch_and(v) & v; \ - } \ - \ - value_type \ - operator|=(difference_type v) volatile BOOST_NOEXCEPT \ - { \ - return fetch_or(v) | v; \ - } \ - \ - value_type \ - operator^=(difference_type v) volatile BOOST_NOEXCEPT\ - { \ - return fetch_xor(v) ^ v; \ - } \ - -#define BOOST_ATOMIC_DECLARE_POINTER_OPERATORS \ - BOOST_ATOMIC_DECLARE_BASE_OPERATORS \ - BOOST_ATOMIC_DECLARE_ADDITIVE_OPERATORS \ - -#define BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS \ - BOOST_ATOMIC_DECLARE_BASE_OPERATORS \ - BOOST_ATOMIC_DECLARE_VOID_POINTER_ADDITIVE_OPERATORS \ - -#define BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS \ - BOOST_ATOMIC_DECLARE_BASE_OPERATORS \ - BOOST_ATOMIC_DECLARE_ADDITIVE_OPERATORS \ - BOOST_ATOMIC_DECLARE_BIT_OPERATORS \ - -namespace boost { -namespace atomics { -namespace detail { - -inline memory_order -calculate_failure_order(memory_order order) -{ - switch(order) { - case memory_order_acq_rel: - return memory_order_acquire; - case memory_order_release: - return memory_order_relaxed; - default: - return order; - } -} - -template -class base_atomic -{ -private: - typedef base_atomic this_type; - typedef T value_type; - typedef lockpool::scoped_lock guard_type; - typedef char storage_type[sizeof(value_type)]; - -public: - base_atomic(void) {} - - BOOST_CONSTEXPR explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(v) - {} - - void - store(value_type const& v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - char * storage = storage_ptr(); - guard_type guard(storage); - - memcpy(storage, &v, sizeof(value_type)); - } - - value_type - load(memory_order /*order*/ = memory_order_seq_cst) volatile const BOOST_NOEXCEPT - { - char * storage = storage_ptr(); - guard_type guard(storage); - - value_type v; - memcpy(&v, storage, sizeof(value_type)); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order /*success_order*/, - memory_order /*failure_order*/) volatile BOOST_NOEXCEPT - { - char * storage = storage_ptr(); - guard_type guard(storage); - - if (memcmp(storage, &expected, sizeof(value_type)) == 0) { - memcpy(storage, &desired, sizeof(value_type)); - return true; - } else { - memcpy(&expected, storage, sizeof(value_type)); - return false; - } - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - exchange(value_type const& v, memory_order /*order*/=memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - char * storage = storage_ptr(); - guard_type guard(storage); - - value_type tmp; - memcpy(&tmp, storage, sizeof(value_type)); - - memcpy(storage, &v, sizeof(value_type)); - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return false; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - char * storage_ptr() volatile const BOOST_NOEXCEPT - { - return const_cast(&reinterpret_cast(v_)); - } - - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - - T v_; -}; - -template -class base_atomic -{ -private: - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef lockpool::scoped_lock guard_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - v_ = v; - } - - value_type - load(memory_order /*order*/ = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type v = const_cast(v_); - return v; - } - - value_type - exchange(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ = v; - return old; - } - - bool - compare_exchange_strong(value_type & expected, value_type desired, - memory_order /*success_order*/, - memory_order /*failure_order*/) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - if (v_ == expected) { - v_ = desired; - return true; - } else { - expected = v_; - return false; - } - } - - bool - compare_exchange_weak(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_add(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ += v; - return old; - } - - value_type - fetch_sub(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ -= v; - return old; - } - - value_type - fetch_and(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ &= v; - return old; - } - - value_type - fetch_or(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ |= v; - return old; - } - - value_type - fetch_xor(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ ^= v; - return old; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return false; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ -private: - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; - typedef lockpool::scoped_lock guard_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - v_ = v; - } - - value_type - load(memory_order /*order*/ = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type v = const_cast(v_); - return v; - } - - value_type - exchange(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ = v; - return old; - } - - bool - compare_exchange_strong(value_type & expected, value_type desired, - memory_order /*success_order*/, - memory_order /*failure_order*/) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - if (v_ == expected) { - v_ = desired; - return true; - } else { - expected = v_; - return false; - } - } - - bool - compare_exchange_weak(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type fetch_add(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ += v; - return old; - } - - value_type fetch_sub(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ -= v; - return old; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return false; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ -private: - typedef base_atomic this_type; - typedef ptrdiff_t difference_type; - typedef void * value_type; - typedef lockpool::scoped_lock guard_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - v_ = v; - } - - value_type - load(memory_order /*order*/ = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type v = const_cast(v_); - return v; - } - - value_type - exchange(value_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - v_ = v; - return old; - } - - bool - compare_exchange_strong(value_type & expected, value_type desired, - memory_order /*success_order*/, - memory_order /*failure_order*/) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - if (v_ == expected) { - v_ = desired; - return true; - } else { - expected = v_; - return false; - } - } - - bool - compare_exchange_weak(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return false; - } - - value_type fetch_add(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - char * cv = reinterpret_cast(old); - cv += v; - v_ = cv; - return old; - } - - value_type fetch_sub(difference_type v, memory_order /*order*/ = memory_order_seq_cst) volatile - { - guard_type guard(const_cast(&v_)); - - value_type old = v_; - char * cv = reinterpret_cast(old); - cv -= v; - v_ = cv; - return old; - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS - -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -} -} -} - -#endif diff --git a/3party/boost/boost/atomic/detail/caps_gcc_alpha.hpp b/3party/boost/boost/atomic/detail/caps_gcc_alpha.hpp new file mode 100644 index 0000000000..861432f58a --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_gcc_alpha.hpp @@ -0,0 +1,34 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_alpha.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_ALPHA_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_ALPHA_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_ALPHA_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_gcc_arm.hpp b/3party/boost/boost/atomic/detail/caps_gcc_arm.hpp new file mode 100644 index 0000000000..b827c648d7 --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_gcc_arm.hpp @@ -0,0 +1,56 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2009 Phil Endecott + * Copyright (c) 2013 Tim Blechmann + * ARM Code by Phil Endecott, based on other architectures. + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_arm.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_ARM_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !(defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__)) +// ARMv7 and later have dmb instruction +#define BOOST_ATOMIC_DETAIL_ARM_HAS_DMB 1 +#endif + +#if !(defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6Z__)) +// ARMv6k and ARMv7 have 8 and 16 ldrex/strex variants +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB 1 +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH 1 +#if !(((defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__)) && defined(__thumb__)) || defined(__ARM_ARCH_7M__)) +// ARMv6k and ARMv7 except ARMv7-M have 64-bit ldrex/strex variants. +// Unfortunately, GCC (at least 4.7.3 on Ubuntu) does not allocate register pairs properly when targeting ARMv6k Thumb, +// which is required for ldrexd/strexd instructions, so we disable 64-bit support. When targeting ARMv6k ARM +// or ARMv7 (both ARM and Thumb 2) it works as expected. +#define BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD 1 +#endif +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_ARM_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_gcc_atomic.hpp b/3party/boost/boost/atomic/detail/caps_gcc_atomic.hpp new file mode 100644 index 0000000000..8299ad0190 --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_gcc_atomic.hpp @@ -0,0 +1,134 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_atomic.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_ATOMIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_ATOMIC_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__i386__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1 +#endif + +#if defined(__x86_64__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 +#endif + +#if __GCC_ATOMIC_BOOL_LOCK_FREE == 2 +#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_FLAG_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_CHAR_LOCK_FREE == 2 +#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_CHAR_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_CHAR16_T_LOCK_FREE == 2 +#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_CHAR32_T_LOCK_FREE == 2 +#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_WCHAR_T_LOCK_FREE == 2 +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_SHORT_LOCK_FREE == 2 +#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_SHORT_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_INT_LOCK_FREE == 2 +#define BOOST_ATOMIC_INT_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_INT_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_LONG_LOCK_FREE == 2 +#define BOOST_ATOMIC_LONG_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_LONG_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_LLONG_LOCK_FREE == 2 +#define BOOST_ATOMIC_LLONG_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 +#endif +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) && (defined(BOOST_HAS_INT128) || !defined(BOOST_NO_ALIGNMENT)) +#define BOOST_ATOMIC_INT128_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_INT128_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_POINTER_LOCK_FREE == 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_POINTER_LOCK_FREE 0 +#endif +#if __GCC_ATOMIC_BOOL_LOCK_FREE == 2 +#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 +#else +#define BOOST_ATOMIC_BOOL_LOCK_FREE 0 +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE BOOST_ATOMIC_CHAR_LOCK_FREE + +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE BOOST_ATOMIC_SHORT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE BOOST_ATOMIC_INT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE BOOST_ATOMIC_LONG_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE BOOST_ATOMIC_LLONG_LOCK_FREE +#else +#define BOOST_ATOMIC_INT16_LOCK_FREE 0 +#endif + +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 4 +#define BOOST_ATOMIC_INT32_LOCK_FREE BOOST_ATOMIC_SHORT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 4 +#define BOOST_ATOMIC_INT32_LOCK_FREE BOOST_ATOMIC_INT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 4 +#define BOOST_ATOMIC_INT32_LOCK_FREE BOOST_ATOMIC_LONG_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 4 +#define BOOST_ATOMIC_INT32_LOCK_FREE BOOST_ATOMIC_LLONG_LOCK_FREE +#else +#define BOOST_ATOMIC_INT32_LOCK_FREE 0 +#endif + +#if BOOST_ATOMIC_DETAIL_SIZEOF_SHORT == 8 +#define BOOST_ATOMIC_INT64_LOCK_FREE BOOST_ATOMIC_SHORT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_INT == 8 +#define BOOST_ATOMIC_INT64_LOCK_FREE BOOST_ATOMIC_INT_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LONG == 8 +#define BOOST_ATOMIC_INT64_LOCK_FREE BOOST_ATOMIC_LONG_LOCK_FREE +#elif BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 +#define BOOST_ATOMIC_INT64_LOCK_FREE BOOST_ATOMIC_LLONG_LOCK_FREE +#else +#define BOOST_ATOMIC_INT64_LOCK_FREE 0 +#endif + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_ATOMIC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_gcc_ppc.hpp b/3party/boost/boost/atomic/detail/caps_gcc_ppc.hpp new file mode 100644 index 0000000000..6dbdde826d --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_gcc_ppc.hpp @@ -0,0 +1,36 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_ppc.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_PPC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_PPC_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#if defined(__powerpc64__) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_PPC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_gcc_sparc.hpp b/3party/boost/boost/atomic/detail/caps_gcc_sparc.hpp new file mode 100644 index 0000000000..5806684926 --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_gcc_sparc.hpp @@ -0,0 +1,34 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2010 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_sparc.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_SPARC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_SPARC_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_SPARC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_gcc_sync.hpp b/3party/boost/boost/atomic/detail/caps_gcc_sync.hpp new file mode 100644 index 0000000000..7fac07a130 --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_gcc_sync.hpp @@ -0,0 +1,62 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_sync.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_SYNC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_SYNC_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__i386__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1 +#endif + +#if defined(__x86_64__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 +#endif + +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#endif +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#endif +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#endif +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)\ + || defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_INT128_LOCK_FREE 2 +#endif + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_SYNC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_gcc_x86.hpp b/3party/boost/boost/atomic/detail/caps_gcc_x86.hpp new file mode 100644 index 0000000000..0696bf1d2f --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_gcc_x86.hpp @@ -0,0 +1,52 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2013 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_gcc_x86.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_GCC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_GCC_X86_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__i386__) &&\ + (\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) ||\ + defined(__i586__) || defined(__i686__) || defined(__pentium4__) || defined(__nocona__) || defined(__core2__) || defined(__corei7__) ||\ + defined(__k6__) || defined(__athlon__) || defined(__k8__) || defined(__amdfam10__) || defined(__bdver1__) || defined(__bdver2__) || defined(__bdver3__) || defined(__btver1__) || defined(__btver2__)\ + ) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1 +#endif + +#if defined(__x86_64__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#if defined(__x86_64__) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) && (defined(BOOST_HAS_INT128) || !defined(BOOST_NO_ALIGNMENT)) +#define BOOST_ATOMIC_INT128_LOCK_FREE 2 +#endif +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_GCC_X86_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_linux_arm.hpp b/3party/boost/boost/atomic/detail/caps_linux_arm.hpp new file mode 100644 index 0000000000..abe6fb81af --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_linux_arm.hpp @@ -0,0 +1,35 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009, 2011 Helge Bahmann + * Copyright (c) 2009 Phil Endecott + * Copyright (c) 2013 Tim Blechmann + * Linux-specific code by Phil Endecott + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_linux_arm.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_LINUX_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_LINUX_ARM_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_LINUX_ARM_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_msvc_arm.hpp b/3party/boost/boost/atomic/detail/caps_msvc_arm.hpp new file mode 100644 index 0000000000..6b3c61fb3e --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_msvc_arm.hpp @@ -0,0 +1,34 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2012 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_msvc_arm.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_MSVC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_MSVC_ARM_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_MSVC_ARM_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_msvc_x86.hpp b/3party/boost/boost/atomic/detail/caps_msvc_x86.hpp new file mode 100644 index 0000000000..5661a5b7ab --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_msvc_x86.hpp @@ -0,0 +1,50 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2012 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_msvc_x86.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_MSVC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_MSVC_X86_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(_M_IX86) && _M_IX86 >= 500 +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1 +#endif + +#if _MSC_VER >= 1500 && defined(_M_AMD64) && !defined(BOOST_ATOMIC_NO_CMPXCHG16B) +#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1 +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 + +#if defined(_M_AMD64) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) +#define BOOST_ATOMIC_INT64_LOCK_FREE 2 +#endif + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) && (defined(BOOST_HAS_INT128) || !defined(BOOST_NO_ALIGNMENT)) +#define BOOST_ATOMIC_INT128_LOCK_FREE 2 +#endif + +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_MSVC_X86_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/caps_windows.hpp b/3party/boost/boost/atomic/detail/caps_windows.hpp new file mode 100644 index 0000000000..1cc0ded833 --- /dev/null +++ b/3party/boost/boost/atomic/detail/caps_windows.hpp @@ -0,0 +1,33 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2012 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/caps_windows.hpp + * + * This header defines feature capabilities macros + */ + +#ifndef BOOST_ATOMIC_DETAIL_CAPS_WINDOWS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CAPS_WINDOWS_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_INT8_LOCK_FREE 2 +#define BOOST_ATOMIC_INT16_LOCK_FREE 2 +#define BOOST_ATOMIC_INT32_LOCK_FREE 2 +#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 + +#define BOOST_ATOMIC_THREAD_FENCE 2 +#define BOOST_ATOMIC_SIGNAL_FENCE 2 + +#endif // BOOST_ATOMIC_DETAIL_CAPS_WINDOWS_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/cas32strong.hpp b/3party/boost/boost/atomic/detail/cas32strong.hpp deleted file mode 100644 index ac66a1294e..0000000000 --- a/3party/boost/boost/atomic/detail/cas32strong.hpp +++ /dev/null @@ -1,885 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_CAS32STRONG_HPP -#define BOOST_ATOMIC_DETAIL_CAS32STRONG_HPP - -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// Copyright (c) 2011 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann - - -// Build 8-, 16- and 32-bit atomic operations from -// a platform_cmpxchg32_strong primitive. - -#include -#include -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -namespace boost { -namespace atomics { -namespace detail { - -/* integral types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - storage_type expected_s = (storage_type) expected; - storage_type desired_s = (storage_type) desired; - - bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - expected = (value_type) expected_s; - } - - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - storage_type expected_s = (storage_type) expected; - storage_type desired_s = (storage_type) desired; - - bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - expected = (value_type) expected_s; - } - - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg32_strong(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -/* pointer types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef void * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg32_strong(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, (char*)original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, (char*)original - v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile - { - return true; - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg32_strong(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -/* generic types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) ) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before_store(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) ) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) ) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) ) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - platform_fence_before(success_order); - bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - } - - return success; - } - - bool - is_lock_free(void) const volatile - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) ) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before_store(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) ) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - platform_fence_before(success_order); - bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - } - - return success; - } - - bool - is_lock_free(void) const volatile - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before_store(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - platform_fence_before(success_order); - bool success = platform_cmpxchg32_strong(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - } - - return success; - } - - bool - is_lock_free(void) const volatile - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -} -} -} - -#endif diff --git a/3party/boost/boost/atomic/detail/cas32weak.hpp b/3party/boost/boost/atomic/detail/cas32weak.hpp deleted file mode 100644 index de2314c79d..0000000000 --- a/3party/boost/boost/atomic/detail/cas32weak.hpp +++ /dev/null @@ -1,947 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_CAS32WEAK_HPP -#define BOOST_ATOMIC_DETAIL_CAS32WEAK_HPP - -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// Copyright (c) 2011 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann - - -#include -#include -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -namespace boost { -namespace atomics { -namespace detail { - -/* integral types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - storage_type expected_s = (storage_type) expected; - storage_type desired_s = (storage_type) desired; - - bool success = platform_cmpxchg32(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - expected = (value_type) expected_s; - } - - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - for(;;) { - value_type tmp = expected; - if (compare_exchange_weak(tmp, desired, success_order, failure_order)) - return true; - if (tmp != expected) { - expected = tmp; - return false; - } - } - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - storage_type expected_s = (storage_type) expected; - storage_type desired_s = (storage_type) desired; - - bool success = platform_cmpxchg32(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - expected = (value_type) expected_s; - } - - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - for(;;) { - value_type tmp = expected; - if (compare_exchange_weak(tmp, desired, success_order, failure_order)) - return true; - if (tmp != expected) { - expected = tmp; - return false; - } - } - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg32(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - for(;;) { - value_type tmp = expected; - if (compare_exchange_weak(tmp, desired, success_order, failure_order)) - return true; - if (tmp != expected) { - expected = tmp; - return false; - } - } - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -/* pointer types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef void * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg32(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - for(;;) { - value_type tmp = expected; - if (compare_exchange_weak(tmp, desired, success_order, failure_order)) - return true; - if (tmp != expected) { - expected = tmp; - return false; - } - } - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, (char*)original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, (char*)original - v, order, memory_order_relaxed)); - return original; - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg32(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - for(;;) { - value_type tmp = expected; - if (compare_exchange_weak(tmp, desired, success_order, failure_order)) - return true; - if (tmp != expected) { - expected = tmp; - return false; - } - } - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -/* generic types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before_store(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - platform_fence_before(success_order); - - bool success = platform_cmpxchg32(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - } - - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - for(;;) { - value_type tmp = expected; - if (compare_exchange_weak(tmp, desired, success_order, failure_order)) - return true; - if (tmp != expected) { - expected = tmp; - return false; - } - } - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before_store(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - platform_fence_before(success_order); - - bool success = platform_cmpxchg32(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - } - - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - for(;;) { - value_type tmp = expected; - if (compare_exchange_weak(tmp, desired, success_order, failure_order)) - return true; - if (tmp != expected) { - expected = tmp; - return false; - } - } - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before_store(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - platform_fence_before(success_order); - - bool success = platform_cmpxchg32(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - } - - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - for(;;) { - value_type tmp = expected; - if (compare_exchange_weak(tmp, desired, success_order, failure_order)) - return true; - if (tmp != expected) { - expected = tmp; - return false; - } - } - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -} -} -} - -#endif diff --git a/3party/boost/boost/atomic/detail/cas64strong.hpp b/3party/boost/boost/atomic/detail/cas64strong.hpp deleted file mode 100644 index 0a5002b376..0000000000 --- a/3party/boost/boost/atomic/detail/cas64strong.hpp +++ /dev/null @@ -1,443 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_CAS64STRONG_HPP -#define BOOST_ATOMIC_DETAIL_CAS64STRONG_HPP - -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// Copyright (c) 2011 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann - -// Build 64-bit atomic operation from platform_cmpxchg64_strong -// primitive. It is assumed that 64-bit loads/stores are not -// atomic, so they are funnelled through cmpxchg as well. - -#include -#include -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -namespace boost { -namespace atomics { -namespace detail { - -/* integral types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - platform_store64(v, &v_); - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = platform_load64(&v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg64_strong(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original & v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original | v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original ^ v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -/* pointer types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef void * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - platform_store64(v, &v_); - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = platform_load64(&v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg64_strong(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, (char*)original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, (char*)original - v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before_store(order); - platform_store64(v, &v_); - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = platform_load64(&v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - - bool success = platform_cmpxchg64_strong(expected, desired, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - } - - return success; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original + v, order, memory_order_relaxed)); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, original - v, order, memory_order_relaxed)); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -/* generic types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint64_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& value, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type value_s = 0; - memcpy(&value_s, &value, sizeof(value_type)); - platform_fence_before_store(order); - platform_store64(value_s, &v_); - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type value_s = platform_load64(&v_); - platform_fence_after_load(order); - value_type value; - memcpy(&value, &value_s, sizeof(value_type)); - return value; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original = load(memory_order_relaxed); - do { - } while (!compare_exchange_weak(original, v, order, memory_order_relaxed)); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - platform_fence_before(success_order); - bool success = platform_cmpxchg64_strong(expected_s, desired_s, &v_); - - if (success) { - platform_fence_after(success_order); - } else { - platform_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - } - - return success; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -} -} -} - -#endif diff --git a/3party/boost/boost/atomic/detail/casts.hpp b/3party/boost/boost/atomic/detail/casts.hpp new file mode 100644 index 0000000000..db28bc25ff --- /dev/null +++ b/3party/boost/boost/atomic/detail/casts.hpp @@ -0,0 +1,64 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2013 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/casts.hpp + * + * This header defines \c union_cast and \c memcpy_cast used to convert between storage and value types + */ + +#ifndef BOOST_ATOMIC_DETAIL_CASTS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CASTS_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename To, typename From > +BOOST_FORCEINLINE To union_cast(From const& from) BOOST_NOEXCEPT +{ + union + { + To as_to; + From as_from; + } + caster = {}; + caster.as_from = from; + return caster.as_to; +} + +template< typename To, typename From > +BOOST_FORCEINLINE To memcpy_cast(From const& from) BOOST_NOEXCEPT +{ + struct + { + To to; + } + value = {}; + std::memcpy + ( + &reinterpret_cast< char& >(value.to), + &reinterpret_cast< const char& >(from), + (sizeof(From) < sizeof(To) ? sizeof(From) : sizeof(To)) + ); + return value.to; +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_CASTS_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/config.hpp b/3party/boost/boost/atomic/detail/config.hpp index 979bdd8f98..d03ec6aec6 100644 --- a/3party/boost/boost/atomic/detail/config.hpp +++ b/3party/boost/boost/atomic/detail/config.hpp @@ -1,54 +1,24 @@ -#ifndef BOOST_ATOMIC_DETAIL_CONFIG_HPP -#define BOOST_ATOMIC_DETAIL_CONFIG_HPP +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2012 Hartmut Kaiser + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/config.hpp + * + * This header defines configuraion macros for Boost.Atomic + */ -// Copyright (c) 2012 Hartmut Kaiser -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_ATOMIC_DETAIL_CONFIG_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_CONFIG_HPP_INCLUDED_ #include -#if (defined(_MSC_VER) && (_MSC_VER >= 1020)) || defined(__GNUC__) || defined(BOOST_CLANG) || defined(BOOST_INTEL) || defined(__COMO__) || defined(__DMC__) -#define BOOST_ATOMIC_HAS_PRAGMA_ONCE -#endif - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE +#ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif -/////////////////////////////////////////////////////////////////////////////// -// Set up dll import/export options -#if (defined(BOOST_ATOMIC_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && \ - !defined(BOOST_ATOMIC_STATIC_LINK) - -#if defined(BOOST_ATOMIC_SOURCE) -#define BOOST_ATOMIC_DECL BOOST_SYMBOL_EXPORT -#define BOOST_ATOMIC_BUILD_DLL -#else -#define BOOST_ATOMIC_DECL BOOST_SYMBOL_IMPORT -#endif - -#endif // building a shared library - -#ifndef BOOST_ATOMIC_DECL -#define BOOST_ATOMIC_DECL -#endif - -/////////////////////////////////////////////////////////////////////////////// -// Auto library naming -#if !defined(BOOST_ATOMIC_SOURCE) && !defined(BOOST_ALL_NO_LIB) && \ - !defined(BOOST_ATOMIC_NO_LIB) - -#define BOOST_LIB_NAME boost_atomic - -// tell the auto-link code to select a dll when required: -#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_ATOMIC_DYN_LINK) -#define BOOST_DYN_LINK -#endif - -#include - -#endif // auto-linking disabled - -#endif +#endif // BOOST_ATOMIC_DETAIL_CONFIG_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/gcc-alpha.hpp b/3party/boost/boost/atomic/detail/gcc-alpha.hpp deleted file mode 100644 index 360a9db367..0000000000 --- a/3party/boost/boost/atomic/detail/gcc-alpha.hpp +++ /dev/null @@ -1,368 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_GCC_ALPHA_HPP -#define BOOST_ATOMIC_DETAIL_GCC_ALPHA_HPP - -// Copyright (c) 2009 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -/* - Refer to http://h71000.www7.hp.com/doc/82final/5601/5601pro_004.html - (HP OpenVMS systems documentation) and the alpha reference manual. - */ - -/* - NB: The most natural thing would be to write the increment/decrement - operators along the following lines: - - __asm__ __volatile__( - "1: ldl_l %0,%1 \n" - "addl %0,1,%0 \n" - "stl_c %0,%1 \n" - "beq %0,1b\n" - : "=&b" (tmp) - : "m" (value) - : "cc" - ); - - However according to the comments on the HP website and matching - comments in the Linux kernel sources this defies branch prediction, - as the cpu assumes that backward branches are always taken; so - instead copy the trick from the Linux kernel, introduce a forward - branch and back again. - - I have, however, had a hard time measuring the difference between - the two versions in microbenchmarks -- I am leaving it in nevertheless - as it apparently does not hurt either. -*/ - -namespace boost { -namespace atomics { -namespace detail { - -inline void fence_before(memory_order order) -{ - switch(order) { - case memory_order_consume: - case memory_order_release: - case memory_order_acq_rel: - case memory_order_seq_cst: - __asm__ __volatile__ ("mb" ::: "memory"); - default:; - } -} - -inline void fence_after(memory_order order) -{ - switch(order) { - case memory_order_acquire: - case memory_order_acq_rel: - case memory_order_seq_cst: - __asm__ __volatile__ ("mb" ::: "memory"); - default:; - } -} - -template<> -inline void platform_atomic_thread_fence(memory_order order) -{ - switch(order) { - case memory_order_acquire: - case memory_order_consume: - case memory_order_release: - case memory_order_acq_rel: - case memory_order_seq_cst: - __asm__ __volatile__ ("mb" ::: "memory"); - default:; - } -} - -template -class atomic_alpha_32 -{ -public: - typedef T integral_type; - BOOST_CONSTEXPR atomic_alpha_32(T v) BOOST_NOEXCEPT: i(v) {} - atomic_alpha_32() {} - T load(memory_order order=memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - T v=*reinterpret_cast(&i); - fence_after(order); - return v; - } - void store(T v, memory_order order=memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - fence_before(order); - *reinterpret_cast(&i)=(int)v; - } - bool compare_exchange_weak( - T &expected, - T desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - fence_before(success_order); - int current, success; - __asm__ __volatile__( - "1: ldl_l %2, %4\n" - "cmpeq %2, %0, %3\n" - "mov %2, %0\n" - "beq %3, 3f\n" - "stl_c %1, %4\n" - "2:\n" - - ".subsection 2\n" - "3: mov %3, %1\n" - "br 2b\n" - ".previous\n" - - : "+&r" (expected), "+&r" (desired), "=&r"(current), "=&r"(success) - : "m" (i) - : - ); - if (desired) fence_after(success_order); - else fence_after(failure_order); - return desired; - } - - bool is_lock_free(void) const volatile BOOST_NOEXCEPT {return true;} -protected: - inline T fetch_add_var(T c, memory_order order) volatile BOOST_NOEXCEPT - { - fence_before(order); - T original, modified; - __asm__ __volatile__( - "1: ldl_l %0, %2\n" - "addl %0, %3, %1\n" - "stl_c %1, %2\n" - "beq %1, 2f\n" - - ".subsection 2\n" - "2: br 1b\n" - ".previous\n" - - : "=&r" (original), "=&r" (modified) - : "m" (i), "r" (c) - : - ); - fence_after(order); - return original; - } - inline T fetch_inc(memory_order order) volatile BOOST_NOEXCEPT - { - fence_before(order); - int original, modified; - __asm__ __volatile__( - "1: ldl_l %0, %2\n" - "addl %0, 1, %1\n" - "stl_c %1, %2\n" - "beq %1, 2f\n" - - ".subsection 2\n" - "2: br 1b\n" - ".previous\n" - - : "=&r" (original), "=&r" (modified) - : "m" (i) - : - ); - fence_after(order); - return original; - } - inline T fetch_dec(memory_order order) volatile BOOST_NOEXCEPT - { - fence_before(order); - int original, modified; - __asm__ __volatile__( - "1: ldl_l %0, %2\n" - "subl %0, 1, %1\n" - "stl_c %1, %2\n" - "beq %1, 2f\n" - - ".subsection 2\n" - "2: br 1b\n" - ".previous\n" - - : "=&r" (original), "=&r" (modified) - : "m" (i) - : - ); - fence_after(order); - return original; - } -private: - T i; -}; - -template -class atomic_alpha_64 -{ -public: - typedef T integral_type; - BOOST_CONSTEXPR atomic_alpha_64(T v) BOOST_NOEXCEPT: i(v) {} - atomic_alpha_64() {} - T load(memory_order order=memory_order_seq_cst) const volatile - { - T v=*reinterpret_cast(&i); - fence_after(order); - return v; - } - void store(T v, memory_order order=memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - fence_before(order); - *reinterpret_cast(&i)=v; - } - bool compare_exchange_weak( - T &expected, - T desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - fence_before(success_order); - int current, success; - __asm__ __volatile__( - "1: ldq_l %2, %4\n" - "cmpeq %2, %0, %3\n" - "mov %2, %0\n" - "beq %3, 3f\n" - "stq_c %1, %4\n" - "2:\n" - - ".subsection 2\n" - "3: mov %3, %1\n" - "br 2b\n" - ".previous\n" - - : "+&r" (expected), "+&r" (desired), "=&r"(current), "=&r"(success) - : "m" (i) - : - ); - if (desired) fence_after(success_order); - else fence_after(failure_order); - return desired; - } - - bool is_lock_free(void) const volatile BOOST_NOEXCEPT {return true;} -protected: - inline T fetch_add_var(T c, memory_order order) volatile BOOST_NOEXCEPT - { - fence_before(order); - T original, modified; - __asm__ __volatile__( - "1: ldq_l %0, %2\n" - "addq %0, %3, %1\n" - "stq_c %1, %2\n" - "beq %1, 2f\n" - - ".subsection 2\n" - "2: br 1b\n" - ".previous\n" - - : "=&r" (original), "=&r" (modified) - : "m" (i), "r" (c) - : - ); - fence_after(order); - return original; - } - inline T fetch_inc(memory_order order) volatile BOOST_NOEXCEPT - { - fence_before(order); - T original, modified; - __asm__ __volatile__( - "1: ldq_l %0, %2\n" - "addq %0, 1, %1\n" - "stq_c %1, %2\n" - "beq %1, 2f\n" - - ".subsection 2\n" - "2: br 1b\n" - ".previous\n" - - : "=&r" (original), "=&r" (modified) - : "m" (i) - : - ); - fence_after(order); - return original; - } - inline T fetch_dec(memory_order order) volatile BOOST_NOEXCEPT - { - fence_before(order); - T original, modified; - __asm__ __volatile__( - "1: ldq_l %0, %2\n" - "subq %0, 1, %1\n" - "stq_c %1, %2\n" - "beq %1, 2f\n" - - ".subsection 2\n" - "2: br 1b\n" - ".previous\n" - - : "=&r" (original), "=&r" (modified) - : "m" (i) - : - ); - fence_after(order); - return original; - } -private: - T i; -}; - -template -class platform_atomic_integral : - public build_atomic_from_typical > > -{ -public: - typedef build_atomic_from_typical > > super; - BOOST_CONSTEXPR platform_atomic_integral(T v) BOOST_NOEXCEPT: super(v) {} - platform_atomic_integral(void) {} -}; - -template -class platform_atomic_integral : - public build_atomic_from_typical > > -{ -public: - typedef build_atomic_from_typical > > super; - BOOST_CONSTEXPR platform_atomic_integral(T v) BOOST_NOEXCEPT: super(v) {} - platform_atomic_integral(void) {} -}; - -template -class platform_atomic_integral : - public build_atomic_from_larger_type, T> -{ -public: - typedef build_atomic_from_larger_type, T> super; - BOOST_CONSTEXPR platform_atomic_integral(T v) BOOST_NOEXCEPT: super(v) {} - platform_atomic_integral(void) {} -}; - -template -class platform_atomic_integral : - public build_atomic_from_larger_type, T> -{ -public: - typedef build_atomic_from_larger_type, T> super; - BOOST_CONSTEXPR platform_atomic_integral(T v) BOOST_NOEXCEPT: super(v) {} - platform_atomic_integral(void) {} -}; - -} -} -} - -#endif diff --git a/3party/boost/boost/atomic/detail/gcc-armv6plus.hpp b/3party/boost/boost/atomic/detail/gcc-armv6plus.hpp deleted file mode 100644 index c11e5cd8af..0000000000 --- a/3party/boost/boost/atomic/detail/gcc-armv6plus.hpp +++ /dev/null @@ -1,252 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_GCC_ARMV6PLUS_HPP -#define BOOST_ATOMIC_DETAIL_GCC_ARMV6PLUS_HPP - -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// Copyright (c) 2009 Helge Bahmann -// Copyright (c) 2009 Phil Endecott -// Copyright (c) 2013 Tim Blechmann -// ARM Code by Phil Endecott, based on other architectures. - -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -// From the ARM Architecture Reference Manual for architecture v6: -// -// LDREX{} , [] -// Specifies the destination register for the memory word addressed by -// Specifies the register containing the address. -// -// STREX{} , , [] -// Specifies the destination register for the returned status value. -// 0 if the operation updates memory -// 1 if the operation fails to update memory -// Specifies the register containing the word to be stored to memory. -// Specifies the register containing the address. -// Rd must not be the same register as Rm or Rn. -// -// ARM v7 is like ARM v6 plus: -// There are half-word and byte versions of the LDREX and STREX instructions, -// LDREXH, LDREXB, STREXH and STREXB. -// There are also double-word versions, LDREXD and STREXD. -// (Actually it looks like these are available from version 6k onwards.) -// FIXME these are not yet used; should be mostly a matter of copy-and-paste. -// I think you can supply an immediate offset to the address. -// -// A memory barrier is effected using a "co-processor 15" instruction, -// though a separate assembler mnemonic is available for it in v7. - -namespace boost { -namespace atomics { -namespace detail { - -// "Thumb 1" is a subset of the ARM instruction set that uses a 16-bit encoding. It -// doesn't include all instructions and in particular it doesn't include the co-processor -// instruction used for the memory barrier or the load-locked/store-conditional -// instructions. So, if we're compiling in "Thumb 1" mode, we need to wrap all of our -// asm blocks with code to temporarily change to ARM mode. -// -// You can only change between ARM and Thumb modes when branching using the bx instruction. -// bx takes an address specified in a register. The least significant bit of the address -// indicates the mode, so 1 is added to indicate that the destination code is Thumb. -// A temporary register is needed for the address and is passed as an argument to these -// macros. It must be one of the "low" registers accessible to Thumb code, specified -// using the "l" attribute in the asm statement. -// -// Architecture v7 introduces "Thumb 2", which does include (almost?) all of the ARM -// instruction set. So in v7 we don't need to change to ARM mode; we can write "universal -// assembler" which will assemble to Thumb 2 or ARM code as appropriate. The only thing -// we need to do to make this "universal" assembler mode work is to insert "IT" instructions -// to annotate the conditional instructions. These are ignored in other modes (e.g. v6), -// so they can always be present. - -#if defined(__thumb__) && !defined(__ARM_ARCH_7A__) -// FIXME also other v7 variants. -#define BOOST_ATOMIC_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 1f\n" "bx " #TMPREG "\n" ".arm\n" ".align 4\n" "1: " -#define BOOST_ATOMIC_ARM_ASM_END(TMPREG) "adr " #TMPREG ", 1f + 1\n" "bx " #TMPREG "\n" ".thumb\n" ".align 2\n" "1: " - -#else -// The tmpreg is wasted in this case, which is non-optimal. -#define BOOST_ATOMIC_ARM_ASM_START(TMPREG) -#define BOOST_ATOMIC_ARM_ASM_END(TMPREG) -#endif - -#if defined(__ARM_ARCH_7A__) -// FIXME ditto. -#define BOOST_ATOMIC_ARM_DMB "dmb\n" -#else -#define BOOST_ATOMIC_ARM_DMB "mcr\tp15, 0, r0, c7, c10, 5\n" -#endif - -inline void -arm_barrier(void) -{ - int brtmp; - __asm__ __volatile__ ( - BOOST_ATOMIC_ARM_ASM_START(%0) - BOOST_ATOMIC_ARM_DMB - BOOST_ATOMIC_ARM_ASM_END(%0) - : "=&l" (brtmp) :: "memory" - ); -} - -inline void -platform_fence_before(memory_order order) -{ - switch(order) { - case memory_order_release: - case memory_order_acq_rel: - case memory_order_seq_cst: - arm_barrier(); - case memory_order_consume: - default:; - } -} - -inline void -platform_fence_after(memory_order order) -{ - switch(order) { - case memory_order_acquire: - case memory_order_acq_rel: - case memory_order_seq_cst: - arm_barrier(); - default:; - } -} - -inline void -platform_fence_before_store(memory_order order) -{ - platform_fence_before(order); -} - -inline void -platform_fence_after_store(memory_order order) -{ - if (order == memory_order_seq_cst) - arm_barrier(); -} - -inline void -platform_fence_after_load(memory_order order) -{ - platform_fence_after(order); -} - -template -inline bool -platform_cmpxchg32(T & expected, T desired, volatile T * ptr) -{ - int success; - int tmp; - __asm__ ( - BOOST_ATOMIC_ARM_ASM_START(%2) - "mov %1, #0\n" // success = 0 - "ldrex %0, %3\n" // expected' = *(&i) - "teq %0, %4\n" // flags = expected'==expected - "ittt eq\n" - "strexeq %2, %5, %3\n" // if (flags.equal) *(&i) = desired, tmp = !OK - "teqeq %2, #0\n" // if (flags.equal) flags = tmp==0 - "moveq %1, #1\n" // if (flags.equal) success = 1 - BOOST_ATOMIC_ARM_ASM_END(%2) - : "=&r" (expected), // %0 - "=&r" (success), // %1 - "=&l" (tmp), // %2 - "+Q" (*ptr) // %3 - : "r" (expected), // %4 - "r" (desired) // %5 - : "cc" - ); - return success; -} - -} -} - -#define BOOST_ATOMIC_THREAD_FENCE 2 -inline void -atomic_thread_fence(memory_order order) -{ - switch(order) { - case memory_order_acquire: - case memory_order_release: - case memory_order_acq_rel: - case memory_order_seq_cst: - atomics::detail::arm_barrier(); - default:; - } -} - -#define BOOST_ATOMIC_SIGNAL_FENCE 2 -inline void -atomic_signal_fence(memory_order) -{ - __asm__ __volatile__ ("" ::: "memory"); -} - -class atomic_flag -{ -private: - atomic_flag(const atomic_flag &) /* = delete */ ; - atomic_flag & operator=(const atomic_flag &) /* = delete */ ; - uint32_t v_; -public: - BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {} - - void - clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before_store(order); - const_cast(v_) = 0; - atomics::detail::platform_fence_after_store(order); - } - - bool - test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before(order); - uint32_t expected = v_; - do { - if (expected == 1) - break; - } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_)); - atomics::detail::platform_fence_after(order); - return expected; - } -}; -#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 - -} - -#undef BOOST_ATOMIC_ARM_ASM_START -#undef BOOST_ATOMIC_ARM_ASM_END - -#include - -#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) - -#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 -#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 -#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 -#define BOOST_ATOMIC_INT_LOCK_FREE 2 -#define BOOST_ATOMIC_LONG_LOCK_FREE 2 -#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 -#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 -#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 - -#include - -#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */ - -#endif - diff --git a/3party/boost/boost/atomic/detail/gcc-cas.hpp b/3party/boost/boost/atomic/detail/gcc-cas.hpp deleted file mode 100644 index 446da37803..0000000000 --- a/3party/boost/boost/atomic/detail/gcc-cas.hpp +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) 2011 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// Use the gnu builtin __sync_val_compare_and_swap to build -// atomic operations for 32 bit and smaller. - -#ifndef BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP -#define BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP - -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -namespace boost { - -#define BOOST_ATOMIC_THREAD_FENCE 2 -inline void -atomic_thread_fence(memory_order order) -{ - switch(order) { - case memory_order_relaxed: - break; - case memory_order_release: - case memory_order_consume: - case memory_order_acquire: - case memory_order_acq_rel: - case memory_order_seq_cst: - __sync_synchronize(); - break; - } -} - -namespace atomics { -namespace detail { - -inline void -platform_fence_before(memory_order) -{ - /* empty, as compare_and_swap is synchronizing already */ -} - -inline void -platform_fence_after(memory_order) -{ - /* empty, as compare_and_swap is synchronizing already */ -} - -inline void -platform_fence_before_store(memory_order order) -{ - switch(order) { - case memory_order_relaxed: - case memory_order_acquire: - case memory_order_consume: - break; - case memory_order_release: - case memory_order_acq_rel: - case memory_order_seq_cst: - __sync_synchronize(); - break; - } -} - -inline void -platform_fence_after_store(memory_order order) -{ - if (order == memory_order_seq_cst) - __sync_synchronize(); -} - -inline void -platform_fence_after_load(memory_order order) -{ - switch(order) { - case memory_order_relaxed: - case memory_order_release: - break; - case memory_order_consume: - case memory_order_acquire: - case memory_order_acq_rel: - case memory_order_seq_cst: - __sync_synchronize(); - break; - } -} - -template -inline bool -platform_cmpxchg32_strong(T & expected, T desired, volatile T * ptr) -{ - T found = __sync_val_compare_and_swap(ptr, expected, desired); - bool success = (found == expected); - expected = found; - return success; -} - -class atomic_flag -{ -private: - atomic_flag(const atomic_flag &) /* = delete */ ; - atomic_flag & operator=(const atomic_flag &) /* = delete */ ; - uint32_t v_; -public: - BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {} - - void - clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before_store(order); - const_cast(v_) = 0; - atomics::detail::platform_fence_after_store(order); - } - - bool - test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before(order); - uint32_t expected = v_; - do { - if (expected == 1) - break; - } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_)); - atomics::detail::platform_fence_after(order); - return expected; - } -}; -#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 - -} -} -} - -#include - -#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) - -#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 -#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 -#define BOOST_ATOMIC_INT_LOCK_FREE 2 -#define BOOST_ATOMIC_LONG_LOCK_FREE (sizeof(long) <= 4 ? 2 : 0) -#define BOOST_ATOMIC_LLONG_LOCK_FREE (sizeof(long long) <= 4 ? 2 : 0) -#define BOOST_ATOMIC_POINTER_LOCK_FREE (sizeof(void *) <= 4 ? 2 : 0) -#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 - -#include - -#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */ - -#endif diff --git a/3party/boost/boost/atomic/detail/gcc-ppc.hpp b/3party/boost/boost/atomic/detail/gcc-ppc.hpp deleted file mode 100644 index aaeeb96c78..0000000000 --- a/3party/boost/boost/atomic/detail/gcc-ppc.hpp +++ /dev/null @@ -1,2850 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_GCC_PPC_HPP -#define BOOST_ATOMIC_DETAIL_GCC_PPC_HPP - -// Copyright (c) 2009 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -/* - Refer to: Motorola: "Programming Environments Manual for 32-Bit - Implementations of the PowerPC Architecture", Appendix E: - "Synchronization Programming Examples" for an explanation of what is - going on here (can be found on the web at various places by the - name "MPCFPE32B.pdf", Google is your friend...) - - Most of the atomic operations map to instructions in a relatively - straight-forward fashion, but "load"s may at first glance appear - a bit strange as they map to: - - lwz %rX, addr - cmpw %rX, %rX - bne- 1f - 1: - - That is, the CPU is forced to perform a branch that "formally" depends - on the value retrieved from memory. This scheme has an overhead of - about 1-2 clock cycles per load, but it allows to map "acquire" to - the "isync" instruction instead of "sync" uniformly and for all type - of atomic operations. Since "isync" has a cost of about 15 clock - cycles, while "sync" hast a cost of about 50 clock cycles, the small - penalty to atomic loads more than compensates for this. - - Byte- and halfword-sized atomic values are realized by encoding the - value to be represented into a word, performing sign/zero extension - as appropriate. This means that after add/sub operations the value - needs fixing up to accurately preserve the wrap-around semantic of - the smaller type. (Nothing special needs to be done for the bit-wise - and the "exchange type" operators as the compiler already sees to - it that values carried in registers are extended appropriately and - everything falls into place naturally). - - The register constraint "b" instructs gcc to use any register - except r0; this is sometimes required because the encoding for - r0 is used to signify "constant zero" in a number of instructions, - making r0 unusable in this place. For simplicity this constraint - is used everywhere since I am to lazy to look this up on a - per-instruction basis, and ppc has enough registers for this not - to pose a problem. -*/ - -namespace boost { -namespace atomics { -namespace detail { - -inline void -ppc_fence_before(memory_order order) -{ - switch(order) { - case memory_order_release: - case memory_order_acq_rel: -#if defined(__powerpc64__) - __asm__ __volatile__ ("lwsync" ::: "memory"); - break; -#endif - case memory_order_seq_cst: - __asm__ __volatile__ ("sync" ::: "memory"); - default:; - } -} - -inline void -ppc_fence_after(memory_order order) -{ - switch(order) { - case memory_order_acquire: - case memory_order_acq_rel: - case memory_order_seq_cst: - __asm__ __volatile__ ("isync"); - case memory_order_consume: - __asm__ __volatile__ ("" ::: "memory"); - default:; - } -} - -inline void -ppc_fence_after_store(memory_order order) -{ - switch(order) { - case memory_order_seq_cst: - __asm__ __volatile__ ("sync"); - default:; - } -} - -} -} - -class atomic_flag -{ -private: - atomic_flag(const atomic_flag &) /* = delete */ ; - atomic_flag & operator=(const atomic_flag &) /* = delete */ ; - uint32_t v_; -public: - BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {} - - void - clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::ppc_fence_before(order); - const_cast(v_) = 0; - atomics::detail::ppc_fence_after_store(order); - } - - bool - test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - uint32_t original; - atomics::detail::ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (1) - : "cr0" - ); - atomics::detail::ppc_fence_after(order); - return original; - } -}; - -} /* namespace boost */ - -#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 - -#include - -#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) - -#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 -#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 -#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 -#define BOOST_ATOMIC_INT_LOCK_FREE 2 -#define BOOST_ATOMIC_LONG_LOCK_FREE 2 -#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 -#if defined(__powerpc64__) -#define BOOST_ATOMIC_LLONG_LOCK_FREE 2 -#else -#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 -#endif -#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 - -/* Would like to move the slow-path of failed compare_exchange -(that clears the "success" bit) out-of-line. gcc can in -principle do that using ".subsection"/".previous", but Apple's -binutils seemingly does not understand that. Therefore wrap -the "clear" of the flag in a macro and let it remain -in-line for Apple -*/ - -#if !defined(__APPLE__) - -#define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR \ - "9:\n" \ - ".subsection 2\n" \ - "2: addi %1,0,0\n" \ - "b 9b\n" \ - ".previous\n" \ - -#else - -#define BOOST_ATOMIC_ASM_SLOWPATH_CLEAR \ - "b 9f\n" \ - "2: addi %1,0,0\n" \ - "9:\n" \ - -#endif - -namespace boost { -namespace atomics { -namespace detail { - -/* integral types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef int32_t storage_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m"(v_) - : "r" (v) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v; - __asm__ __volatile__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=&r" (v) - : "m" (v_) - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "add %1,%0,%3\n" - "extsb %1, %1\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "sub %1,%0,%3\n" - "extsb %1, %1\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "and %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "or %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "xor %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m"(v_) - : "r" (v) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v; - __asm__ __volatile__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=&r" (v) - : "m" (v_) - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "add %1,%0,%3\n" - "rlwinm %1, %1, 0, 0xff\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "sub %1,%0,%3\n" - "rlwinm %1, %1, 0, 0xff\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "and %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "or %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "xor %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef int32_t storage_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m"(v_) - : "r" (v) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v; - __asm__ __volatile__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=&r" (v) - : "m" (v_) - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "add %1,%0,%3\n" - "extsh %1, %1\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "sub %1,%0,%3\n" - "extsh %1, %1\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "and %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "or %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "xor %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m"(v_) - : "r" (v) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v; - __asm__ __volatile__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=&r" (v) - : "m" (v_) - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "add %1,%0,%3\n" - "rlwinm %1, %1, 0, 0xffff\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "sub %1,%0,%3\n" - "rlwinm %1, %1, 0, 0xffff\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "and %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "or %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "xor %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - const_cast(v_) = v; - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - __asm__ __volatile__ ( - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "+b"(v) - : - : "cr0" - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "add %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "sub %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "and %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "or %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "xor %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -#if defined(__powerpc64__) - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - const_cast(v_) = v; - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - __asm__ __volatile__ ( - "cmpd %0, %0\n" - "bne- 1f\n" - "1:\n" - : "+b"(v) - : - : "cr0" - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y1\n" - "stdcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "ldarx %0,%y2\n" - "cmpd %0, %3\n" - "bne- 2f\n" - "stdcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: ldarx %0,%y2\n" - "cmpd %0, %3\n" - "bne- 2f\n" - "stdcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "add %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "sub %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "and %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "or %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "xor %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -#endif - -/* pointer types */ - -#if !defined(__powerpc64__) - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef ptrdiff_t difference_type; - typedef void * value_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m" (v_) - : "r" (v) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v; - __asm__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=r"(v) - : "m"(v_) - : "cr0" - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "add %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "sub %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m" (v_) - : "r" (v) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v; - __asm__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=r"(v) - : "m"(v_) - : "cr0" - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - v = v * sizeof(*v_); - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "add %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - v = v * sizeof(*v_); - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y2\n" - "sub %1,%0,%3\n" - "stwcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -#else - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef ptrdiff_t difference_type; - typedef void * value_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - __asm__ ( - "std %1, %0\n" - : "+m" (v_) - : "r" (v) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v; - __asm__ ( - "ld %0, %1\n" - "cmpd %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=r"(v) - : "m"(v_) - : "cr0" - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y1\n" - "stdcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "ldarx %0,%y2\n" - "cmpd %0, %3\n" - "bne- 2f\n" - "stdcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: ldarx %0,%y2\n" - "cmpd %0, %3\n" - "bne- 2f\n" - "stdcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "add %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "sub %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - ppc_fence_before(order); - __asm__ ( - "std %1, %0\n" - : "+m" (v_) - : "r" (v) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v; - __asm__ ( - "ld %0, %1\n" - "cmpd %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=r"(v) - : "m"(v_) - : "cr0" - ); - ppc_fence_after(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type original; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y1\n" - "stdcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (v) - : "cr0" - ); - ppc_fence_after(order); - return original; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "ldarx %0,%y2\n" - "cmpd %0, %3\n" - "bne- 2f\n" - "stdcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - int success; - ppc_fence_before(success_order); - __asm__( - "0: ldarx %0,%y2\n" - "cmpd %0, %3\n" - "bne- 2f\n" - "stdcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected), "=&b" (success), "+Z"(v_) - : "b" (expected), "b" (desired) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - return success; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - v = v * sizeof(*v_); - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "add %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - v = v * sizeof(*v_); - value_type original, tmp; - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y2\n" - "sub %1,%0,%3\n" - "stdcx. %1,%y2\n" - "bne- 1b\n" - : "=&b" (original), "=&b" (tmp), "+Z"(v_) - : "b" (v) - : "cc"); - ppc_fence_after(order); - return original; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -#endif - -/* generic */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m" (v_) - : "r" (tmp) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp; - __asm__ __volatile__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=r"(tmp) - : "m"(v_) - : "cr0" - ); - ppc_fence_after(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0, original; - memcpy(&tmp, &v, sizeof(value_type)); - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (tmp) - : "cr0" - ); - ppc_fence_after(order); - value_type res; - memcpy(&res, &original, sizeof(value_type)); - return res; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected_s), "=&b" (success), "+Z"(v_) - : "b" (expected_s), "b" (desired_s) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected_s), "=&b" (success), "+Z"(v_) - : "b" (expected_s), "b" (desired_s) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - return success; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m" (v_) - : "r" (tmp) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp; - __asm__ __volatile__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=r"(tmp) - : "m"(v_) - : "cr0" - ); - ppc_fence_after(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0, original; - memcpy(&tmp, &v, sizeof(value_type)); - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (tmp) - : "cr0" - ); - ppc_fence_after(order); - value_type res; - memcpy(&res, &original, sizeof(value_type)); - return res; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected_s), "=&b" (success), "+Z"(v_) - : "b" (expected_s), "b" (desired_s) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected_s), "=&b" (success), "+Z"(v_) - : "b" (expected_s), "b" (desired_s) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - return success; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - ppc_fence_before(order); - __asm__ ( - "stw %1, %0\n" - : "+m" (v_) - : "r" (tmp) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp; - __asm__ __volatile__ ( - "lwz %0, %1\n" - "cmpw %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=r"(tmp) - : "m"(v_) - : "cr0" - ); - ppc_fence_after(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0, original; - memcpy(&tmp, &v, sizeof(value_type)); - ppc_fence_before(order); - __asm__ ( - "1:\n" - "lwarx %0,%y1\n" - "stwcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (tmp) - : "cr0" - ); - ppc_fence_after(order); - value_type res; - memcpy(&res, &original, sizeof(value_type)); - return res; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - int success; - ppc_fence_before(success_order); - __asm__( - "lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected_s), "=&b" (success), "+Z"(v_) - : "b" (expected_s), "b" (desired_s) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - int success; - ppc_fence_before(success_order); - __asm__( - "0: lwarx %0,%y2\n" - "cmpw %0, %3\n" - "bne- 2f\n" - "stwcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected_s), "=&b" (success), "+Z"(v_) - : "b" (expected_s), "b" (desired_s) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - return success; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -#if defined(__powerpc64__) - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint64_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp; - memcpy(&tmp, &v, sizeof(value_type)); - ppc_fence_before(order); - __asm__ ( - "std %1, %0\n" - : "+m" (v_) - : "r" (tmp) - ); - ppc_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp; - __asm__ __volatile__ ( - "ld %0, %1\n" - "cmpd %0, %0\n" - "bne- 1f\n" - "1:\n" - : "=r"(tmp) - : "m"(v_) - : "cr0" - ); - ppc_fence_after(order); - - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0, original; - memcpy(&tmp, &v, sizeof(value_type)); - ppc_fence_before(order); - __asm__ ( - "1:\n" - "ldarx %0,%y1\n" - "stdcx. %2,%y1\n" - "bne- 1b\n" - : "=&b" (original), "+Z"(v_) - : "b" (tmp) - : "cr0" - ); - ppc_fence_after(order); - value_type res; - memcpy(&res, &original, sizeof(value_type)); - return res; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s, desired_s; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - int success; - ppc_fence_before(success_order); - __asm__( - "ldarx %0,%y2\n" - "cmpd %0, %3\n" - "bne- 2f\n" - "stdcx. %4,%y2\n" - "bne- 2f\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected_s), "=&b" (success), "+Z"(v_) - : "b" (expected_s), "b" (desired_s) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s, desired_s; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - - int success; - ppc_fence_before(success_order); - __asm__( - "0: ldarx %0,%y2\n" - "cmpd %0, %3\n" - "bne- 2f\n" - "stdcx. %4,%y2\n" - "bne- 0b\n" - "addi %1,0,1\n" - "1:" - - BOOST_ATOMIC_ASM_SLOWPATH_CLEAR - : "=&b" (expected_s), "=&b" (success), "+Z"(v_) - : "b" (expected_s), "b" (desired_s) - : "cr0" - ); - if (success) - ppc_fence_after(success_order); - else - ppc_fence_after(failure_order); - memcpy(&expected, &expected_s, sizeof(value_type)); - return success; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; -#endif - -} -} - -#define BOOST_ATOMIC_THREAD_FENCE 2 -inline void -atomic_thread_fence(memory_order order) -{ - switch(order) { - case memory_order_acquire: - __asm__ __volatile__ ("isync" ::: "memory"); - break; - case memory_order_release: -#if defined(__powerpc64__) - __asm__ __volatile__ ("lwsync" ::: "memory"); - break; -#endif - case memory_order_acq_rel: - case memory_order_seq_cst: - __asm__ __volatile__ ("sync" ::: "memory"); - default:; - } -} - -#define BOOST_ATOMIC_SIGNAL_FENCE 2 -inline void -atomic_signal_fence(memory_order order) -{ - switch(order) { - case memory_order_acquire: - case memory_order_release: - case memory_order_acq_rel: - case memory_order_seq_cst: - __asm__ __volatile__ ("" ::: "memory"); - break; - default:; - } -} - -} - -#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */ - -#endif diff --git a/3party/boost/boost/atomic/detail/gcc-sparcv9.hpp b/3party/boost/boost/atomic/detail/gcc-sparcv9.hpp deleted file mode 100644 index b524403bb2..0000000000 --- a/3party/boost/boost/atomic/detail/gcc-sparcv9.hpp +++ /dev/null @@ -1,1259 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_GCC_SPARC_HPP -#define BOOST_ATOMIC_DETAIL_GCC_SPARC_HPP - -// Copyright (c) 2010 Helge Bahmann -// Copyright (c) 2013 Tim Blechmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -namespace boost { -namespace atomics { -namespace detail { - -inline void -platform_fence_before(memory_order order) -{ - switch(order) { - case memory_order_relaxed: - case memory_order_acquire: - case memory_order_consume: - break; - case memory_order_release: - case memory_order_acq_rel: - __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory"); - /* release */ - break; - case memory_order_seq_cst: - __asm__ __volatile__ ("membar #Sync" ::: "memory"); - /* seq */ - break; - } -} - -inline void -platform_fence_after(memory_order order) -{ - switch(order) { - case memory_order_relaxed: - case memory_order_release: - break; - case memory_order_acquire: - case memory_order_acq_rel: - __asm__ __volatile__ ("membar #LoadLoad | #LoadStore" ::: "memory"); - /* acquire */ - break; - case memory_order_consume: - /* consume */ - break; - case memory_order_seq_cst: - __asm__ __volatile__ ("membar #Sync" ::: "memory"); - /* seq */ - break; - default:; - } -} - -inline void -platform_fence_after_store(memory_order order) -{ - switch(order) { - case memory_order_seq_cst: - __asm__ __volatile__ ("membar #Sync" ::: "memory"); - default:; - } -} - - -inline void -platform_fence_after_load(memory_order order) -{ - platform_fence_after(order); -} - -} -} - -class atomic_flag -{ -private: - atomic_flag(const atomic_flag &) /* = delete */ ; - atomic_flag & operator=(const atomic_flag &) /* = delete */ ; - uint32_t v_; -public: - BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {} - - void - clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before(order); - const_cast(v_) = 0; - atomics::detail::platform_fence_after_store(order); - } - - bool - test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before(order); - uint32_t tmp = 1; - __asm__ ( - "cas [%1], %2, %0" - : "+r" (tmp) - : "r" (&v_), "r" (0) - : "memory" - ); - atomics::detail::platform_fence_after(order); - return tmp; - } -}; - -} /* namespace boost */ - -#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 - -#include - -#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) - -#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 -#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 -#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 -#define BOOST_ATOMIC_INT_LOCK_FREE 2 -#define BOOST_ATOMIC_LONG_LOCK_FREE 2 -#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 -#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 -#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 - -namespace boost { - -#define BOOST_ATOMIC_THREAD_FENCE 2 -inline void -atomic_thread_fence(memory_order order) -{ - switch(order) { - case memory_order_relaxed: - break; - case memory_order_release: - __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory"); - break; - case memory_order_acquire: - __asm__ __volatile__ ("membar #LoadLoad | #LoadStore" ::: "memory"); - break; - case memory_order_acq_rel: - __asm__ __volatile__ ("membar #LoadLoad | #LoadStore | #StoreStore" ::: "memory"); - break; - case memory_order_consume: - break; - case memory_order_seq_cst: - __asm__ __volatile__ ("membar #Sync" ::: "memory"); - break; - default:; - } -} - -#define BOOST_ATOMIC_SIGNAL_FENCE 2 -inline void -atomic_signal_fence(memory_order) -{ - __asm__ __volatile__ ("" ::: "memory"); -} - -namespace atomics { -namespace detail { - -/* integral types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef int32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed)); - return tmp; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - storage_type desired_s = desired; - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired_s) - : "r" (&v_), "r" ((storage_type)expected) - : "memory" - ); - desired = desired_s; - bool success = (desired == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = desired; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed)); - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed)); - return tmp; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - storage_type desired_s = desired; - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired_s) - : "r" (&v_), "r" ((storage_type)expected) - : "memory" - ); - desired = desired_s; - bool success = (desired == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = desired; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed)); - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef int32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed)); - return tmp; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - storage_type desired_s = desired; - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired_s) - : "r" (&v_), "r" ((storage_type)expected) - : "memory" - ); - desired = desired_s; - bool success = (desired == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = desired; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed)); - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed)); - return tmp; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - storage_type desired_s = desired; - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired_s) - : "r" (&v_), "r" ((storage_type)expected) - : "memory" - ); - desired = desired_s; - bool success = (desired == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = desired; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed)); - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed)); - return tmp; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired) - : "r" (&v_), "r" (expected) - : "memory" - ); - bool success = (desired == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = desired; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed)); - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -/* pointer types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef ptrdiff_t difference_type; - typedef void * value_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired) - : "r" (&v_), "r" (expected) - : "memory" - ); - bool success = (desired == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = desired; - return success; - } - - - bool compare_exchange_weak(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, (char*)tmp + v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, (char*)tmp - v, order, memory_order_relaxed)); - return tmp; - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS - -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - const_cast(v_) = v; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - platform_fence_before(success_order); - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired) - : "r" (&v_), "r" (expected) - : "memory" - ); - bool success = (desired == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = desired; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp + v, order, memory_order_relaxed)); - return tmp; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, tmp - v, order, memory_order_relaxed)); - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -/* generic types */ - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - platform_fence_before(success_order); - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired_s) - : "r" (&v_), "r" (expected_s) - : "memory" - ); - bool success = (desired_s == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &desired_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - platform_fence_before(success_order); - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired_s) - : "r" (&v_), "r" (expected_s) - : "memory" - ); - bool success = (desired_s == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &desired_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - platform_fence_after_store(order); - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - do {} while(!compare_exchange_weak(tmp, v, order, memory_order_relaxed)); - return tmp; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - platform_fence_before(success_order); - __asm__ ( - "cas [%1], %2, %0" - : "+r" (desired_s) - : "r" (&v_), "r" (expected_s) - : "memory" - ); - bool success = (desired_s == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &desired_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */ - -} -} -} - -#endif diff --git a/3party/boost/boost/atomic/detail/gcc-x86.hpp b/3party/boost/boost/atomic/detail/gcc-x86.hpp deleted file mode 100644 index 1cf9d67d9b..0000000000 --- a/3party/boost/boost/atomic/detail/gcc-x86.hpp +++ /dev/null @@ -1,1766 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_GCC_X86_HPP -#define BOOST_ATOMIC_DETAIL_GCC_X86_HPP - -// Copyright (c) 2009 Helge Bahmann -// Copyright (c) 2012 Tim Blechmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -namespace boost { -namespace atomics { -namespace detail { - -#if defined(__x86_64__) || defined(__SSE2__) -# define BOOST_ATOMIC_X86_FENCE_INSTR "mfence\n" -#else -# define BOOST_ATOMIC_X86_FENCE_INSTR "lock ; addl $0, (%%esp)\n" -#endif - -#define BOOST_ATOMIC_X86_PAUSE() __asm__ __volatile__ ("pause\n") - -#if defined(__i386__) &&\ - (\ - defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) ||\ - defined(__i586__) || defined(__i686__) || defined(__pentium4__) || defined(__nocona__) || defined(__core2__) || defined(__corei7__) ||\ - defined(__k6__) || defined(__athlon__) || defined(__k8__) || defined(__amdfam10__) || defined(__bdver1__) || defined(__bdver2__) || defined(__bdver3__) || defined(__btver1__) || defined(__btver2__)\ - ) -#define BOOST_ATOMIC_X86_HAS_CMPXCHG8B 1 -#endif - -inline void -platform_fence_before(memory_order order) -{ - switch(order) - { - case memory_order_relaxed: - case memory_order_acquire: - case memory_order_consume: - break; - case memory_order_release: - case memory_order_acq_rel: - __asm__ __volatile__ ("" ::: "memory"); - /* release */ - break; - case memory_order_seq_cst: - __asm__ __volatile__ ("" ::: "memory"); - /* seq */ - break; - default:; - } -} - -inline void -platform_fence_after(memory_order order) -{ - switch(order) - { - case memory_order_relaxed: - case memory_order_release: - break; - case memory_order_acquire: - case memory_order_acq_rel: - __asm__ __volatile__ ("" ::: "memory"); - /* acquire */ - break; - case memory_order_consume: - /* consume */ - break; - case memory_order_seq_cst: - __asm__ __volatile__ ("" ::: "memory"); - /* seq */ - break; - default:; - } -} - -inline void -platform_fence_after_load(memory_order order) -{ - switch(order) - { - case memory_order_relaxed: - case memory_order_release: - break; - case memory_order_acquire: - case memory_order_acq_rel: - __asm__ __volatile__ ("" ::: "memory"); - break; - case memory_order_consume: - break; - case memory_order_seq_cst: - __asm__ __volatile__ ("" ::: "memory"); - break; - default:; - } -} - -inline void -platform_fence_before_store(memory_order order) -{ - switch(order) - { - case memory_order_relaxed: - case memory_order_acquire: - case memory_order_consume: - break; - case memory_order_release: - case memory_order_acq_rel: - __asm__ __volatile__ ("" ::: "memory"); - /* release */ - break; - case memory_order_seq_cst: - __asm__ __volatile__ ("" ::: "memory"); - /* seq */ - break; - default:; - } -} - -inline void -platform_fence_after_store(memory_order order) -{ - switch(order) - { - case memory_order_relaxed: - case memory_order_release: - break; - case memory_order_acquire: - case memory_order_acq_rel: - __asm__ __volatile__ ("" ::: "memory"); - /* acquire */ - break; - case memory_order_consume: - /* consume */ - break; - case memory_order_seq_cst: - __asm__ __volatile__ ("" ::: "memory"); - /* seq */ - break; - default:; - } -} - -} -} - -class atomic_flag -{ -private: - atomic_flag(const atomic_flag &) /* = delete */ ; - atomic_flag & operator=(const atomic_flag &) /* = delete */ ; - uint32_t v_; -public: - BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {} - - bool - test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - uint32_t v = 1; - atomics::detail::platform_fence_before(order); - __asm__ __volatile__ ( - "xchgl %0, %1" - : "+r" (v), "+m" (v_) - ); - atomics::detail::platform_fence_after(order); - return v; - } - - void - clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order == memory_order_seq_cst) { - uint32_t v = 0; - __asm__ __volatile__ ( - "xchgl %0, %1" - : "+r" (v), "+m" (v_) - ); - } else { - atomics::detail::platform_fence_before(order); - v_ = 0; - } - } -}; - -} /* namespace boost */ - -#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 - -#include - -#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) - -#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 -#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 -#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 -#define BOOST_ATOMIC_INT_LOCK_FREE 2 -#define BOOST_ATOMIC_LONG_LOCK_FREE 2 - -#if defined(__x86_64__) || defined(BOOST_ATOMIC_X86_HAS_CMPXCHG8B) -#define BOOST_ATOMIC_LLONG_LOCK_FREE 2 -#else -#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 -#endif - -#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 -#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 - -namespace boost { - -#define BOOST_ATOMIC_THREAD_FENCE 2 -inline void -atomic_thread_fence(memory_order order) -{ - switch(order) - { - case memory_order_relaxed: - break; - case memory_order_release: - __asm__ __volatile__ ("" ::: "memory"); - break; - case memory_order_acquire: - __asm__ __volatile__ ("" ::: "memory"); - break; - case memory_order_acq_rel: - __asm__ __volatile__ ("" ::: "memory"); - break; - case memory_order_consume: - break; - case memory_order_seq_cst: - __asm__ __volatile__ (BOOST_ATOMIC_X86_FENCE_INSTR ::: "memory"); - break; - default:; - } -} - -#define BOOST_ATOMIC_SIGNAL_FENCE 2 -inline void -atomic_signal_fence(memory_order) -{ - __asm__ __volatile__ ("" ::: "memory"); -} - -namespace atomics { -namespace detail { - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "lock ; xaddb %0, %1" - : "+q" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "xchgb %0, %1" - : "+q" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgb %2, %1" - : "+a" (previous), "+m" (v_) - : "q" (desired) - ); - bool success = (previous == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = previous; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for(; !compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "lock ; xaddw %0, %1" - : "+q" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "xchgw %0, %1" - : "+q" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgw %2, %1" - : "+a" (previous), "+m" (v_) - : "q" (desired) - ); - bool success = (previous == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = previous; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "lock ; xaddl %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "xchgl %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgl %2, %1" - : "+a" (previous), "+m" (v_) - : "r" (desired) - ); - bool success = (previous == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = previous; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -#if defined(__x86_64__) -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "lock ; xaddq %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "xchgq %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgq %2, %1" - : "+a" (previous), "+m" (v_) - : "r" (desired) - ); - bool success = (previous == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = previous; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -#endif - -/* pointers */ - -#if !defined(__x86_64__) - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef ptrdiff_t difference_type; - typedef void * value_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "xchgl %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - bool compare_exchange_strong(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgl %2, %1" - : "+a" (previous), "+m" (v_) - : "r" (desired) - ); - bool success = (previous == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = previous; - return success; - } - - bool compare_exchange_weak(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "lock ; xaddl %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return reinterpret_cast(v); - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "xchgl %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgl %2, %1" - : "+a" (previous), "+m" (v_) - : "r" (desired) - ); - bool success = (previous == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = previous; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - v = v * sizeof(*v_); - platform_fence_before(order); - __asm__ ( - "lock ; xaddl %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return reinterpret_cast(v); - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -#else - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef ptrdiff_t difference_type; - typedef void * value_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "xchgq %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - bool compare_exchange_strong(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgq %2, %1" - : "+a" (previous), "+m" (v_) - : "r" (desired) - ); - bool success = (previous == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = previous; - return success; - } - - bool compare_exchange_weak(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "lock ; xaddq %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return reinterpret_cast(v); - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T * value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT : v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - __asm__ ( - "xchgq %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgq %2, %1" - : "+a" (previous), "+m" (v_) - : "r" (desired) - ); - bool success = (previous == expected); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = previous; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - v = v * sizeof(*v_); - platform_fence_before(order); - __asm__ ( - "lock ; xaddq %0, %1" - : "+r" (v), "+m" (v_) - ); - platform_fence_after(order); - return reinterpret_cast(v); - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -#endif - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint8_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : - v_(reinterpret_cast(v)) - {} - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - storage_type tmp; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - __asm__ ( - "xchgb %0, %1" - : "+q" (tmp), "+m" (v_) - ); - platform_fence_after(order); - value_type res; - memcpy(&res, &tmp, sizeof(value_type)); - return res; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s, desired_s; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - storage_type previous_s = expected_s; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgb %2, %1" - : "+a" (previous_s), "+m" (v_) - : "q" (desired_s) - ); - bool success = (previous_s == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &previous_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint16_t storage_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : - v_(reinterpret_cast(v)) - {} - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - storage_type tmp; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - __asm__ ( - "xchgw %0, %1" - : "+q" (tmp), "+m" (v_) - ); - platform_fence_after(order); - value_type res; - memcpy(&res, &tmp, sizeof(value_type)); - return res; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s, desired_s; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - storage_type previous_s = expected_s; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgw %2, %1" - : "+a" (previous_s), "+m" (v_) - : "q" (desired_s) - ); - bool success = (previous_s == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &previous_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - __asm__ ( - "xchgl %0, %1" - : "+q" (tmp), "+m" (v_) - ); - platform_fence_after(order); - value_type res; - memcpy(&res, &tmp, sizeof(value_type)); - return res; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - storage_type previous_s = expected_s; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgl %2, %1" - : "+a" (previous_s), "+m" (v_) - : "q" (desired_s) - ); - bool success = (previous_s == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &previous_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -#if defined(__x86_64__) -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint64_t storage_type; -public: - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - __asm__ ( - "xchgq %0, %1" - : "+q" (tmp), "+m" (v_) - ); - platform_fence_after(order); - value_type res; - memcpy(&res, &tmp, sizeof(value_type)); - return res; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - storage_type previous_s = expected_s; - platform_fence_before(success_order); - __asm__ ( - "lock ; cmpxchgq %2, %1" - : "+a" (previous_s), "+m" (v_) - : "q" (desired_s) - ); - bool success = (previous_s == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &previous_s, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; -#endif - -#if !defined(__x86_64__) && defined(BOOST_ATOMIC_X86_HAS_CMPXCHG8B) - -template -inline bool -platform_cmpxchg64_strong(T & expected, T desired, volatile T * ptr) BOOST_NOEXCEPT -{ -#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 - const T oldval = __sync_val_compare_and_swap(ptr, expected, desired); - const bool result = (oldval == expected); - expected = oldval; - return result; -#else - uint32_t scratch; - T prev = expected; - /* Make sure ebx is saved and restored properly in case - this object is compiled as "position independent". Since - programmers on x86 tend to forget specifying -DPIC or - similar, always assume PIC. - - To make this work uniformly even in the non-PIC case, - setup register constraints such that ebx can not be - used by accident e.g. as base address for the variable - to be modified. Accessing "scratch" should always be okay, - as it can only be placed on the stack (and therefore - accessed through ebp or esp only). - - In theory, could push/pop ebx onto/off the stack, but movs - to a prepared stack slot turn out to be faster. */ - __asm__ __volatile__ ( - "movl %%ebx, %1\n" - "movl %2, %%ebx\n" - "lock; cmpxchg8b 0(%4)\n" - "movl %1, %%ebx\n" - : "=A" (prev), "=m" (scratch) - : "D" ((uint32_t)desired), "c" ((uint32_t)(desired >> 32)), "S" (ptr), "0" (prev) - : "memory"); - bool success = (prev == expected); - expected = prev; - return success; -#endif -} - -// Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A, 8.1.1. Guaranteed Atomic Operations: -// -// The Pentium processor (and newer processors since) guarantees that the following additional memory operations will always be carried out atomically: -// * Reading or writing a quadword aligned on a 64-bit boundary -// -// Luckily, the memory is almost always 8-byte aligned in our case because atomic<> uses 64 bit native types for storage and dynamic memory allocations -// have at least 8 byte alignment. The only unfortunate case is when atomic is placeod on the stack and it is not 8-byte aligned (like on 32 bit Windows). - -template -inline void -platform_store64(T value, volatile T * ptr) BOOST_NOEXCEPT -{ - if (((uint32_t)ptr & 0x00000007) == 0) - { -#if defined(__SSE2__) - __asm__ __volatile__ - ( - "movq %1, %%xmm0\n\t" - "movq %%xmm0, %0\n\t" - : "=m" (*ptr) - : "m" (value) - : "memory", "xmm0" - ); -#else - __asm__ __volatile__ - ( - "fildll %1\n\t" - "fistpll %0\n\t" - : "=m" (*ptr) - : "m" (value) - : "memory" - ); -#endif - } - else - { - T expected = *ptr; - while (!platform_cmpxchg64_strong(expected, value, ptr)) - { - BOOST_ATOMIC_X86_PAUSE(); - } - } -} - -template -inline T -platform_load64(const volatile T * ptr) BOOST_NOEXCEPT -{ - T value = T(); - - if (((uint32_t)ptr & 0x00000007) == 0) - { -#if defined(__SSE2__) - __asm__ __volatile__ - ( - "movq %1, %%xmm0\n\t" - "movq %%xmm0, %0\n\t" - : "=m" (value) - : "m" (*ptr) - : "memory", "xmm0" - ); -#else - __asm__ __volatile__ - ( - "fildll %1\n\t" - "fistpll %0\n\t" - : "=m" (value) - : "m" (*ptr) - : "memory" - ); -#endif - } - else - { - // We don't care for comparison result here; the previous value will be stored into value anyway. - platform_cmpxchg64_strong(value, value, const_cast(ptr)); - } - - return value; -} - -#endif - -} -} -} - -/* pull in 64-bit atomic type using cmpxchg8b above */ -#if !defined(__x86_64__) && defined(BOOST_ATOMIC_X86_HAS_CMPXCHG8B) -#include -#endif - -#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */ - -#endif diff --git a/3party/boost/boost/atomic/detail/generic-cas.hpp b/3party/boost/boost/atomic/detail/generic-cas.hpp deleted file mode 100644 index f8cc3cc92f..0000000000 --- a/3party/boost/boost/atomic/detail/generic-cas.hpp +++ /dev/null @@ -1,206 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP -#define BOOST_ATOMIC_DETAIL_GENERIC_CAS_HPP - -// Copyright (c) 2009 Helge Bahmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include -#include -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -/* fallback implementation for various compilation targets; -this is *not* efficient, particularly because all operations -are fully fenced (full memory barriers before and after -each operation) */ - -#if defined(__GNUC__) - namespace boost { namespace atomics { namespace detail { - inline int32_t - fenced_compare_exchange_strong_32(volatile int32_t *ptr, int32_t expected, int32_t desired) - { - return __sync_val_compare_and_swap_4(ptr, expected, desired); - } - #define BOOST_ATOMIC_HAVE_CAS32 1 - - #if defined(__amd64__) || defined(__i686__) - inline int64_t - fenced_compare_exchange_strong_64(int64_t *ptr, int64_t expected, int64_t desired) - { - return __sync_val_compare_and_swap_8(ptr, expected, desired); - } - #define BOOST_ATOMIC_HAVE_CAS64 1 - #endif - }}} - -#elif defined(__ICL) || defined(_MSC_VER) - - #if defined(_MSC_VER) - #include - #include - #endif - - namespace boost { namespace atomics { namespace detail { - inline int32_t - fenced_compare_exchange_strong(int32_t *ptr, int32_t expected, int32_t desired) - { - return _InterlockedCompareExchange(reinterpret_cast(ptr), desired, expected); - } - #define BOOST_ATOMIC_HAVE_CAS32 1 - #if defined(_WIN64) - inline int64_t - fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired) - { - return _InterlockedCompareExchange64(ptr, desired, expected); - } - #define BOOST_ATOMIC_HAVE_CAS64 1 - #endif - }}} - -#elif (defined(__ICC) || defined(__ECC)) - namespace boost { namespace atomics { namespace detail { - inline int32_t - fenced_compare_exchange_strong_32(int32_t *ptr, int32_t expected, int32_t desired) - { - return _InterlockedCompareExchange((void*)ptr, desired, expected); - } - #define BOOST_ATOMIC_HAVE_CAS32 1 - #if defined(__x86_64) - inline int64_t - fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired) - { - return cas64(ptr, expected, desired); - } - #define BOOST_ATOMIC_HAVE_CAS64 1 - #elif defined(__ECC) //IA-64 version - inline int64_t - fenced_compare_exchange_strong(int64_t *ptr, int64_t expected, int64_t desired) - { - return _InterlockedCompareExchange64((void*)ptr, desired, expected); - } - #define BOOST_ATOMIC_HAVE_CAS64 1 - #endif - }}} - -#elif (defined(__SUNPRO_CC) && defined(__sparc)) - #include - namespace boost { namespace atomics { namespace detail { - inline int32_t - fenced_compare_exchange_strong_32(int32_t *ptr, int32_t expected, int32_t desired) - { - return atomic_cas_32((volatile unsigned int*)ptr, expected, desired); - } - #define BOOST_ATOMIC_HAVE_CAS32 1 - - /* FIXME: check for 64 bit mode */ - inline int64_t - fenced_compare_exchange_strong_64(int64_t *ptr, int64_t expected, int64_t desired) - { - return atomic_cas_64((volatile unsigned long long*)ptr, expected, desired); - } - #define BOOST_ATOMIC_HAVE_CAS64 1 - }}} -#endif - - -namespace boost { -namespace atomics { -namespace detail { - -#ifdef BOOST_ATOMIC_HAVE_CAS32 -template -class atomic_generic_cas32 -{ -private: - typedef atomic_generic_cas32 this_type; -public: - explicit atomic_generic_cas32(T v) : i((int32_t)v) {} - atomic_generic_cas32() {} - T load(memory_order order=memory_order_seq_cst) const volatile - { - T expected=(T)i; - do { } while(!const_cast(this)->compare_exchange_weak(expected, expected, order, memory_order_relaxed)); - return expected; - } - void store(T v, memory_order order=memory_order_seq_cst) volatile - { - exchange(v); - } - bool compare_exchange_strong( - T &expected, - T desired, - memory_order success_order, - memory_order failure_order) volatile - { - T found; - found=(T)fenced_compare_exchange_strong_32(&i, (int32_t)expected, (int32_t)desired); - bool success=(found==expected); - expected=found; - return success; - } - bool compare_exchange_weak( - T &expected, - T desired, - memory_order success_order, - memory_order failure_order) volatile - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - T exchange(T r, memory_order order=memory_order_seq_cst) volatile - { - T expected=(T)i; - do { } while(!compare_exchange_weak(expected, r, order, memory_order_relaxed)); - return expected; - } - - bool is_lock_free(void) const volatile {return true;} - typedef T integral_type; -private: - mutable int32_t i; -}; - -template -class platform_atomic_integral : - public build_atomic_from_exchange > -{ -public: - typedef build_atomic_from_exchange > super; - explicit platform_atomic_integral(T v) : super(v) {} - platform_atomic_integral(void) {} -}; - -template -class platform_atomic_integral : - public build_atomic_from_larger_type, T> -{ -public: - typedef build_atomic_from_larger_type, T> super; - - explicit platform_atomic_integral(T v) : super(v) {} - platform_atomic_integral(void) {} -}; - -template -class platform_atomic_integral : - public build_atomic_from_larger_type, T> -{ -public: - typedef build_atomic_from_larger_type, T> super; - - explicit platform_atomic_integral(T v) : super(v) {} - platform_atomic_integral(void) {} -}; -#endif - -} } } - -#endif diff --git a/3party/boost/boost/atomic/detail/int_sizes.hpp b/3party/boost/boost/atomic/detail/int_sizes.hpp new file mode 100644 index 0000000000..d06ed42a11 --- /dev/null +++ b/3party/boost/boost/atomic/detail/int_sizes.hpp @@ -0,0 +1,140 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/int_sizes.hpp + * + * This header defines macros for testing buitin integer type sizes + */ + +#ifndef BOOST_ATOMIC_DETAIL_INT_SIZES_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_INT_SIZES_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// GCC and compatible compilers define internal macros with builtin type traits +#if defined(__SIZEOF_SHORT__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT __SIZEOF_SHORT__ +#endif +#if defined(__SIZEOF_INT__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT __SIZEOF_INT__ +#endif +#if defined(__SIZEOF_LONG__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG __SIZEOF_LONG__ +#endif +#if defined(__SIZEOF_LONG_LONG__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG __SIZEOF_LONG_LONG__ +#endif +#if defined(__SIZEOF_WCHAR_T__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T __SIZEOF_WCHAR_T__ +#endif +#if defined(__SIZEOF_POINTER__) +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER __SIZEOF_POINTER__ +#elif defined(_MSC_VER) +#if defined(_M_AMD64) || defined(_M_IA64) +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 8 +#else +#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 4 +#endif +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG) + +// Try to deduce sizes from limits +#include +#include + +#if (USHRT_MAX + 0) == 0xff +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 1 +#elif (USHRT_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 2 +#elif (USHRT_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 4 +#elif (USHRT_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 8 +#endif + +#if (UINT_MAX + 0) == 0xff +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 1 +#elif (UINT_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 2 +#elif (UINT_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 4 +#elif (UINT_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 8 +#endif + +#if (ULONG_MAX + 0) == 0xff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 1 +#elif (ULONG_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 2 +#elif (ULONG_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 4 +#elif (ULONG_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 8 +#endif + +#if defined(__hpux) // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 8 +#else + +// The list of the non-standard macros (the ones except ULLONG_MAX) is taken from cstdint.hpp +#if defined(ULLONG_MAX) +#define BOOST_ATOMIC_DETAIL_ULLONG_MAX ULLONG_MAX +#elif defined(ULONG_LONG_MAX) +#define BOOST_ATOMIC_DETAIL_ULLONG_MAX ULONG_LONG_MAX +#elif defined(ULONGLONG_MAX) +#define BOOST_ATOMIC_DETAIL_ULLONG_MAX ULONGLONG_MAX +#elif defined(_LLONG_MAX) // strangely enough, this one seems to be holding the limit for the unsigned integer +#define BOOST_ATOMIC_DETAIL_ULLONG_MAX _LLONG_MAX +#endif + +#if (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 1 +#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 2 +#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == 0xffffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 4 +#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX + 0) == UINT64_C(0xffffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 8 +#endif + +#endif // defined(__hpux) + +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T) + +#include +#include + +#if defined(_MSC_VER) && _MSC_VER <= 1310 +// MSVC 7.1 defines WCHAR_MAX to a value not suitable for constant expressions +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2 +#elif (WCHAR_MAX + 0) == 0xff || (WCHAR_MAX + 0) == 0x7f +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 1 +#elif (WCHAR_MAX + 0) == 0xffff || (WCHAR_MAX + 0) == 0x7fff +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2 +#elif (WCHAR_MAX + 0) == 0xffffffff || (WCHAR_MAX + 0) == 0x7fffffff +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 4 +#elif (WCHAR_MAX + 0) == UINT64_C(0xffffffffffffffff) || (WCHAR_MAX + 0) == INT64_C(0x7fffffffffffffff) +#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 8 +#endif +#endif + +#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG) ||\ + !defined(BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T) +#error Boost.Atomic: Failed to determine builtin integer sizes, the target platform is not supported. Please, report to the developers. +#endif + +#endif // BOOST_ATOMIC_DETAIL_INT_SIZES_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/interlocked.hpp b/3party/boost/boost/atomic/detail/interlocked.hpp index 2cf21a1b5f..fa11befe6e 100644 --- a/3party/boost/boost/atomic/detail/interlocked.hpp +++ b/3party/boost/boost/atomic/detail/interlocked.hpp @@ -2,7 +2,7 @@ #define BOOST_ATOMIC_DETAIL_INTERLOCKED_HPP // Copyright (c) 2009 Helge Bahmann -// Copyright (c) 2012, 2013 Andrey Semashev +// Copyright (c) 2012 - 2014 Andrey Semashev // // Distributed under the Boost Software License, Version 1.0. // See accompanying file LICENSE_1_0.txt or copy at @@ -10,22 +10,57 @@ #include -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE +#ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif -#if defined(_WIN32_WCE) || (defined(_MSC_VER) && _MSC_VER < 1400) +#if defined(_WIN32_WCE) -#include +#if _WIN32_WCE >= 0x600 -#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) BOOST_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest), exchange, compare) -#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) BOOST_INTERLOCKED_EXCHANGE((long*)(dest), newval) -#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) BOOST_INTERLOCKED_EXCHANGE_ADD((long*)(dest), addend) -#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) -#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) BOOST_INTERLOCKED_EXCHANGE_POINTER(dest, newval) -#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_INTERLOCKED_EXCHANGE_ADD((long*)(dest), byte_offset)) +extern "C" long __cdecl _InterlockedCompareExchange( long volatile *, long, long ); +extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long ); +extern "C" long __cdecl _InterlockedExchange( long volatile *, long ); -#elif defined(_MSC_VER) && _MSC_VER >= 1400 +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) _InterlockedCompareExchange((long*)(dest), exchange, compare) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) _InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) _InterlockedExchange((long*)(dest), (long)(newval)) + +#else // _WIN32_WCE >= 0x600 + +extern "C" long __cdecl InterlockedCompareExchange( long*, long, long ); +extern "C" long __cdecl InterlockedExchangeAdd( long*, long ); +extern "C" long __cdecl InterlockedExchange( long*, long ); + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) InterlockedCompareExchange((long*)(dest), exchange, compare) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) InterlockedExchange((long*)(dest), (long)(newval)) + +#endif // _WIN32_WCE >= 0x600 + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) ((void*)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest), (long)(exchange), (long)(compare))) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE((long*)(dest), (long)(exchange))) + +#elif defined(_MSC_VER) && _MSC_VER >= 1310 + +#if _MSC_VER < 1400 + +extern "C" long __cdecl _InterlockedCompareExchange( long volatile *, long, long ); +extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long ); +extern "C" long __cdecl _InterlockedExchange( long volatile *, long ); + +#pragma intrinsic(_InterlockedCompareExchange) +#pragma intrinsic(_InterlockedExchangeAdd) +#pragma intrinsic(_InterlockedExchange) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) _InterlockedCompareExchange((long*)(dest), exchange, compare) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(dest, addend) _InterlockedExchangeAdd((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) _InterlockedExchange((long*)(dest), (long)(newval)) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) ((void*)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest), (long)(exchange), (long)(compare))) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, exchange) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE((long*)(dest), (long)(exchange))) + +#else // _MSC_VER < 1400 #include @@ -43,6 +78,16 @@ #define BOOST_ATOMIC_INTERLOCKED_OR(dest, arg) _InterlockedOr((long*)(dest), (long)(arg)) #define BOOST_ATOMIC_INTERLOCKED_XOR(dest, arg) _InterlockedXor((long*)(dest), (long)(arg)) +#if (defined(_M_IX86) && _M_IX86 >= 500) || defined(_M_AMD64) || defined(_M_IA64) +#pragma intrinsic(_InterlockedCompareExchange64) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(dest, exchange, compare) _InterlockedCompareExchange64((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#endif + +#if _MSC_VER >= 1500 && defined(_M_AMD64) +#pragma intrinsic(_InterlockedCompareExchange128) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE128(dest, exchange, compare) _InterlockedCompareExchange128((__int64*)(dest), ((const __int64*)(&exchange))[1], ((const __int64*)(&exchange))[0], (__int64*)(compare)) +#endif + #if _MSC_VER >= 1600 // MSVC 2010 and later provide intrinsics for 8 and 16 bit integers. @@ -81,14 +126,12 @@ #if defined(_M_AMD64) || defined(_M_IA64) -#pragma intrinsic(_InterlockedCompareExchange64) #pragma intrinsic(_InterlockedExchangeAdd64) #pragma intrinsic(_InterlockedExchange64) #pragma intrinsic(_InterlockedAnd64) #pragma intrinsic(_InterlockedOr64) #pragma intrinsic(_InterlockedXor64) -#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(dest, exchange, compare) _InterlockedCompareExchange64((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) #define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(dest, addend) _InterlockedExchangeAdd64((__int64*)(dest), (__int64)(addend)) #define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(dest, newval) _InterlockedExchange64((__int64*)(dest), (__int64)(newval)) #define BOOST_ATOMIC_INTERLOCKED_AND64(dest, arg) _InterlockedAnd64((__int64*)(dest), (__int64)(arg)) @@ -102,15 +145,223 @@ #define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) _InterlockedExchangePointer((void**)(dest), (void*)(newval)) #define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64((long*)(dest), byte_offset)) -#else // defined(_M_AMD64) || defined(_M_IA64) +#elif defined(_M_IX86) #define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) ((void*)_InterlockedCompareExchange((long*)(dest), (long)(exchange), (long)(compare))) #define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) ((void*)_InterlockedExchange((long*)(dest), (long)(newval))) #define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD((long*)(dest), byte_offset)) -#endif // defined(_M_AMD64) || defined(_M_IA64) +#endif -#else // defined(_MSC_VER) && _MSC_VER >= 1400 +#if _MSC_VER >= 1700 && defined(_M_ARM) + +#pragma intrinsic(_InterlockedExchangeAdd64) +#pragma intrinsic(_InterlockedExchange64) +#pragma intrinsic(_InterlockedAnd64) +#pragma intrinsic(_InterlockedOr64) +#pragma intrinsic(_InterlockedXor64) + +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(dest, addend) _InterlockedExchangeAdd64((__int64*)(dest), (__int64)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(dest, newval) _InterlockedExchange64((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_AND64(dest, arg) _InterlockedAnd64((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64(dest, arg) _InterlockedOr64((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64(dest, arg) _InterlockedXor64((__int64*)(dest), (__int64)(arg)) + +#pragma intrinsic(_InterlockedCompareExchange8_nf) +#pragma intrinsic(_InterlockedCompareExchange8_acq) +#pragma intrinsic(_InterlockedCompareExchange8_rel) +#pragma intrinsic(_InterlockedCompareExchange16_nf) +#pragma intrinsic(_InterlockedCompareExchange16_acq) +#pragma intrinsic(_InterlockedCompareExchange16_rel) +#pragma intrinsic(_InterlockedCompareExchange_nf) +#pragma intrinsic(_InterlockedCompareExchange_acq) +#pragma intrinsic(_InterlockedCompareExchange_rel) +#pragma intrinsic(_InterlockedCompareExchange64) +#pragma intrinsic(_InterlockedCompareExchange64_nf) +#pragma intrinsic(_InterlockedCompareExchange64_acq) +#pragma intrinsic(_InterlockedCompareExchange64_rel) +#pragma intrinsic(_InterlockedCompareExchangePointer) +#pragma intrinsic(_InterlockedCompareExchangePointer_nf) +#pragma intrinsic(_InterlockedCompareExchangePointer_acq) +#pragma intrinsic(_InterlockedCompareExchangePointer_rel) + +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_RELAXED(dest, exchange, compare) _InterlockedCompareExchange8_nf((char*)(dest), (char)(exchange), (char)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchange8_acq((char*)(dest), (char)(exchange), (char)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_RELEASE(dest, exchange, compare) _InterlockedCompareExchange8_rel((char*)(dest), (char)(exchange), (char)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_RELAXED(dest, exchange, compare) _InterlockedCompareExchange16_nf((short*)(dest), (short)(exchange), (short)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchange16_acq((short*)(dest), (short)(exchange), (short)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_RELEASE(dest, exchange, compare) _InterlockedCompareExchange16_rel((short*)(dest), (short)(exchange), (short)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_RELAXED(dest, exchange, compare) _InterlockedCompareExchange_nf((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchange_acq((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_RELEASE(dest, exchange, compare) _InterlockedCompareExchange_rel((long*)(dest), (long)(exchange), (long)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(dest, exchange, compare) _InterlockedCompareExchange64((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_RELAXED(dest, exchange, compare) _InterlockedCompareExchange64_nf((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchange64_acq((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_RELEASE(dest, exchange, compare) _InterlockedCompareExchange64_rel((__int64*)(dest), (__int64)(exchange), (__int64)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest, exchange, compare) _InterlockedCompareExchangePointer((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER_RELAXED(dest, exchange, compare) _InterlockedCompareExchangePointer_nf((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER_ACQUIRE(dest, exchange, compare) _InterlockedCompareExchangePointer_acq((void**)(dest), (void*)(exchange), (void*)(compare)) +#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER_RELEASE(dest, exchange, compare) _InterlockedCompareExchangePointer_rel((void**)(dest), (void*)(exchange), (void*)(compare)) + +#pragma intrinsic(_InterlockedExchangeAdd8_nf) +#pragma intrinsic(_InterlockedExchangeAdd8_acq) +#pragma intrinsic(_InterlockedExchangeAdd8_rel) +#pragma intrinsic(_InterlockedExchangeAdd16_nf) +#pragma intrinsic(_InterlockedExchangeAdd16_acq) +#pragma intrinsic(_InterlockedExchangeAdd16_rel) +#pragma intrinsic(_InterlockedExchangeAdd_nf) +#pragma intrinsic(_InterlockedExchangeAdd_acq) +#pragma intrinsic(_InterlockedExchangeAdd_rel) +#pragma intrinsic(_InterlockedExchangeAdd64_nf) +#pragma intrinsic(_InterlockedExchangeAdd64_acq) +#pragma intrinsic(_InterlockedExchangeAdd64_rel) + +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_RELAXED(dest, addend) _InterlockedExchangeAdd8_nf((char*)(dest), (char)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_ACQUIRE(dest, addend) _InterlockedExchangeAdd8_acq((char*)(dest), (char)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_RELEASE(dest, addend) _InterlockedExchangeAdd8_rel((char*)(dest), (char)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_RELAXED(dest, addend) _InterlockedExchangeAdd16_nf((short*)(dest), (short)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_ACQUIRE(dest, addend) _InterlockedExchangeAdd16_acq((short*)(dest), (short)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_RELEASE(dest, addend) _InterlockedExchangeAdd16_rel((short*)(dest), (short)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELAXED(dest, addend) _InterlockedExchangeAdd_nf((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_ACQUIRE(dest, addend) _InterlockedExchangeAdd_acq((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELEASE(dest, addend) _InterlockedExchangeAdd_rel((long*)(dest), (long)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELAXED(dest, addend) _InterlockedExchangeAdd64_nf((__int64*)(dest), (__int64)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_ACQUIRE(dest, addend) _InterlockedExchangeAdd64_acq((__int64*)(dest), (__int64)(addend)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELEASE(dest, addend) _InterlockedExchangeAdd64_rel((__int64*)(dest), (__int64)(addend)) + +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD((long*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_RELAXED(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELAXED((long*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_ACQUIRE(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_ACQUIRE((long*)(dest), byte_offset)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER_RELEASE(dest, byte_offset) ((void*)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELEASE((long*)(dest), byte_offset)) + +#pragma intrinsic(_InterlockedExchange8_nf) +#pragma intrinsic(_InterlockedExchange8_acq) +#pragma intrinsic(_InterlockedExchange16_nf) +#pragma intrinsic(_InterlockedExchange16_acq) +#pragma intrinsic(_InterlockedExchange_nf) +#pragma intrinsic(_InterlockedExchange_acq) +#pragma intrinsic(_InterlockedExchange64_nf) +#pragma intrinsic(_InterlockedExchange64_acq) +#pragma intrinsic(_InterlockedExchangePointer) +#pragma intrinsic(_InterlockedExchangePointer_nf) +#pragma intrinsic(_InterlockedExchangePointer_acq) +#if _MSC_VER >= 1800 +#pragma intrinsic(_InterlockedExchange8_rel) +#pragma intrinsic(_InterlockedExchange16_rel) +#pragma intrinsic(_InterlockedExchange_rel) +#pragma intrinsic(_InterlockedExchange64_rel) +#pragma intrinsic(_InterlockedExchangePointer_rel) +#endif + +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELAXED(dest, newval) _InterlockedExchange8_nf((char*)(dest), (char)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_ACQUIRE(dest, newval) _InterlockedExchange8_acq((char*)(dest), (char)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELAXED(dest, newval) _InterlockedExchange16_nf((short*)(dest), (short)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_ACQUIRE(dest, newval) _InterlockedExchange16_acq((short*)(dest), (short)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELAXED(dest, newval) _InterlockedExchange_nf((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ACQUIRE(dest, newval) _InterlockedExchange_acq((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELAXED(dest, newval) _InterlockedExchange64_nf((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_ACQUIRE(dest, newval) _InterlockedExchange64_acq((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) _InterlockedExchangePointer((void**)(dest), (void*)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER_RELAXED(dest, newval) _InterlockedExchangePointer_nf((void**)(dest), (void*)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER_ACQUIRE(dest, newval) _InterlockedExchangePointer_acq((void**)(dest), (void*)(newval)) + +#if _MSC_VER >= 1800 +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELEASE(dest, newval) _InterlockedExchange8_rel((char*)(dest), (char)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELEASE(dest, newval) _InterlockedExchange16_rel((short*)(dest), (short)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELEASE(dest, newval) _InterlockedExchange_rel((long*)(dest), (long)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELEASE(dest, newval) _InterlockedExchange64_rel((__int64*)(dest), (__int64)(newval)) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER_RELEASE(dest, newval) _InterlockedExchangePointer_rel((void**)(dest), (void*)(newval)) +#else +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(dest, newval) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(dest, newval) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE(dest, newval) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(dest, newval) +#define BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER_RELEASE(dest, newval) BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(dest, newval) +#endif + +#pragma intrinsic(_InterlockedAnd8_nf) +#pragma intrinsic(_InterlockedAnd8_acq) +#pragma intrinsic(_InterlockedAnd8_rel) +#pragma intrinsic(_InterlockedAnd16_nf) +#pragma intrinsic(_InterlockedAnd16_acq) +#pragma intrinsic(_InterlockedAnd16_rel) +#pragma intrinsic(_InterlockedAnd_nf) +#pragma intrinsic(_InterlockedAnd_acq) +#pragma intrinsic(_InterlockedAnd_rel) +#pragma intrinsic(_InterlockedAnd64_nf) +#pragma intrinsic(_InterlockedAnd64_acq) +#pragma intrinsic(_InterlockedAnd64_rel) + +#define BOOST_ATOMIC_INTERLOCKED_AND8_RELAXED(dest, arg) _InterlockedAnd8_nf((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND8_ACQUIRE(dest, arg) _InterlockedAnd8_acq((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND8_RELEASE(dest, arg) _InterlockedAnd8_rel((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND16_RELAXED(dest, arg) _InterlockedAnd16_nf((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND16_ACQUIRE(dest, arg) _InterlockedAnd16_acq((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND16_RELEASE(dest, arg) _InterlockedAnd16_rel((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND_RELAXED(dest, arg) _InterlockedAnd_nf((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND_ACQUIRE(dest, arg) _InterlockedAnd_acq((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND_RELEASE(dest, arg) _InterlockedAnd_rel((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND64_RELAXED(dest, arg) _InterlockedAnd64_nf((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND64_ACQUIRE(dest, arg) _InterlockedAnd64_acq((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_AND64_RELEASE(dest, arg) _InterlockedAnd64_rel((__int64*)(dest), (__int64)(arg)) + +#pragma intrinsic(_InterlockedOr8_nf) +#pragma intrinsic(_InterlockedOr8_acq) +#pragma intrinsic(_InterlockedOr8_rel) +#pragma intrinsic(_InterlockedOr16_nf) +#pragma intrinsic(_InterlockedOr16_acq) +#pragma intrinsic(_InterlockedOr16_rel) +#pragma intrinsic(_InterlockedOr_nf) +#pragma intrinsic(_InterlockedOr_acq) +#pragma intrinsic(_InterlockedOr_rel) +#pragma intrinsic(_InterlockedOr64_nf) +#pragma intrinsic(_InterlockedOr64_acq) +#pragma intrinsic(_InterlockedOr64_rel) + +#define BOOST_ATOMIC_INTERLOCKED_OR8_RELAXED(dest, arg) _InterlockedOr8_nf((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR8_ACQUIRE(dest, arg) _InterlockedOr8_acq((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR8_RELEASE(dest, arg) _InterlockedOr8_rel((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR16_RELAXED(dest, arg) _InterlockedOr16_nf((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR16_ACQUIRE(dest, arg) _InterlockedOr16_acq((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR16_RELEASE(dest, arg) _InterlockedOr16_rel((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR_RELAXED(dest, arg) _InterlockedOr_nf((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR_ACQUIRE(dest, arg) _InterlockedOr_acq((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR_RELEASE(dest, arg) _InterlockedOr_rel((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64_RELAXED(dest, arg) _InterlockedOr64_nf((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64_ACQUIRE(dest, arg) _InterlockedOr64_acq((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_OR64_RELEASE(dest, arg) _InterlockedOr64_rel((__int64*)(dest), (__int64)(arg)) + +#pragma intrinsic(_InterlockedXor8_nf) +#pragma intrinsic(_InterlockedXor8_acq) +#pragma intrinsic(_InterlockedXor8_rel) +#pragma intrinsic(_InterlockedXor16_nf) +#pragma intrinsic(_InterlockedXor16_acq) +#pragma intrinsic(_InterlockedXor16_rel) +#pragma intrinsic(_InterlockedXor_nf) +#pragma intrinsic(_InterlockedXor_acq) +#pragma intrinsic(_InterlockedXor_rel) +#pragma intrinsic(_InterlockedXor64_nf) +#pragma intrinsic(_InterlockedXor64_acq) +#pragma intrinsic(_InterlockedXor64_rel) + +#define BOOST_ATOMIC_INTERLOCKED_XOR8_RELAXED(dest, arg) _InterlockedXor8_nf((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR8_ACQUIRE(dest, arg) _InterlockedXor8_acq((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR8_RELEASE(dest, arg) _InterlockedXor8_rel((char*)(dest), (char)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR16_RELAXED(dest, arg) _InterlockedXor16_nf((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR16_ACQUIRE(dest, arg) _InterlockedXor16_acq((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR16_RELEASE(dest, arg) _InterlockedXor16_rel((short*)(dest), (short)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR_RELAXED(dest, arg) _InterlockedXor_nf((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR_ACQUIRE(dest, arg) _InterlockedXor_acq((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR_RELEASE(dest, arg) _InterlockedXor_rel((long*)(dest), (long)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64_RELAXED(dest, arg) _InterlockedXor64_nf((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64_ACQUIRE(dest, arg) _InterlockedXor64_acq((__int64*)(dest), (__int64)(arg)) +#define BOOST_ATOMIC_INTERLOCKED_XOR64_RELEASE(dest, arg) _InterlockedXor64_rel((__int64*)(dest), (__int64)(arg)) + +#endif // _MSC_VER >= 1700 && defined(_M_ARM) + +#endif // _MSC_VER < 1400 + +#else // defined(_MSC_VER) && _MSC_VER >= 1310 #if defined(BOOST_USE_WINDOWS_H) diff --git a/3party/boost/boost/atomic/detail/link.hpp b/3party/boost/boost/atomic/detail/link.hpp new file mode 100644 index 0000000000..4f522acbcf --- /dev/null +++ b/3party/boost/boost/atomic/detail/link.hpp @@ -0,0 +1,58 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2012 Hartmut Kaiser + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/config.hpp + * + * This header defines macros for linking with compiled library of Boost.Atomic + */ + +#ifndef BOOST_ATOMIC_DETAIL_LINK_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_LINK_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Set up dll import/export options +#if (defined(BOOST_ATOMIC_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && \ + !defined(BOOST_ATOMIC_STATIC_LINK) + +#if defined(BOOST_ATOMIC_SOURCE) +#define BOOST_ATOMIC_DECL BOOST_SYMBOL_EXPORT +#define BOOST_ATOMIC_BUILD_DLL +#else +#define BOOST_ATOMIC_DECL BOOST_SYMBOL_IMPORT +#endif + +#endif // building a shared library + +#ifndef BOOST_ATOMIC_DECL +#define BOOST_ATOMIC_DECL +#endif + +/////////////////////////////////////////////////////////////////////////////// +// Auto library naming +#if !defined(BOOST_ATOMIC_SOURCE) && !defined(BOOST_ALL_NO_LIB) && \ + !defined(BOOST_ATOMIC_NO_LIB) + +#define BOOST_LIB_NAME boost_atomic + +// tell the auto-link code to select a dll when required: +#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_ATOMIC_DYN_LINK) +#define BOOST_DYN_LINK +#endif + +#include + +#endif // auto-linking disabled + +#endif diff --git a/3party/boost/boost/atomic/detail/linux-arm.hpp b/3party/boost/boost/atomic/detail/linux-arm.hpp deleted file mode 100644 index af1606e282..0000000000 --- a/3party/boost/boost/atomic/detail/linux-arm.hpp +++ /dev/null @@ -1,189 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_LINUX_ARM_HPP -#define BOOST_ATOMIC_DETAIL_LINUX_ARM_HPP - -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// Copyright (c) 2009, 2011 Helge Bahmann -// Copyright (c) 2009 Phil Endecott -// Copyright (c) 2013 Tim Blechmann -// Linux-specific code by Phil Endecott - -// Different ARM processors have different atomic instructions. In particular, -// architecture versions before v6 (which are still in widespread use, e.g. the -// Intel/Marvell XScale chips like the one in the NSLU2) have only atomic swap. -// On Linux the kernel provides some support that lets us abstract away from -// these differences: it provides emulated CAS and barrier functions at special -// addresses that are guaranteed not to be interrupted by the kernel. Using -// this facility is slightly slower than inline assembler would be, but much -// faster than a system call. -// -// While this emulated CAS is "strong" in the sense that it does not fail -// "spuriously" (i.e.: it never fails to perform the exchange when the value -// found equals the value expected), it does not return the found value on -// failure. To satisfy the atomic API, compare_exchange_{weak|strong} must -// return the found value on failure, and we have to manually load this value -// after the emulated CAS reports failure. This in turn introduces a race -// between the CAS failing (due to the "wrong" value being found) and subsequently -// loading (which might turn up the "right" value). From an application's -// point of view this looks like "spurious failure", and therefore the -// emulated CAS is only good enough to provide compare_exchange_weak -// semantics. - -#include -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -namespace boost { -namespace atomics { -namespace detail { - -inline void -arm_barrier(void) -{ - void (*kernel_dmb)(void) = (void (*)(void)) 0xffff0fa0; - kernel_dmb(); -} - -inline void -platform_fence_before(memory_order order) -{ - switch(order) { - case memory_order_release: - case memory_order_acq_rel: - case memory_order_seq_cst: - arm_barrier(); - case memory_order_consume: - default:; - } -} - -inline void -platform_fence_after(memory_order order) -{ - switch(order) { - case memory_order_acquire: - case memory_order_acq_rel: - case memory_order_seq_cst: - arm_barrier(); - default:; - } -} - -inline void -platform_fence_before_store(memory_order order) -{ - platform_fence_before(order); -} - -inline void -platform_fence_after_store(memory_order order) -{ - if (order == memory_order_seq_cst) - arm_barrier(); -} - -inline void -platform_fence_after_load(memory_order order) -{ - platform_fence_after(order); -} - -template -inline bool -platform_cmpxchg32(T & expected, T desired, volatile T * ptr) -{ - typedef T (*kernel_cmpxchg32_t)(T oldval, T newval, volatile T * ptr); - - if (((kernel_cmpxchg32_t) 0xffff0fc0)(expected, desired, ptr) == 0) { - return true; - } else { - expected = *ptr; - return false; - } -} - -} -} - -#define BOOST_ATOMIC_THREAD_FENCE 2 -inline void -atomic_thread_fence(memory_order order) -{ - switch(order) { - case memory_order_acquire: - case memory_order_release: - case memory_order_acq_rel: - case memory_order_seq_cst: - atomics::detail::arm_barrier(); - default:; - } -} - -#define BOOST_ATOMIC_SIGNAL_FENCE 2 -inline void -atomic_signal_fence(memory_order) -{ - __asm__ __volatile__ ("" ::: "memory"); -} - -class atomic_flag -{ -private: - atomic_flag(const atomic_flag &) /* = delete */ ; - atomic_flag & operator=(const atomic_flag &) /* = delete */ ; - uint32_t v_; -public: - BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {} - - void - clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before_store(order); - const_cast(v_) = 0; - atomics::detail::platform_fence_after_store(order); - } - - bool - test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before(order); - uint32_t expected = v_; - do { - if (expected == 1) - break; - } while (!atomics::detail::platform_cmpxchg32(expected, (uint32_t)1, &v_)); - atomics::detail::platform_fence_after(order); - return expected; - } -}; -#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 - -} - -#include - -#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) - -#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2 -#define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2 -#define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2 -#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 -#define BOOST_ATOMIC_INT_LOCK_FREE 2 -#define BOOST_ATOMIC_LONG_LOCK_FREE 2 -#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 -#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 -#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 - -#include - -#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */ - -#endif diff --git a/3party/boost/boost/atomic/detail/lockpool.hpp b/3party/boost/boost/atomic/detail/lockpool.hpp index b86cfae235..4e249aa048 100644 --- a/3party/boost/boost/atomic/detail/lockpool.hpp +++ b/3party/boost/boost/atomic/detail/lockpool.hpp @@ -1,18 +1,24 @@ -#ifndef BOOST_ATOMIC_DETAIL_LOCKPOOL_HPP -#define BOOST_ATOMIC_DETAIL_LOCKPOOL_HPP +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013-2014 Andrey Semashev + */ +/*! + * \file atomic/detail/lockpool.hpp + * + * This header contains declaration of the lockpool used to emulate atomic ops. + */ -// Copyright (c) 2011 Helge Bahmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +#ifndef BOOST_ATOMIC_DETAIL_LOCKPOOL_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_LOCKPOOL_HPP_INCLUDED_ #include -#ifndef BOOST_ATOMIC_FLAG_LOCK_FREE -#include -#endif +#include -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE +#ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif @@ -20,78 +26,26 @@ namespace boost { namespace atomics { namespace detail { -#ifndef BOOST_ATOMIC_FLAG_LOCK_FREE - -class lockpool +struct lockpool { -public: - typedef mutex lock_type; class scoped_lock { - private: - lock_type& mtx_; - - scoped_lock(scoped_lock const&) /* = delete */; - scoped_lock& operator=(scoped_lock const&) /* = delete */; + void* m_lock; public: - explicit - scoped_lock(const volatile void * addr) : mtx_(get_lock_for(addr)) - { - mtx_.lock(); - } - ~scoped_lock() - { - mtx_.unlock(); - } + explicit BOOST_ATOMIC_DECL scoped_lock(const volatile void* addr) BOOST_NOEXCEPT; + BOOST_ATOMIC_DECL ~scoped_lock() BOOST_NOEXCEPT; + + BOOST_DELETED_FUNCTION(scoped_lock(scoped_lock const&)) + BOOST_DELETED_FUNCTION(scoped_lock& operator=(scoped_lock const&)) }; -private: - static BOOST_ATOMIC_DECL lock_type& get_lock_for(const volatile void * addr); + static BOOST_ATOMIC_DECL void thread_fence() BOOST_NOEXCEPT; + static BOOST_ATOMIC_DECL void signal_fence() BOOST_NOEXCEPT; }; -#else +} // namespace detail +} // namespace atomics +} // namespace boost -class lockpool -{ -public: - typedef atomic_flag lock_type; - - class scoped_lock - { - private: - atomic_flag& flag_; - uint8_t padding[128 - sizeof(atomic_flag)]; - - scoped_lock(const scoped_lock &) /* = delete */; - scoped_lock& operator=(const scoped_lock &) /* = delete */; - - public: - explicit - scoped_lock(const volatile void * addr) : flag_(get_lock_for(addr)) - { - for (; flag_.test_and_set(memory_order_acquire);) - { -#if defined(BOOST_ATOMIC_X86_PAUSE) - BOOST_ATOMIC_X86_PAUSE(); -#endif - } - } - - ~scoped_lock(void) - { - flag_.clear(memory_order_release); - } - }; - -private: - static BOOST_ATOMIC_DECL lock_type& get_lock_for(const volatile void * addr); -}; - -#endif - -} -} -} - -#endif +#endif // BOOST_ATOMIC_DETAIL_LOCKPOOL_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/operations.hpp b/3party/boost/boost/atomic/detail/operations.hpp new file mode 100644 index 0000000000..d81399a8e3 --- /dev/null +++ b/3party/boost/boost/atomic/detail/operations.hpp @@ -0,0 +1,24 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/operations.hpp + * + * This header defines atomic operations, including the emulated version. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPERATIONS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPERATIONS_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#endif // BOOST_ATOMIC_DETAIL_OPERATIONS_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/operations_fwd.hpp b/3party/boost/boost/atomic/detail/operations_fwd.hpp new file mode 100644 index 0000000000..69049e4630 --- /dev/null +++ b/3party/boost/boost/atomic/detail/operations_fwd.hpp @@ -0,0 +1,34 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/operations_fwd.hpp + * + * This header contains forward declaration of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPERATIONS_FWD_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPERATIONS_FWD_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< unsigned int Size, bool Signed > +struct operations; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPERATIONS_FWD_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/operations_lockfree.hpp b/3party/boost/boost/atomic/detail/operations_lockfree.hpp new file mode 100644 index 0000000000..b465403a6d --- /dev/null +++ b/3party/boost/boost/atomic/detail/operations_lockfree.hpp @@ -0,0 +1,30 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/operations_lockfree.hpp + * + * This header defines lockfree atomic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPERATIONS_LOCKFREE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPERATIONS_LOCKFREE_HPP_INCLUDED_ + +#include +#include + +#if !defined(BOOST_ATOMIC_EMULATED) +#include BOOST_ATOMIC_DETAIL_HEADER(boost/atomic/detail/ops_) +#else +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#endif // BOOST_ATOMIC_DETAIL_OPERATIONS_LOCKFREE_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_cas_based.hpp b/3party/boost/boost/atomic/detail/ops_cas_based.hpp new file mode 100644 index 0000000000..7f8d288f7f --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_cas_based.hpp @@ -0,0 +1,91 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_cas_based.hpp + * + * This header contains CAS-based implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_CAS_BASED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_CAS_BASED_HPP_INCLUDED_ + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base > +struct cas_based_operations : + public Base +{ + typedef typename Base::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val = Base::load(storage, memory_order_relaxed); + while (!Base::compare_exchange_weak(storage, old_val, old_val + v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val = Base::load(storage, memory_order_relaxed); + while (!Base::compare_exchange_weak(storage, old_val, old_val - v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val = Base::load(storage, memory_order_relaxed); + while (!Base::compare_exchange_weak(storage, old_val, v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val = Base::load(storage, memory_order_relaxed); + while (!Base::compare_exchange_weak(storage, old_val, old_val & v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val = Base::load(storage, memory_order_relaxed); + while (!Base::compare_exchange_weak(storage, old_val, old_val | v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val = Base::load(storage, memory_order_relaxed); + while (!Base::compare_exchange_weak(storage, old_val, old_val ^ v, order, memory_order_relaxed)) {} + return old_val; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + Base::store(storage, (storage_type)0, order); + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_CAS_BASED_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_emulated.hpp b/3party/boost/boost/atomic/detail/ops_emulated.hpp new file mode 100644 index 0000000000..597490f2d7 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_emulated.hpp @@ -0,0 +1,149 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_emulated.hpp + * + * This header contains lockpool-based implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_EMULATED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_EMULATED_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename T > +struct emulated_operations +{ + typedef T storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + lockpool::scoped_lock lock(&storage); + const_cast< storage_type& >(storage) = v; + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { + lockpool::scoped_lock lock(&storage); + return const_cast< storage_type const& >(storage); + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type& s = const_cast< storage_type& >(storage); + lockpool::scoped_lock lock(&storage); + storage_type old_val = s; + s += v; + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type& s = const_cast< storage_type& >(storage); + lockpool::scoped_lock lock(&storage); + storage_type old_val = s; + s -= v; + return old_val; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type& s = const_cast< storage_type& >(storage); + lockpool::scoped_lock lock(&storage); + storage_type old_val = s; + s = v; + return old_val; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type& s = const_cast< storage_type& >(storage); + lockpool::scoped_lock lock(&storage); + storage_type old_val = s; + const bool res = old_val == expected; + if (res) + s = desired; + expected = old_val; + + return res; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type& s = const_cast< storage_type& >(storage); + lockpool::scoped_lock lock(&storage); + storage_type old_val = s; + s &= v; + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type& s = const_cast< storage_type& >(storage); + lockpool::scoped_lock lock(&storage); + storage_type old_val = s; + s |= v; + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type& s = const_cast< storage_type& >(storage); + lockpool::scoped_lock lock(&storage); + storage_type old_val = s; + s ^= v; + return old_val; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return false; + } +}; + +template< unsigned int Size, bool Signed > +struct operations : + public emulated_operations< typename make_storage_type< Size, Signed >::type > +{ +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_EMULATED_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_extending_cas_based.hpp b/3party/boost/boost/atomic/detail/ops_extending_cas_based.hpp new file mode 100644 index 0000000000..d7f3c5f5de --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_extending_cas_based.hpp @@ -0,0 +1,65 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_extending_cas_based.hpp + * + * This header contains a boilerplate of the \c operations template implementation that requires sign/zero extension in arithmetic operations. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_EXTENDING_CAS_BASED_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_EXTENDING_CAS_BASED_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< typename Base, unsigned int Size, bool Signed > +struct extending_cas_based_operations : + public Base +{ + typedef typename Base::storage_type storage_type; + typedef typename make_storage_type< Size, Signed >::type emulated_storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val = Base::load(storage, memory_order_relaxed); + emulated_storage_type new_val; + do + { + new_val = static_cast< emulated_storage_type >(old_val) + static_cast< emulated_storage_type >(v); + } + while (!Base::compare_exchange_weak(storage, old_val, static_cast< storage_type >(new_val), order, memory_order_relaxed)); + return old_val; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type old_val = Base::load(storage, memory_order_relaxed); + emulated_storage_type new_val; + do + { + new_val = static_cast< emulated_storage_type >(old_val) - static_cast< emulated_storage_type >(v); + } + while (!Base::compare_exchange_weak(storage, old_val, static_cast< storage_type >(new_val), order, memory_order_relaxed)); + return old_val; + } +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_EXTENDING_CAS_BASED_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_gcc_alpha.hpp b/3party/boost/boost/atomic/detail/ops_gcc_alpha.hpp new file mode 100644 index 0000000000..d17c61d7a5 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_gcc_alpha.hpp @@ -0,0 +1,874 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_alpha.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ALPHA_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_ALPHA_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +/* + Refer to http://h71000.www7.hp.com/doc/82final/5601/5601pro_004.html + (HP OpenVMS systems documentation) and the Alpha Architecture Reference Manual. + */ + +/* + NB: The most natural thing would be to write the increment/decrement + operators along the following lines: + + __asm__ __volatile__ + ( + "1: ldl_l %0,%1 \n" + "addl %0,1,%0 \n" + "stl_c %0,%1 \n" + "beq %0,1b\n" + : "=&b" (tmp) + : "m" (value) + : "cc" + ); + + However according to the comments on the HP website and matching + comments in the Linux kernel sources this defies branch prediction, + as the cpu assumes that backward branches are always taken; so + instead copy the trick from the Linux kernel, introduce a forward + branch and back again. + + I have, however, had a hard time measuring the difference between + the two versions in microbenchmarks -- I am leaving it in nevertheless + as it apparently does not hurt either. +*/ + +struct gcc_alpha_operations_base +{ + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { + if ((order & memory_order_release) != 0) + __asm__ __volatile__ ("mb" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if ((order & (memory_order_consume | memory_order_acquire)) != 0) + __asm__ __volatile__ ("mb" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("mb" ::: "memory"); + } +}; + + +template< bool Signed > +struct operations< 4u, Signed > : + public gcc_alpha_operations_base +{ + typedef typename make_storage_type< 4u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "mov %3, %1\n" + "ldl_l %0, %2\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (tmp) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + int success; + storage_type current; + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %2, %4\n" // current = *(&storage) + "cmpeq %2, %0, %3\n" // success = current == expected + "mov %2, %0\n" // expected = current + "beq %3, 2f\n" // if (success == 0) goto end + "stl_c %1, %4\n" // storage = desired; desired = store succeeded + "mov %1, %3\n" // success = desired + "2:\n" + : "+&r" (expected), // %0 + "+&r" (desired), // %1 + "=&r" (current), // %2 + "=&r" (success) // %3 + : "m" (storage) // %4 + : + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + storage_type current, tmp; + fence_before(success_order); + __asm__ __volatile__ + ( + "1:\n" + "mov %5, %1\n" // tmp = desired + "ldl_l %2, %4\n" // current = *(&storage) + "cmpeq %2, %0, %3\n" // success = current == expected + "mov %2, %0\n" // expected = current + "beq %3, 2f\n" // if (success == 0) goto end + "stl_c %1, %4\n" // storage = tmp; tmp = store succeeded + "beq %1, 3f\n" // if (tmp == 0) goto retry + "mov %1, %3\n" // success = tmp + "2:\n" + + ".subsection 2\n" + "3: br 1b\n" + ".previous\n" + + : "+&r" (expected), // %0 + "=&r" (tmp), // %1 + "=&r" (current), // %2 + "=&r" (success) // %3 + : "m" (storage), // %4 + "r" (desired) // %5 + : + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "addl %0, %3, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "subl %0, %3, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "and %0, %3, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "bis %0, %3, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "xor %0, %3, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, 0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + + +template< > +struct operations< 1u, false > : + public operations< 4u, false > +{ + typedef operations< 4u, false > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "addl %0, %3, %1\n" + "zapnot %1, #1, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "subl %0, %3, %1\n" + "zapnot %1, #1, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } +}; + +template< > +struct operations< 1u, true > : + public operations< 4u, true > +{ + typedef operations< 4u, true > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "addl %0, %3, %1\n" + "sextb %1, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "subl %0, %3, %1\n" + "sextb %1, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } +}; + + +template< > +struct operations< 2u, false > : + public operations< 4u, false > +{ + typedef operations< 4u, false > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "addl %0, %3, %1\n" + "zapnot %1, #3, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "subl %0, %3, %1\n" + "zapnot %1, #3, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } +}; + +template< > +struct operations< 2u, true > : + public operations< 4u, true > +{ + typedef operations< 4u, true > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "addl %0, %3, %1\n" + "sextw %1, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldl_l %0, %2\n" + "subl %0, %3, %1\n" + "sextw %1, %1\n" + "stl_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } +}; + + +template< bool Signed > +struct operations< 8u, Signed > : + public gcc_alpha_operations_base +{ + typedef typename make_storage_type< 8u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "mov %3, %1\n" + "ldq_l %0, %2\n" + "stq_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (tmp) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + int success; + storage_type current; + __asm__ __volatile__ + ( + "1:\n" + "ldq_l %2, %4\n" // current = *(&storage) + "cmpeq %2, %0, %3\n" // success = current == expected + "mov %2, %0\n" // expected = current + "beq %3, 2f\n" // if (success == 0) goto end + "stq_c %1, %4\n" // storage = desired; desired = store succeeded + "mov %1, %3\n" // success = desired + "2:\n" + : "+&r" (expected), // %0 + "+&r" (desired), // %1 + "=&r" (current), // %2 + "=&r" (success) // %3 + : "m" (storage) // %4 + : + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + storage_type current, tmp; + fence_before(success_order); + __asm__ __volatile__ + ( + "1:\n" + "mov %5, %1\n" // tmp = desired + "ldq_l %2, %4\n" // current = *(&storage) + "cmpeq %2, %0, %3\n" // success = current == expected + "mov %2, %0\n" // expected = current + "beq %3, 2f\n" // if (success == 0) goto end + "stq_c %1, %4\n" // storage = tmp; tmp = store succeeded + "beq %1, 3f\n" // if (tmp == 0) goto retry + "mov %1, %3\n" // success = tmp + "2:\n" + + ".subsection 2\n" + "3: br 1b\n" + ".previous\n" + + : "+&r" (expected), // %0 + "=&r" (tmp), // %1 + "=&r" (current), // %2 + "=&r" (success) // %3 + : "m" (storage), // %4 + "r" (desired) // %5 + : + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldq_l %0, %2\n" + "addq %0, %3, %1\n" + "stq_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldq_l %0, %2\n" + "subq %0, %3, %1\n" + "stq_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldq_l %0, %2\n" + "and %0, %3, %1\n" + "stq_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldq_l %0, %2\n" + "bis %0, %3, %1\n" + "stq_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, modified; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldq_l %0, %2\n" + "xor %0, %3, %1\n" + "stq_c %1, %2\n" + "beq %1, 2f\n" + + ".subsection 2\n" + "2: br 1b\n" + ".previous\n" + + : "=&r" (original), // %0 + "=&r" (modified) // %1 + : "m" (storage), // %2 + "r" (v) // %3 + : + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, 0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __asm__ __volatile__ ("mb" ::: "memory"); +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_ALPHA_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_gcc_arm.hpp b/3party/boost/boost/atomic/detail/ops_gcc_arm.hpp new file mode 100644 index 0000000000..29e1e5a319 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_gcc_arm.hpp @@ -0,0 +1,971 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_arm.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +// From the ARM Architecture Reference Manual for architecture v6: +// +// LDREX{} , [] +// Specifies the destination register for the memory word addressed by +// Specifies the register containing the address. +// +// STREX{} , , [] +// Specifies the destination register for the returned status value. +// 0 if the operation updates memory +// 1 if the operation fails to update memory +// Specifies the register containing the word to be stored to memory. +// Specifies the register containing the address. +// Rd must not be the same register as Rm or Rn. +// +// ARM v7 is like ARM v6 plus: +// There are half-word and byte versions of the LDREX and STREX instructions, +// LDREXH, LDREXB, STREXH and STREXB. +// There are also double-word versions, LDREXD and STREXD. +// (Actually it looks like these are available from version 6k onwards.) +// FIXME these are not yet used; should be mostly a matter of copy-and-paste. +// I think you can supply an immediate offset to the address. +// +// A memory barrier is effected using a "co-processor 15" instruction, +// though a separate assembler mnemonic is available for it in v7. +// +// "Thumb 1" is a subset of the ARM instruction set that uses a 16-bit encoding. It +// doesn't include all instructions and in particular it doesn't include the co-processor +// instruction used for the memory barrier or the load-locked/store-conditional +// instructions. So, if we're compiling in "Thumb 1" mode, we need to wrap all of our +// asm blocks with code to temporarily change to ARM mode. +// +// You can only change between ARM and Thumb modes when branching using the bx instruction. +// bx takes an address specified in a register. The least significant bit of the address +// indicates the mode, so 1 is added to indicate that the destination code is Thumb. +// A temporary register is needed for the address and is passed as an argument to these +// macros. It must be one of the "low" registers accessible to Thumb code, specified +// using the "l" attribute in the asm statement. +// +// Architecture v7 introduces "Thumb 2", which does include (almost?) all of the ARM +// instruction set. (Actually, there was an extension of v6 called v6T2 which supported +// "Thumb 2" mode, but its architecture manual is no longer available, referring to v7.) +// So in v7 we don't need to change to ARM mode; we can write "universal +// assembler" which will assemble to Thumb 2 or ARM code as appropriate. The only thing +// we need to do to make this "universal" assembler mode work is to insert "IT" instructions +// to annotate the conditional instructions. These are ignored in other modes (e.g. v6), +// so they can always be present. + +// A note about memory_order_consume. Technically, this architecture allows to avoid +// unnecessary memory barrier after consume load since it supports data dependency ordering. +// However, some compiler optimizations may break a seemingly valid code relying on data +// dependency tracking by injecting bogus branches to aid out of order execution. +// This may happen not only in Boost.Atomic code but also in user's code, which we have no +// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php. +// For this reason we promote memory_order_consume to memory_order_acquire. + +#if defined(__thumb__) && !defined(__thumb2__) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 8f\n" "bx " #TMPREG "\n" ".arm\n" ".align 4\n" "8:\n" +#define BOOST_ATOMIC_DETAIL_ARM_ASM_END(TMPREG) "adr " #TMPREG ", 9f + 1\n" "bx " #TMPREG "\n" ".thumb\n" ".align 2\n" "9:\n" +#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(var) "=&l" (var) +#else +// The tmpreg may be wasted in this case, which is non-optimal. +#define BOOST_ATOMIC_DETAIL_ARM_ASM_START(TMPREG) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_END(TMPREG) +#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(var) "=&r" (var) +#endif + +struct gcc_arm_operations_base +{ + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { + if ((order & memory_order_release) != 0) + hardware_full_fence(); + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if ((order & (memory_order_consume | memory_order_acquire)) != 0) + hardware_full_fence(); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + hardware_full_fence(); + } + + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_DMB) + // Older binutils (supposedly, older than 2.21.1) didn't support symbolic or numeric arguments of the "dmb" instruction such as "ish" or "#11". + // As a workaround we have to inject encoded bytes of the instruction. There are two encodings for the instruction: ARM and Thumb. See ARM Architecture Reference Manual, A8.8.43. + // Since we cannot detect binutils version at compile time, we'll have to always use this hack. + __asm__ __volatile__ + ( +#if defined(__thumb2__) + ".short 0xF3BF, 0x8F5B\n" // dmb ish +#else + ".word 0xF57FF05B\n" // dmb ish +#endif + : + : + : "memory" + ); +#else + int tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "mcr\tp15, 0, r0, c7, c10, 5\n" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : "=&l" (tmp) + : + : "memory" + ); +#endif + } +}; + + +template< bool Signed > +struct operations< 4u, Signed > : + public gcc_arm_operations_base +{ + typedef typename make_storage_type< 4u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + fence_before(order); + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // load the original value + "strex %[tmp], %[value], %[storage]\n" // store the replacement, tmp = store failed + "teq %[tmp], #0\n" // check if store succeeded + "bne 1b\n" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage) + : [value] "r" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + uint32_t success; + uint32_t tmp; + storage_type original; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "mov %[success], #0\n" // success = 0 + "ldrex %[original], %[storage]\n" // original = *(&storage) + "cmp %[original], %[expected]\n" // flags = original==expected + "itt eq\n" // [hint that the following 2 instructions are conditional on flags.equal] + "strexeq %[success], %[desired], %[storage]\n" // if (flags.equal) *(&storage) = desired, success = store failed + "eoreq %[success], %[success], #1\n" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded) + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [success] "=&r" (success), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [expected] "r" (expected), // %4 + [desired] "r" (desired) // %5 + : "cc" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = original; + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + uint32_t success; + uint32_t tmp; + storage_type original; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "mov %[success], #0\n" // success = 0 + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "cmp %[original], %[expected]\n" // flags = original==expected + "bne 2f\n" // if (!flags.equal) goto end + "strex %[success], %[desired], %[storage]\n" // *(&storage) = desired, success = store failed + "eors %[success], %[success], #1\n" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0 + "beq 1b\n" // if (flags.equal) goto retry + "2:\n" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [success] "=&r" (success), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [expected] "r" (expected), // %4 + [desired] "r" (desired) // %5 + : "cc" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = original; + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "add %[result], %[original], %[value]\n" // result = original + value + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "sub %[result], %[original], %[value]\n" // result = original - value + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "and %[result], %[original], %[value]\n" // result = original & value + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "orr %[result], %[original], %[value]\n" // result = original | value + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "eor %[result], %[original], %[value]\n" // result = original ^ value + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, 0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + + +template< > +struct operations< 1u, false > : + public operations< 4u, false > +{ + typedef operations< 4u, false > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "add %[result], %[original], %[value]\n" // result = original + value + "uxtb %[result], %[result]\n" // zero extend result from 8 to 32 bits + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "sub %[result], %[original], %[value]\n" // result = original - value + "uxtb %[result], %[result]\n" // zero extend result from 8 to 32 bits + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } +}; + +template< > +struct operations< 1u, true > : + public operations< 4u, true > +{ + typedef operations< 4u, true > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "add %[result], %[original], %[value]\n" // result = original + value + "sxtb %[result], %[result]\n" // sign extend result from 8 to 32 bits + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "sub %[result], %[original], %[value]\n" // result = original - value + "sxtb %[result], %[result]\n" // sign extend result from 8 to 32 bits + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } +}; + + +template< > +struct operations< 2u, false > : + public operations< 4u, false > +{ + typedef operations< 4u, false > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "add %[result], %[original], %[value]\n" // result = original + value + "uxth %[result], %[result]\n" // zero extend result from 16 to 32 bits + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "sub %[result], %[original], %[value]\n" // result = original - value + "uxth %[result], %[result]\n" // zero extend result from 16 to 32 bits + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } +}; + +template< > +struct operations< 2u, true > : + public operations< 4u, true > +{ + typedef operations< 4u, true > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "add %[result], %[original], %[value]\n" // result = original + value + "sxth %[result], %[result]\n" // sign extend result from 16 to 32 bits + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + uint32_t tmp; + storage_type original, result; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp]) + "1:\n" + "ldrex %[original], %[storage]\n" // original = *(&storage) + "sub %[result], %[original], %[value]\n" // result = original - value + "sxth %[result], %[result]\n" // sign extend result from 16 to 32 bits + "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed + "teq %[tmp], #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp]) + : [original] "=&r" (original), // %0 + [result] "=&r" (result), // %1 + [tmp] "=&l" (tmp), // %2 + [storage] "+Q" (storage) // %3 + : [value] "r" (v) // %4 + : "cc" + ); + fence_after(order); + return original; + } +}; + + +#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD) + +// Unlike 32-bit operations, for 64-bit loads and stores we must use ldrexd/strexd. +// Any other instructions result in a non-atomic sequence of 32-bit accesses. +// See "ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition", +// Section A3.5.3 "Atomicity in the ARM architecture". + +// In the asm blocks below we have to use 32-bit register pairs to compose 64-bit values. +// In order to pass the 64-bit operands to/from asm blocks, we use undocumented gcc feature: +// the lower half (Rt) of the operand is accessible normally, via the numbered placeholder (e.g. %0), +// and the upper half (Rt2) - via the same placeholder with an 'H' after the '%' sign (e.g. %H0). +// See: http://hardwarebug.org/2010/07/06/arm-inline-asm-secrets/ + +template< bool Signed > +struct operations< 8u, Signed > : + public gcc_arm_operations_base +{ + typedef typename make_storage_type< 8u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + exchange(storage, v, order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "ldrexd %1, %H1, [%2]\n" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original) // %1 + : "r" (&storage) // %2 + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + fence_before(order); + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n" + "ldrexd %1, %H1, [%3]\n" // load the original value + "strexd %0, %2, %H2, [%3]\n" // store the replacement, tmp = store failed + "teq %0, #0\n" // check if store succeeded + "bne 1b\n" + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original) // %1 + : "r" (v), // %2 + "r" (&storage) // %3 + : "cc", "memory" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + uint32_t tmp; + storage_type original, old_val = expected; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "ldrexd %1, %H1, [%3]\n" // original = *(&storage) + "cmp %1, %2\n" // flags = original.lo==old_val.lo + "ittt eq\n" // [hint that the following 3 instructions are conditional on flags.equal] + "cmpeq %H1, %H2\n" // if (flags.equal) flags = original.hi==old_val.hi + "strexdeq %0, %4, %H4, [%3]\n" // if (flags.equal) *(&storage) = desired, tmp = store failed + "teqeq %0, #0\n" // if (flags.equal) flags = tmp==0 + "ite eq\n" // [hint that the following 2 instructions are conditional on flags.equal] + "moveq %2, #1\n" // if (flags.equal) old_val.lo = 1 + "movne %2, #0\n" // if (!flags.equal) old_val.lo = 0 + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "+r" (old_val) // %2 + : "r" (&storage), // %3 + "r" (desired) // %4 + : "cc", "memory" + ); + const uint32_t success = (uint32_t)old_val; + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = original; + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + uint32_t tmp; + storage_type original, old_val = expected; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n" + "ldrexd %1, %H1, [%3]\n" // original = *(&storage) + "cmp %1, %2\n" // flags = original.lo==old_val.lo + "it eq\n" // [hint that the following instruction is conditional on flags.equal] + "cmpeq %H1, %H2\n" // if (flags.equal) flags = original.hi==old_val.hi + "bne 2f\n" // if (!flags.equal) goto end + "strexd %0, %4, %H4, [%3]\n" // *(&storage) = desired, tmp = store failed + "teq %0, #0\n" // flags.equal = tmp == 0 + "bne 1b\n" // if (flags.equal) goto retry + "2:\n" + "ite eq\n" // [hint that the following 2 instructions are conditional on flags.equal] + "moveq %2, #1\n" // if (flags.equal) old_val.lo = 1 + "movne %2, #0\n" // if (!flags.equal) old_val.lo = 0 + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "+r" (old_val) // %2 + : "r" (&storage), // %3 + "r" (desired) // %4 + : "cc", "memory" + ); + const uint32_t success = (uint32_t)old_val; + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = original; + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n" + "ldrexd %1, %H1, [%3]\n" // original = *(&storage) + "adds %2, %1, %4\n" // result = original + value + "adc %H2, %H1, %H4\n" + "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed + "teq %0, #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result) // %2 + : "r" (&storage), // %3 + "r" (v) // %4 + : "cc", "memory" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n" + "ldrexd %1, %H1, [%3]\n" // original = *(&storage) + "subs %2, %1, %4\n" // result = original - value + "sbc %H2, %H1, %H4\n" + "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed + "teq %0, #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result) // %2 + : "r" (&storage), // %3 + "r" (v) // %4 + : "cc", "memory" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n" + "ldrexd %1, %H1, [%3]\n" // original = *(&storage) + "and %2, %1, %4\n" // result = original & value + "and %H2, %H1, %H4\n" + "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed + "teq %0, #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result) // %2 + : "r" (&storage), // %3 + "r" (v) // %4 + : "cc", "memory" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n" + "ldrexd %1, %H1, [%3]\n" // original = *(&storage) + "orr %2, %1, %4\n" // result = original | value + "orr %H2, %H1, %H4\n" + "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed + "teq %0, #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result) // %2 + : "r" (&storage), // %3 + "r" (v) // %4 + : "cc", "memory" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + storage_type original, result; + uint32_t tmp; + __asm__ __volatile__ + ( + BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0) + "1:\n" + "ldrexd %1, %H1, [%3]\n" // original = *(&storage) + "eor %2, %1, %4\n" // result = original ^ value + "eor %H2, %H1, %H4\n" + "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed + "teq %0, #0\n" // flags = tmp==0 + "bne 1b\n" // if (!flags.equal) goto retry + BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0) + : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0 + "=&r" (original), // %1 + "=&r" (result) // %2 + : "r" (&storage), // %3 + "r" (v) // %4 + : "cc", "memory" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, 0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD) + + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + gcc_arm_operations_base::hardware_full_fence(); +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_gcc_atomic.hpp b/3party/boost/boost/atomic/detail/ops_gcc_atomic.hpp new file mode 100644 index 0000000000..22977910c3 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_gcc_atomic.hpp @@ -0,0 +1,238 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_atomic.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ATOMIC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_ATOMIC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#if defined(__clang__) && (defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B)) +#include +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__INTEL_COMPILER) +// This is used to suppress warning #32013 described below for Intel Compiler. +// In debug builds the compiler does not inline any functions, so basically +// every atomic function call results in this warning. I don't know any other +// way to selectively disable just this one warning. +#pragma system_header +#endif + +namespace boost { +namespace atomics { +namespace detail { + +/*! + * The function converts \c boost::memory_order values to the compiler-specific constants. + * + * NOTE: The intention is that the function is optimized away by the compiler, and the + * compiler-specific constants are passed to the intrinsics. I know constexpr doesn't + * work in this case because the standard atomics interface require memory ordering + * constants to be passed as function arguments, at which point they stop being constexpr. + * However it is crucial that the compiler sees constants and not runtime values, + * because otherwise it just ignores the ordering value and always uses seq_cst. + * This is the case with Intel C++ Compiler 14.0.3 (Composer XE 2013 SP1, update 3) and + * gcc 4.8.2. Intel Compiler issues a warning in this case: + * + * warning #32013: Invalid memory order specified. Defaulting to seq_cst memory order. + * + * while gcc acts silently. + * + * To mitigate the problem ALL functions, including the atomic<> members must be + * declared with BOOST_FORCEINLINE. In this case the compilers are able to see that + * all functions are called with constant orderings and call intrinstcts properly. + * + * Unfortunately, this still doesn't work in debug mode as the compiler doesn't + * inline functions even when marked with BOOST_FORCEINLINE. In this case all atomic + * operaions will be executed with seq_cst semantics. + */ +BOOST_FORCEINLINE BOOST_CONSTEXPR int convert_memory_order_to_gcc(memory_order order) BOOST_NOEXCEPT +{ + return (order == memory_order_relaxed ? __ATOMIC_RELAXED : (order == memory_order_consume ? __ATOMIC_CONSUME : + (order == memory_order_acquire ? __ATOMIC_ACQUIRE : (order == memory_order_release ? __ATOMIC_RELEASE : + (order == memory_order_acq_rel ? __ATOMIC_ACQ_REL : __ATOMIC_SEQ_CST))))); +} + +template< typename T > +struct gcc_atomic_operations +{ + typedef T storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + __atomic_store_n(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return __atomic_load_n(&storage, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_add(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_sub(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_exchange_n(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return __atomic_compare_exchange_n + ( + &storage, &expected, desired, false, + atomics::detail::convert_memory_order_to_gcc(success_order), + atomics::detail::convert_memory_order_to_gcc(failure_order) + ); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return __atomic_compare_exchange_n + ( + &storage, &expected, desired, true, + atomics::detail::convert_memory_order_to_gcc(success_order), + atomics::detail::convert_memory_order_to_gcc(failure_order) + ); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_and(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_or(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return __atomic_fetch_xor(&storage, v, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return __atomic_test_and_set(&storage, atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + __atomic_clear(const_cast< storage_type* >(&storage), atomics::detail::convert_memory_order_to_gcc(order)); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile& storage) BOOST_NOEXCEPT + { + return __atomic_is_lock_free(sizeof(storage_type), &storage); + } +}; + +#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 +template< bool Signed > +struct operations< 1u, Signed > : + public gcc_atomic_operations< typename make_storage_type< 1u, Signed >::type > +{ +}; +#endif + +#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 +template< bool Signed > +struct operations< 2u, Signed > : + public gcc_atomic_operations< typename make_storage_type< 2u, Signed >::type > +{ +}; +#endif + +#if BOOST_ATOMIC_INT32_LOCK_FREE > 0 +template< bool Signed > +struct operations< 4u, Signed > : + public gcc_atomic_operations< typename make_storage_type< 4u, Signed >::type > +{ +}; +#endif + +#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 +#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) + +// Workaround for clang bug http://llvm.org/bugs/show_bug.cgi?id=19355 +template< bool Signed > +struct operations< 8u, Signed > : + public cas_based_operations< gcc_dcas_x86< Signed > > +{ +}; + +#else + +template< bool Signed > +struct operations< 8u, Signed > : + public gcc_atomic_operations< typename make_storage_type< 8u, Signed >::type > +{ +}; + +#endif +#endif + +#if BOOST_ATOMIC_INT128_LOCK_FREE > 0 +#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +// Workaround for clang bug: http://llvm.org/bugs/show_bug.cgi?id=19149 +// Clang 3.4 does not implement 128-bit __atomic* intrinsics even though it defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 +template< bool Signed > +struct operations< 16u, Signed > : + public cas_based_operations< gcc_dcas_x86_64< Signed > > +{ +}; + +#else + +template< bool Signed > +struct operations< 16u, Signed > : + public gcc_atomic_operations< typename make_storage_type< 16u, Signed >::type > +{ +}; + +#endif +#endif + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + __atomic_thread_fence(atomics::detail::convert_memory_order_to_gcc(order)); +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + __atomic_signal_fence(atomics::detail::convert_memory_order_to_gcc(order)); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_ATOMIC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_gcc_ppc.hpp b/3party/boost/boost/atomic/detail/ops_gcc_ppc.hpp new file mode 100644 index 0000000000..1a1fbb7f94 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_gcc_ppc.hpp @@ -0,0 +1,775 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_ppc.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_PPC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_PPC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +/* + Refer to: Motorola: "Programming Environments Manual for 32-Bit + Implementations of the PowerPC Architecture", Appendix E: + "Synchronization Programming Examples" for an explanation of what is + going on here (can be found on the web at various places by the + name "MPCFPE32B.pdf", Google is your friend...) + + Most of the atomic operations map to instructions in a relatively + straight-forward fashion, but "load"s may at first glance appear + a bit strange as they map to: + + lwz %rX, addr + cmpw %rX, %rX + bne- 1f + 1: + + That is, the CPU is forced to perform a branch that "formally" depends + on the value retrieved from memory. This scheme has an overhead of + about 1-2 clock cycles per load, but it allows to map "acquire" to + the "isync" instruction instead of "sync" uniformly and for all type + of atomic operations. Since "isync" has a cost of about 15 clock + cycles, while "sync" hast a cost of about 50 clock cycles, the small + penalty to atomic loads more than compensates for this. + + Byte- and halfword-sized atomic values are realized by encoding the + value to be represented into a word, performing sign/zero extension + as appropriate. This means that after add/sub operations the value + needs fixing up to accurately preserve the wrap-around semantic of + the smaller type. (Nothing special needs to be done for the bit-wise + and the "exchange type" operators as the compiler already sees to + it that values carried in registers are extended appropriately and + everything falls into place naturally). + + The register constraint "b" instructs gcc to use any register + except r0; this is sometimes required because the encoding for + r0 is used to signify "constant zero" in a number of instructions, + making r0 unusable in this place. For simplicity this constraint + is used everywhere since I am to lazy to look this up on a + per-instruction basis, and ppc has enough registers for this not + to pose a problem. +*/ + +// A note about memory_order_consume. Technically, this architecture allows to avoid +// unnecessary memory barrier after consume load since it supports data dependency ordering. +// However, some compiler optimizations may break a seemingly valid code relying on data +// dependency tracking by injecting bogus branches to aid out of order execution. +// This may happen not only in Boost.Atomic code but also in user's code, which we have no +// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php. +// For this reason we promote memory_order_consume to memory_order_acquire. + +struct gcc_ppc_operations_base +{ + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { +#if defined(__powerpc64__) + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("sync" ::: "memory"); + else if ((order & memory_order_release) != 0) + __asm__ __volatile__ ("lwsync" ::: "memory"); +#else + if ((order & memory_order_release) != 0) + __asm__ __volatile__ ("sync" ::: "memory"); +#endif + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if ((order & (memory_order_consume | memory_order_acquire)) != 0) + __asm__ __volatile__ ("isync" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("sync" ::: "memory"); + } +}; + + +template< bool Signed > +struct operations< 4u, Signed > : + public gcc_ppc_operations_base +{ + typedef typename make_storage_type< 4u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + __asm__ __volatile__ + ( + "stw %1, %0\n" + : "+m" (storage) + : "r" (v) + ); + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + __asm__ __volatile__ + ( + "lwz %0, %1\n" + "cmpw %0, %0\n" + "bne- 1f\n" + "1:\n" + : "=&r" (v) + : "m" (storage) + : "cr0" + ); + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y1\n" + "stwcx. %2,%y1\n" + "bne- 1b\n" + : "=&b" (original), "+Z" (storage) + : "b" (v) + : "cr0" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n" + "lwarx %0,%y2\n" + "cmpw %0, %3\n" + "bne- 1f\n" + "stwcx. %4,%y2\n" + "bne- 1f\n" + "li %1, 1\n" + "1:" + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n" + "0: lwarx %0,%y2\n" + "cmpw %0, %3\n" + "bne- 1f\n" + "stwcx. %4,%y2\n" + "bne- 0b\n" + "li %1, 1\n" + "1:" + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "add %1,%0,%3\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "sub %1,%0,%3\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "and %1,%0,%3\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "or %1,%0,%3\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "xor %1,%0,%3\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, 0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + + +template< > +struct operations< 1u, false > : + public operations< 4u, false > +{ + typedef operations< 4u, false > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "add %1,%0,%3\n" + "rlwinm %1, %1, 0, 0xff\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "sub %1,%0,%3\n" + "rlwinm %1, %1, 0, 0xff\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } +}; + +template< > +struct operations< 1u, true > : + public operations< 4u, true > +{ + typedef operations< 4u, true > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "add %1,%0,%3\n" + "extsb %1, %1\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "sub %1,%0,%3\n" + "extsb %1, %1\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } +}; + + +template< > +struct operations< 2u, false > : + public operations< 4u, false > +{ + typedef operations< 4u, false > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "add %1,%0,%3\n" + "rlwinm %1, %1, 0, 0xffff\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "sub %1,%0,%3\n" + "rlwinm %1, %1, 0, 0xffff\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } +}; + +template< > +struct operations< 2u, true > : + public operations< 4u, true > +{ + typedef operations< 4u, true > base_type; + typedef base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "add %1,%0,%3\n" + "extsh %1, %1\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "lwarx %0,%y2\n" + "sub %1,%0,%3\n" + "extsh %1, %1\n" + "stwcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } +}; + + +#if defined(__powerpc64__) + +template< bool Signed > +struct operations< 8u, Signed > : + public gcc_ppc_operations_base +{ + typedef typename make_storage_type< 8u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before(order); + __asm__ __volatile__ + ( + "std %1, %0\n" + : "+m" (storage) + : "r" (v) + ); + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v; + __asm__ __volatile__ + ( + "ld %0, %1\n" + "cmpd %0, %0\n" + "bne- 1f\n" + "1:\n" + : "=&b" (v) + : "m" (storage) + : "cr0" + ); + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldarx %0,%y1\n" + "stdcx. %2,%y1\n" + "bne- 1b\n" + : "=&b" (original), "+Z" (storage) + : "b" (v) + : "cr0" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n" + "ldarx %0,%y2\n" + "cmpd %0, %3\n" + "bne- 1f\n" + "stdcx. %4,%y2\n" + "bne- 1f\n" + "li %1, 1\n" + "1:" + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + int success; + fence_before(success_order); + __asm__ __volatile__ + ( + "li %1, 0\n" + "0: ldarx %0,%y2\n" + "cmpd %0, %3\n" + "bne- 1f\n" + "stdcx. %4,%y2\n" + "bne- 0b\n" + "li %1, 1\n" + "1:" + : "=&b" (expected), "=&b" (success), "+Z" (storage) + : "b" (expected), "b" (desired) + : "cr0" + ); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + return !!success; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldarx %0,%y2\n" + "add %1,%0,%3\n" + "stdcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldarx %0,%y2\n" + "sub %1,%0,%3\n" + "stdcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldarx %0,%y2\n" + "and %1,%0,%3\n" + "stdcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldarx %0,%y2\n" + "or %1,%0,%3\n" + "stdcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type original, tmp; + fence_before(order); + __asm__ __volatile__ + ( + "1:\n" + "ldarx %0,%y2\n" + "xor %1,%0,%3\n" + "stdcx. %1,%y2\n" + "bne- 1b\n" + : "=&b" (original), "=&b" (tmp), "+Z" (storage) + : "b" (v) + : "cc" + ); + fence_after(order); + return original; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, 0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +#endif // defined(__powerpc64__) + + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + switch (order) + { + case memory_order_consume: + case memory_order_acquire: + __asm__ __volatile__ ("isync" ::: "memory"); + break; + case memory_order_release: +#if defined(__powerpc64__) + __asm__ __volatile__ ("lwsync" ::: "memory"); + break; +#endif + case memory_order_acq_rel: + case memory_order_seq_cst: + __asm__ __volatile__ ("sync" ::: "memory"); + break; + default:; + } +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_PPC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_gcc_sparc.hpp b/3party/boost/boost/atomic/detail/ops_gcc_sparc.hpp new file mode 100644 index 0000000000..ea6df91dc6 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_gcc_sparc.hpp @@ -0,0 +1,245 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2010 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_sparc.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_SPARC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_SPARC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct gcc_sparc_cas_base +{ + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("membar #Sync" ::: "memory"); + else if ((order & memory_order_release) != 0) + __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("membar #Sync" ::: "memory"); + else if ((order & (memory_order_consume | memory_order_acquire)) != 0) + __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __asm__ __volatile__ ("membar #Sync" ::: "memory"); + } +}; + +template< bool Signed > +struct gcc_sparc_cas32 : + public gcc_sparc_cas_base +{ + typedef typename make_storage_type< 4u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before_store(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + storage_type previous = expected; + __asm__ __volatile__ + ( + "cas [%1], %2, %0" + : "+r" (desired) + : "r" (&storage), "r" (previous) + : "memory" + ); + const bool success = (desired == previous); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = desired; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 4u, Signed > : + public cas_based_operations< gcc_sparc_cas32< Signed > > +{ + typedef cas_based_operations< gcc_sparc_cas32< Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm__ __volatile__ + ( + "swap [%1], %0" + : "+r" (v) + : "r" (&storage) + : "memory" + ); + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!exchange(storage, (storage_type)1, order); + } +}; + +template< bool Signed > +struct operations< 1u, Signed > : + public extending_cas_based_operations< operations< 4u, Signed >, 1u, Signed > +{ +}; + +template< bool Signed > +struct operations< 2u, Signed > : + public extending_cas_based_operations< operations< 4u, Signed >, 2u, Signed > +{ +}; + +template< bool Signed > +struct gcc_sparc_cas64 : + public gcc_sparc_cas_base +{ + typedef typename make_storage_type< 8u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before_store(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + fence_before(success_order); + storage_type previous = expected; + __asm__ __volatile__ + ( + "casx [%1], %2, %0" + : "+r" (desired) + : "r" (&storage), "r" (previous) + : "memory" + ); + const bool success = (desired == previous); + if (success) + fence_after(success_order); + else + fence_after(failure_order); + expected = desired; + return success; + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 8u, Signed > : + public cas_based_operations< gcc_sparc_cas64< Signed > > +{ +}; + + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + switch (order) + { + case memory_order_release: + __asm__ __volatile__ ("membar #StoreStore | #LoadStore" ::: "memory"); + break; + case memory_order_consume: + case memory_order_acquire: + __asm__ __volatile__ ("membar #LoadLoad | #LoadStore" ::: "memory"); + break; + case memory_order_acq_rel: + __asm__ __volatile__ ("membar #LoadLoad | #LoadStore | #StoreStore" ::: "memory"); + break; + case memory_order_seq_cst: + __asm__ __volatile__ ("membar #Sync" ::: "memory"); + break; + case memory_order_relaxed: + default: + break; + } +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_SPARC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_gcc_sync.hpp b/3party/boost/boost/atomic/detail/ops_gcc_sync.hpp new file mode 100644 index 0000000000..f4fc3331c6 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_gcc_sync.hpp @@ -0,0 +1,237 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_sync.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_SYNC_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_SYNC_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct gcc_sync_operations_base +{ + static BOOST_FORCEINLINE void fence_before_store(memory_order order) BOOST_NOEXCEPT + { + if ((order & memory_order_release) != 0) + __sync_synchronize(); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + __sync_synchronize(); + } + + static BOOST_FORCEINLINE void fence_after_load(memory_order order) BOOST_NOEXCEPT + { + if ((order & (memory_order_acquire | memory_order_consume)) != 0) + __sync_synchronize(); + } +}; + +template< typename T > +struct gcc_sync_operations : + public gcc_sync_operations_base +{ + typedef T storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before_store(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_add(&storage, v); + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_sub(&storage, v); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + // GCC docs mention that not all architectures may support full exchange semantics for this intrinsic. However, GCC's implementation of + // std::atomic<> uses this intrinsic unconditionally. We do so as well. In case if some architectures actually don't support this, we can always + // add a check here and fall back to a CAS loop. + if ((order & memory_order_release) != 0) + __sync_synchronize(); + return __sync_lock_test_and_set(&storage, v); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type expected2 = expected; + storage_type old_val = __sync_val_compare_and_swap(&storage, expected2, desired); + + if (old_val == expected2) + { + return true; + } + else + { + expected = old_val; + return false; + } + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_and(&storage, v); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_or(&storage, v); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return __sync_fetch_and_xor(&storage, v); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + if ((order & memory_order_release) != 0) + __sync_synchronize(); + return !!__sync_lock_test_and_set(&storage, 1); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + __sync_lock_release(&storage); + if (order == memory_order_seq_cst) + __sync_synchronize(); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +#if BOOST_ATOMIC_INT8_LOCK_FREE > 0 +template< bool Signed > +struct operations< 1u, Signed > : +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1) + public gcc_sync_operations< typename make_storage_type< 1u, Signed >::type > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 2u, Signed >::type >, 1u, Signed > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 4u, Signed >::type >, 1u, Signed > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 8u, Signed >::type >, 1u, Signed > +#else + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 16u, Signed >::type >, 1u, Signed > +#endif +{ +}; +#endif + +#if BOOST_ATOMIC_INT16_LOCK_FREE > 0 +template< bool Signed > +struct operations< 2u, Signed > : +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) + public gcc_sync_operations< typename make_storage_type< 2u, Signed >::type > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 4u, Signed >::type >, 2u, Signed > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 8u, Signed >::type >, 2u, Signed > +#else + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 16u, Signed >::type >, 2u, Signed > +#endif +{ +}; +#endif + +#if BOOST_ATOMIC_INT32_LOCK_FREE > 0 +template< bool Signed > +struct operations< 4u, Signed > : +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) + public gcc_sync_operations< typename make_storage_type< 4u, Signed >::type > +#elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 8u, Signed >::type >, 4u, Signed > +#else + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 16u, Signed >::type >, 4u, Signed > +#endif +{ +}; +#endif + +#if BOOST_ATOMIC_INT64_LOCK_FREE > 0 +template< bool Signed > +struct operations< 8u, Signed > : +#if defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) + public gcc_sync_operations< typename make_storage_type< 8u, Signed >::type > +#else + public extending_cas_based_operations< gcc_sync_operations< typename make_storage_type< 16u, Signed >::type >, 8u, Signed > +#endif +{ +}; +#endif + +#if BOOST_ATOMIC_INT128_LOCK_FREE > 0 +template< bool Signed > +struct operations< 16u, Signed > : + public gcc_sync_operations< typename make_storage_type< 16u, Signed >::type > +{ +}; +#endif + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __sync_synchronize(); +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_SYNC_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_gcc_x86.hpp b/3party/boost/boost/atomic/detail/ops_gcc_x86.hpp new file mode 100644 index 0000000000..f18227f8a9 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_gcc_x86.hpp @@ -0,0 +1,510 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_x86.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_X86_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) +#include +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(__x86_64__) +#define BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER "rdx" +#else +#define BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER "edx" +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct gcc_x86_operations_base +{ + static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT + { + if ((order & memory_order_release) != 0) + __asm__ __volatile__ ("" ::: "memory"); + } + + static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT + { + if ((order & memory_order_acquire) != 0) + __asm__ __volatile__ ("" ::: "memory"); + } +}; + +template< typename T, typename Derived > +struct gcc_x86_operations : + public gcc_x86_operations_base +{ + typedef T storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_seq_cst) + { + fence_before(order); + storage = v; + fence_after(order); + } + else + { + Derived::exchange(storage, v, order); + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + return Derived::fetch_add(storage, -v, order); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return Derived::compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Derived::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 1u, Signed > : + public gcc_x86_operations< typename make_storage_type< 1u, Signed >::type, operations< 1u, Signed > > +{ + typedef gcc_x86_operations< typename make_storage_type< 1u, Signed >::type, operations< 1u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xaddb %0, %1" + : "+q" (v), "+m" (storage) + : + : "cc", "memory" + ); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "xchgb %0, %1" + : "+q" (v), "+m" (storage) + : + : "memory" + ); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + bool success; + __asm__ __volatile__ + ( + "lock; cmpxchgb %3, %1\n\t" + "sete %2" + : "+a" (previous), "+m" (storage), "=q" (success) + : "q" (desired) + : "cc", "memory" + ); + expected = previous; + return success; + } + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, result)\ + __asm__ __volatile__\ + (\ + "xor %%" BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER ", %%" BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER "\n\t"\ + ".align 16\n\t"\ + "1: movb %[arg], %%dl\n\t"\ + op " %%al, %%dl\n\t"\ + "lock; cmpxchgb %%dl, %[storage]\n\t"\ + "jne 1b"\ + : [res] "+a" (result), [storage] "+m" (storage)\ + : [arg] "q" (argument)\ + : "cc", BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andb", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orb", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorb", v, res); + return res; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP +}; + +template< bool Signed > +struct operations< 2u, Signed > : + public gcc_x86_operations< typename make_storage_type< 2u, Signed >::type, operations< 2u, Signed > > +{ + typedef gcc_x86_operations< typename make_storage_type< 2u, Signed >::type, operations< 2u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xaddw %0, %1" + : "+q" (v), "+m" (storage) + : + : "cc", "memory" + ); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "xchgw %0, %1" + : "+q" (v), "+m" (storage) + : + : "memory" + ); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + bool success; + __asm__ __volatile__ + ( + "lock; cmpxchgw %3, %1\n\t" + "sete %2" + : "+a" (previous), "+m" (storage), "=q" (success) + : "q" (desired) + : "cc", "memory" + ); + expected = previous; + return success; + } + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, result)\ + __asm__ __volatile__\ + (\ + "xor %%" BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER ", %%" BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER "\n\t"\ + ".align 16\n\t"\ + "1: movw %[arg], %%dx\n\t"\ + op " %%ax, %%dx\n\t"\ + "lock; cmpxchgw %%dx, %[storage]\n\t"\ + "jne 1b"\ + : [res] "+a" (result), [storage] "+m" (storage)\ + : [arg] "q" (argument)\ + : "cc", BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andw", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orw", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorw", v, res); + return res; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP +}; + +template< bool Signed > +struct operations< 4u, Signed > : + public gcc_x86_operations< typename make_storage_type< 4u, Signed >::type, operations< 4u, Signed > > +{ + typedef gcc_x86_operations< typename make_storage_type< 4u, Signed >::type, operations< 4u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xaddl %0, %1" + : "+r" (v), "+m" (storage) + : + : "cc", "memory" + ); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "xchgl %0, %1" + : "+r" (v), "+m" (storage) + : + : "memory" + ); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + bool success; + __asm__ __volatile__ + ( + "lock; cmpxchgl %3, %1\n\t" + "sete %2" + : "+a" (previous), "+m" (storage), "=q" (success) + : "r" (desired) + : "cc", "memory" + ); + expected = previous; + return success; + } + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, result)\ + __asm__ __volatile__\ + (\ + "xor %%" BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER ", %%" BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER "\n\t"\ + ".align 16\n\t"\ + "1: movl %[arg], %%edx\n\t"\ + op " %%eax, %%edx\n\t"\ + "lock; cmpxchgl %%edx, %[storage]\n\t"\ + "jne 1b"\ + : [res] "+a" (result), [storage] "+m" (storage)\ + : [arg] "r" (argument)\ + : "cc", BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andl", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orl", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorl", v, res); + return res; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP +}; + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) + +template< bool Signed > +struct operations< 8u, Signed > : + public cas_based_operations< gcc_dcas_x86< Signed > > +{ +}; + +#elif defined(__x86_64__) + +template< bool Signed > +struct operations< 8u, Signed > : + public gcc_x86_operations< typename make_storage_type< 8u, Signed >::type, operations< 8u, Signed > > +{ + typedef gcc_x86_operations< typename make_storage_type< 8u, Signed >::type, operations< 8u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "lock; xaddq %0, %1" + : "+r" (v), "+m" (storage) + : + : "cc", "memory" + ); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + __asm__ __volatile__ + ( + "xchgq %0, %1" + : "+r" (v), "+m" (storage) + : + : "memory" + ); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + bool success; + __asm__ __volatile__ + ( + "lock; cmpxchgq %3, %1\n\t" + "sete %2" + : "+a" (previous), "+m" (storage), "=q" (success) + : "r" (desired) + : "cc", "memory" + ); + expected = previous; + return success; + } + +#define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, argument, result)\ + __asm__ __volatile__\ + (\ + "xor %%" BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER ", %%" BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER "\n\t"\ + ".align 16\n\t"\ + "1: movq %[arg], %%rdx\n\t"\ + op " %%rax, %%rdx\n\t"\ + "lock; cmpxchgq %%rdx, %[storage]\n\t"\ + "jne 1b"\ + : [res] "+a" (result), [storage] "+m" (storage)\ + : [arg] "r" (argument)\ + : "cc", BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER, "memory"\ + ) + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("andq", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("orq", v, res); + return res; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type res = storage; + BOOST_ATOMIC_DETAIL_CAS_LOOP("xorq", v, res); + return res; + } + +#undef BOOST_ATOMIC_DETAIL_CAS_LOOP +}; + +#endif + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +template< bool Signed > +struct operations< 16u, Signed > : + public cas_based_operations< gcc_dcas_x86_64< Signed > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order == memory_order_seq_cst) + { + __asm__ __volatile__ + ( +#if defined(__x86_64__) || defined(__SSE2__) + "mfence\n" +#else + "lock; addl $0, (%%esp)\n" +#endif + ::: "memory" + ); + } + else if ((order & (memory_order_acquire | memory_order_release)) != 0) + { + __asm__ __volatile__ ("" ::: "memory"); + } +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#undef BOOST_ATOMIC_DETAIL_TEMP_CAS_REGISTER + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_X86_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_gcc_x86_dcas.hpp b/3party/boost/boost/atomic/detail/ops_gcc_x86_dcas.hpp new file mode 100644 index 0000000000..5e005359b5 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_gcc_x86_dcas.hpp @@ -0,0 +1,308 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_gcc_x86_dcas.hpp + * + * This header contains implementation of the double-width CAS primitive for x86. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_X86_DCAS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_GCC_X86_DCAS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) + +template< bool Signed > +struct gcc_dcas_x86 +{ + typedef typename make_storage_type< 8u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + if ((((uint32_t)&storage) & 0x00000007) == 0) + { +#if defined(__SSE2__) + __asm__ __volatile__ + ( +#if defined(__AVX__) + "vmovq %1, %%xmm4\n\t" + "vmovq %%xmm4, %0\n\t" +#else + "movq %1, %%xmm4\n\t" + "movq %%xmm4, %0\n\t" +#endif + : "=m" (storage) + : "m" (v) + : "memory", "xmm4" + ); +#else + __asm__ __volatile__ + ( + "fildll %1\n\t" + "fistpll %0\n\t" + : "=m" (storage) + : "m" (v) + : "memory" + ); +#endif + } + else + { +#if defined(__PIC__) + uint32_t scratch; + __asm__ __volatile__ + ( + "movl %%ebx, %[scratch]\n\t" + "movl %[value_lo], %%ebx\n\t" + "movl 0(%[dest]), %%eax\n\t" + "movl 4(%[dest]), %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b 0(%[dest])\n\t" + "jne 1b\n\t" + "movl %[scratch], %%ebx" + : [scratch] "=m,m" (scratch) + : [value_lo] "a,a" ((uint32_t)v), "c,c" ((uint32_t)(v >> 32)), [dest] "D,S" (&storage) + : "cc", "edx", "memory" + ); +#else + __asm__ __volatile__ + ( + "movl 0(%[dest]), %%eax\n\t" + "movl 4(%[dest]), %%edx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg8b 0(%[dest])\n\t" + "jne 1b\n\t" + : + : [value_lo] "b,b" ((uint32_t)v), "c,c" ((uint32_t)(v >> 32)), [dest] "D,S" (&storage) + : "cc", "eax", "edx", "memory" + ); +#endif + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type value; + + if ((((uint32_t)&storage) & 0x00000007) == 0) + { +#if defined(__SSE2__) + __asm__ __volatile__ + ( +#if defined(__AVX__) + "vmovq %1, %%xmm4\n\t" + "vmovq %%xmm4, %0\n\t" +#else + "movq %1, %%xmm4\n\t" + "movq %%xmm4, %0\n\t" +#endif + : "=m" (value) + : "m" (storage) + : "memory", "xmm4" + ); +#else + __asm__ __volatile__ + ( + "fildll %1\n\t" + "fistpll %0\n\t" + : "=m" (value) + : "m" (storage) + : "memory" + ); +#endif + } + else + { +#if defined(__clang__) + // Clang cannot allocate eax:edx register pairs but it has sync intrinsics + value = __sync_val_compare_and_swap(&storage, (storage_type)0, (storage_type)0); +#else + // We don't care for comparison result here; the previous value will be stored into value anyway. + // Also we don't care for ebx and ecx values, they just have to be equal to eax and edx before cmpxchg8b. + __asm__ __volatile__ + ( + "movl %%ebx, %%eax\n\t" + "movl %%ecx, %%edx\n\t" + "lock; cmpxchg8b %[storage]" + : "=&A" (value) + : [storage] "m" (storage) + : "cc", "memory" + ); +#endif + } + + return value; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { +#if defined(__clang__) + // Clang cannot allocate eax:edx register pairs but it has sync intrinsics + storage_type old_expected = expected; + expected = __sync_val_compare_and_swap(&storage, old_expected, desired); + return expected == old_expected; +#elif defined(__PIC__) + // Make sure ebx is saved and restored properly in case + // of position independent code. To make this work + // setup register constraints such that ebx can not be + // used by accident e.g. as base address for the variable + // to be modified. Accessing "scratch" should always be okay, + // as it can only be placed on the stack (and therefore + // accessed through ebp or esp only). + // + // In theory, could push/pop ebx onto/off the stack, but movs + // to a prepared stack slot turn out to be faster. + + uint32_t scratch; + bool success; + __asm__ __volatile__ + ( + "movl %%ebx, %[scratch]\n\t" + "movl %[desired_lo], %%ebx\n\t" + "lock; cmpxchg8b %[dest]\n\t" + "movl %[scratch], %%ebx\n\t" + "sete %[success]" + : "+A,A,A,A,A,A" (expected), [dest] "+m,m,m,m,m,m" (storage), [scratch] "=m,m,m,m,m,m" (scratch), [success] "=q,m,q,m,q,m" (success) + : [desired_lo] "S,S,D,D,m,m" ((uint32_t)desired), "c,c,c,c,c,c" ((uint32_t)(desired >> 32)) + : "cc", "memory" + ); + return success; +#else + bool success; + __asm__ __volatile__ + ( + "lock; cmpxchg8b %[dest]\n\t" + "sete %[success]" + : "+A,A" (expected), [dest] "+m,m" (storage), [success] "=q,m" (success) + : "b,b" ((uint32_t)desired), "c,c" ((uint32_t)(desired >> 32)) + : "cc", "memory" + ); + return success; +#endif + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +template< bool Signed > +struct gcc_dcas_x86_64 +{ + typedef typename make_storage_type< 16u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + uint64_t const* p_value = (uint64_t const*)&v; + __asm__ __volatile__ + ( + "movq 0(%[dest]), %%rax\n\t" + "movq 8(%[dest]), %%rdx\n\t" + ".align 16\n\t" + "1: lock; cmpxchg16b 0(%[dest])\n\t" + "jne 1b" + : + : "b" (p_value[0]), "c" (p_value[1]), [dest] "r" (&storage) + : "cc", "rax", "rdx", "memory" + ); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { +#if defined(__clang__) + // Clang cannot allocate rax:rdx register pairs but it has sync intrinsics + storage_type value = storage_type(); + return __sync_val_compare_and_swap(&storage, value, value); +#else + storage_type value; + + // We don't care for comparison result here; the previous value will be stored into value anyway. + // Also we don't care for rbx and rcx values, they just have to be equal to rax and rdx before cmpxchg16b. + __asm__ __volatile__ + ( + "movq %%rbx, %%rax\n\t" + "movq %%rcx, %%rdx\n\t" + "lock; cmpxchg16b %[storage]" + : "=&A" (value) + : [storage] "m" (storage) + : "cc", "memory" + ); + + return value; +#endif + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { +#if defined(__clang__) + // Clang cannot allocate rax:rdx register pairs but it has sync intrinsics + storage_type old_expected = expected; + expected = __sync_val_compare_and_swap(&storage, old_expected, desired); + return expected == old_expected; +#else + uint64_t const* p_desired = (uint64_t const*)&desired; + bool success; + __asm__ __volatile__ + ( + "lock; cmpxchg16b %[dest]\n\t" + "sete %[success]" + : "+A,A" (expected), [dest] "+m,m" (storage), [success] "=q,m" (success) + : "b,b" (p_desired[0]), "c,c" (p_desired[1]) + : "cc", "memory" + ); + return success; +#endif + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_X86_DCAS_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_linux_arm.hpp b/3party/boost/boost/atomic/detail/ops_linux_arm.hpp new file mode 100644 index 0000000000..25167b1974 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_linux_arm.hpp @@ -0,0 +1,177 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009, 2011 Helge Bahmann + * Copyright (c) 2009 Phil Endecott + * Copyright (c) 2013 Tim Blechmann + * Linux-specific code by Phil Endecott + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_linux_arm.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_LINUX_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_LINUX_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +// Different ARM processors have different atomic instructions. In particular, +// architecture versions before v6 (which are still in widespread use, e.g. the +// Intel/Marvell XScale chips like the one in the NSLU2) have only atomic swap. +// On Linux the kernel provides some support that lets us abstract away from +// these differences: it provides emulated CAS and barrier functions at special +// addresses that are guaranteed not to be interrupted by the kernel. Using +// this facility is slightly slower than inline assembler would be, but much +// faster than a system call. +// +// While this emulated CAS is "strong" in the sense that it does not fail +// "spuriously" (i.e.: it never fails to perform the exchange when the value +// found equals the value expected), it does not return the found value on +// failure. To satisfy the atomic API, compare_exchange_{weak|strong} must +// return the found value on failure, and we have to manually load this value +// after the emulated CAS reports failure. This in turn introduces a race +// between the CAS failing (due to the "wrong" value being found) and subsequently +// loading (which might turn up the "right" value). From an application's +// point of view this looks like "spurious failure", and therefore the +// emulated CAS is only good enough to provide compare_exchange_weak +// semantics. + +struct linux_arm_cas_base +{ + static BOOST_FORCEINLINE void fence_before_store(memory_order order) BOOST_NOEXCEPT + { + if ((order & memory_order_release) != 0) + hardware_full_fence(); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + if (order == memory_order_seq_cst) + hardware_full_fence(); + } + + static BOOST_FORCEINLINE void fence_after_load(memory_order order) BOOST_NOEXCEPT + { + if ((order & (memory_order_consume | memory_order_acquire)) != 0) + hardware_full_fence(); + } + + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { + typedef void (*kernel_dmb_t)(void); + ((kernel_dmb_t)0xffff0fa0)(); + } +}; + +template< bool Signed > +struct linux_arm_cas : + public linux_arm_cas_base +{ + typedef typename make_storage_type< 4u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + fence_before_store(order); + storage = v; + fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + while (true) + { + storage_type tmp = expected; + if (compare_exchange_weak(storage, tmp, desired, success_order, failure_order)) + return true; + if (tmp != expected) + { + expected = tmp; + return false; + } + } + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + typedef storage_type (*kernel_cmpxchg32_t)(storage_type oldval, storage_type newval, volatile storage_type* ptr); + + if (((kernel_cmpxchg32_t)0xffff0fc0)(expected, desired, &storage) == 0) + { + return true; + } + else + { + expected = storage; + return false; + } + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 1u, Signed > : + public extending_cas_based_operations< cas_based_operations< linux_arm_cas< Signed > >, 1u, Signed > +{ +}; + +template< bool Signed > +struct operations< 2u, Signed > : + public extending_cas_based_operations< cas_based_operations< linux_arm_cas< Signed > >, 2u, Signed > +{ +}; + +template< bool Signed > +struct operations< 4u, Signed > : + public cas_based_operations< linux_arm_cas< Signed > > +{ +}; + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + linux_arm_cas_base::hardware_full_fence(); +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + __asm__ __volatile__ ("" ::: "memory"); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_LINUX_ARM_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_msvc_arm.hpp b/3party/boost/boost/atomic/detail/ops_msvc_arm.hpp new file mode 100644 index 0000000000..349f7a5ae8 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_msvc_arm.hpp @@ -0,0 +1,820 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_msvc_arm.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_MSVC_ARM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_MSVC_ARM_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#define BOOST_ATOMIC_DETAIL_ARM_LOAD8(p) __iso_volatile_load8((const volatile __int8*)(p)) +#define BOOST_ATOMIC_DETAIL_ARM_LOAD16(p) __iso_volatile_load16((const volatile __int16*)(p)) +#define BOOST_ATOMIC_DETAIL_ARM_LOAD32(p) __iso_volatile_load32((const volatile __int32*)(p)) +#define BOOST_ATOMIC_DETAIL_ARM_LOAD64(p) __iso_volatile_load64((const volatile __int64*)(p)) +#define BOOST_ATOMIC_DETAIL_ARM_STORE8(p, v) __iso_volatile_store8((volatile __int8*)(p), (__int8)(v)) +#define BOOST_ATOMIC_DETAIL_ARM_STORE16(p, v) __iso_volatile_store16((volatile __int16*)(p), (__int16)(v)) +#define BOOST_ATOMIC_DETAIL_ARM_STORE32(p, v) __iso_volatile_store32((volatile __int32*)(p), (__int32)(v)) +#define BOOST_ATOMIC_DETAIL_ARM_STORE64(p, v) __iso_volatile_store64((volatile __int64*)(p), (__int64)(v)) + +namespace boost { +namespace atomics { +namespace detail { + +// A note about memory_order_consume. Technically, this architecture allows to avoid +// unnecessary memory barrier after consume load since it supports data dependency ordering. +// However, some compiler optimizations may break a seemingly valid code relying on data +// dependency tracking by injecting bogus branches to aid out of order execution. +// This may happen not only in Boost.Atomic code but also in user's code, which we have no +// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php. +// For this reason we promote memory_order_consume to memory_order_acquire. + +struct msvc_arm_operations_base +{ + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { + __dmb(0xB); // _ARM_BARRIER_ISH, see armintr.h from MSVC 11 and later + } + + static BOOST_FORCEINLINE void fence_before_store(memory_order order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + if ((order & memory_order_release) != 0) + hardware_full_fence(); + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + if (order == memory_order_seq_cst) + hardware_full_fence(); + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after_load(memory_order order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + if ((order & (memory_order_consume | memory_order_acquire)) != 0) + hardware_full_fence(); + + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE BOOST_CONSTEXPR memory_order cas_common_order(memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + // Combine order flags together and promote memory_order_consume to memory_order_acquire + return static_cast< memory_order >(((failure_order | success_order) & ~memory_order_consume) | (((failure_order | success_order) & memory_order_consume) << 1u)); + } +}; + +template< typename T, typename Derived > +struct msvc_arm_operations : + public msvc_arm_operations_base +{ + typedef T storage_type; + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + typedef typename make_signed< storage_type >::type signed_storage_type; + return Derived::fetch_add(storage, static_cast< storage_type >(-static_cast< signed_storage_type >(v)), order); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return Derived::compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Derived::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + Derived::store(storage, (storage_type)0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 1u, Signed > : + public msvc_arm_operations< typename make_storage_type< 1u, Signed >::type, operations< 1u, Signed > > +{ + typedef msvc_arm_operations< typename make_storage_type< 1u, Signed >::type, operations< 1u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before_store(order); + BOOST_ATOMIC_DETAIL_ARM_STORE8(&storage, v); + base_type::fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = BOOST_ATOMIC_DETAIL_ARM_LOAD8(&storage); + base_type::fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected, old_val; + + switch (cas_common_order(success_order, failure_order)) + { + case memory_order_relaxed: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_RELAXED(&storage, desired, previous)); + break; + case memory_order_consume: + case memory_order_acquire: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_ACQUIRE(&storage, desired, previous)); + break; + case memory_order_release: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8_RELEASE(&storage, desired, previous)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8(&storage, desired, previous)); + break; + } + expected = old_val; + + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8(&storage, v)); + break; + } + return v; + } +}; + +template< bool Signed > +struct operations< 2u, Signed > : + public msvc_arm_operations< typename make_storage_type< 2u, Signed >::type, operations< 2u, Signed > > +{ + typedef msvc_arm_operations< typename make_storage_type< 2u, Signed >::type, operations< 2u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before_store(order); + BOOST_ATOMIC_DETAIL_ARM_STORE16(&storage, v); + base_type::fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = BOOST_ATOMIC_DETAIL_ARM_LOAD16(&storage); + base_type::fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected, old_val; + + switch (cas_common_order(success_order, failure_order)) + { + case memory_order_relaxed: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_RELAXED(&storage, desired, previous)); + break; + case memory_order_consume: + case memory_order_acquire: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_ACQUIRE(&storage, desired, previous)); + break; + case memory_order_release: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16_RELEASE(&storage, desired, previous)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16(&storage, desired, previous)); + break; + } + expected = old_val; + + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16(&storage, v)); + break; + } + return v; + } +}; + +template< bool Signed > +struct operations< 4u, Signed > : + public msvc_arm_operations< typename make_storage_type< 4u, Signed >::type, operations< 4u, Signed > > +{ + typedef msvc_arm_operations< typename make_storage_type< 4u, Signed >::type, operations< 4u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before_store(order); + BOOST_ATOMIC_DETAIL_ARM_STORE32(&storage, v); + base_type::fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = BOOST_ATOMIC_DETAIL_ARM_LOAD32(&storage); + base_type::fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected, old_val; + + switch (cas_common_order(success_order, failure_order)) + { + case memory_order_relaxed: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_RELAXED(&storage, desired, previous)); + break; + case memory_order_consume: + case memory_order_acquire: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_ACQUIRE(&storage, desired, previous)); + break; + case memory_order_release: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_RELEASE(&storage, desired, previous)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&storage, desired, previous)); + break; + } + expected = old_val; + + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&storage, v)); + break; + } + return v; + } +}; + +template< bool Signed > +struct operations< 8u, Signed > : + public msvc_arm_operations< typename make_storage_type< 8u, Signed >::type, operations< 8u, Signed > > +{ + typedef msvc_arm_operations< typename make_storage_type< 8u, Signed >::type, operations< 8u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before_store(order); + BOOST_ATOMIC_DETAIL_ARM_STORE64(&storage, v); + base_type::fence_after_store(order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = BOOST_ATOMIC_DETAIL_ARM_LOAD64(&storage); + base_type::fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected, old_val; + + switch (cas_common_order(success_order, failure_order)) + { + case memory_order_relaxed: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_RELAXED(&storage, desired, previous)); + break; + case memory_order_consume: + case memory_order_acquire: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_ACQUIRE(&storage, desired, previous)); + break; + case memory_order_release: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64_RELEASE(&storage, desired, previous)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(&storage, desired, previous)); + break; + } + expected = old_val; + + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64(&storage, v)); + break; + } + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + switch (order) + { + case memory_order_relaxed: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64_RELAXED(&storage, v)); + break; + case memory_order_consume: + case memory_order_acquire: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64_ACQUIRE(&storage, v)); + break; + case memory_order_release: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64_RELEASE(&storage, v)); + break; + case memory_order_acq_rel: + case memory_order_seq_cst: + default: + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64(&storage, v)); + break; + } + return v; + } +}; + + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + if (order != memory_order_relaxed) + msvc_arm_operations_base::hardware_full_fence(); + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#undef BOOST_ATOMIC_DETAIL_ARM_LOAD8 +#undef BOOST_ATOMIC_DETAIL_ARM_LOAD16 +#undef BOOST_ATOMIC_DETAIL_ARM_LOAD32 +#undef BOOST_ATOMIC_DETAIL_ARM_LOAD64 +#undef BOOST_ATOMIC_DETAIL_ARM_STORE8 +#undef BOOST_ATOMIC_DETAIL_ARM_STORE16 +#undef BOOST_ATOMIC_DETAIL_ARM_STORE32 +#undef BOOST_ATOMIC_DETAIL_ARM_STORE64 + +#endif // BOOST_ATOMIC_DETAIL_OPS_MSVC_ARM_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_msvc_common.hpp b/3party/boost/boost/atomic/detail/ops_msvc_common.hpp new file mode 100644 index 0000000000..53628f3600 --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_msvc_common.hpp @@ -0,0 +1,38 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_msvc_common.hpp + * + * This header contains common tools for MSVC implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_MSVC_COMMON_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_MSVC_COMMON_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// Define compiler barriers +#if defined(__INTEL_COMPILER) +#define BOOST_ATOMIC_DETAIL_COMPILER_BARRIER() __memory_barrier() +#elif defined(_MSC_VER) && !defined(_WIN32_WCE) +extern "C" void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define BOOST_ATOMIC_DETAIL_COMPILER_BARRIER() _ReadWriteBarrier() +#endif + +#ifndef BOOST_ATOMIC_DETAIL_COMPILER_BARRIER +#define BOOST_ATOMIC_DETAIL_COMPILER_BARRIER() +#endif + +#endif // BOOST_ATOMIC_DETAIL_OPS_MSVC_COMMON_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_msvc_x86.hpp b/3party/boost/boost/atomic/detail/ops_msvc_x86.hpp new file mode 100644 index 0000000000..51db0fee0b --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_msvc_x86.hpp @@ -0,0 +1,877 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_msvc_x86.hpp + * + * This header contains implementation of the \c operations template. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_MSVC_X86_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_MSVC_X86_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) +#include +#include +#endif +#include +#if !defined(_M_IX86) && !(defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8) && defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16)) +#include +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(BOOST_MSVC) +#pragma warning(push) +// frame pointer register 'ebx' modified by inline assembly code. See the note below. +#pragma warning(disable: 4731) +#endif + +#if defined(_MSC_VER) && (defined(_M_AMD64) || (defined(_M_IX86) && defined(_M_IX86_FP) && _M_IX86_FP >= 2)) +extern "C" void _mm_mfence(void); +#pragma intrinsic(_mm_mfence) +#endif + +namespace boost { +namespace atomics { +namespace detail { + +/* + * Implementation note for asm blocks. + * + * http://msdn.microsoft.com/en-us/data/k1a8ss06%28v=vs.105%29 + * + * Some SSE types require eight-byte stack alignment, forcing the compiler to emit dynamic stack-alignment code. + * To be able to access both the local variables and the function parameters after the alignment, the compiler + * maintains two frame pointers. If the compiler performs frame pointer omission (FPO), it will use EBP and ESP. + * If the compiler does not perform FPO, it will use EBX and EBP. To ensure code runs correctly, do not modify EBX + * in asm code if the function requires dynamic stack alignment as it could modify the frame pointer. + * Either move the eight-byte aligned types out of the function, or avoid using EBX. + * + * Since we have no way of knowing that the compiler uses FPO, we have to always save and restore ebx + * whenever we have to clobber it. Additionally, we disable warning C4731 above so that the compiler + * doesn't spam about ebx use. + */ + +struct msvc_x86_operations_base +{ + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { +#if defined(_MSC_VER) && (defined(_M_AMD64) || (defined(_M_IX86) && defined(_M_IX86_FP) && _M_IX86_FP >= 2)) + // Use mfence only if SSE2 is available + _mm_mfence(); +#else + long tmp; + BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&tmp, 0); +#endif + } + + static BOOST_FORCEINLINE void fence_before(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after_load(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + + // On x86 and x86_64 there is no need for a hardware barrier, + // even if seq_cst memory order is requested, because all + // seq_cst writes are implemented with lock-prefixed operations + // or xchg which has implied lock prefix. Therefore normal loads + // are already ordered with seq_cst stores on these architectures. + } +}; + +template< typename T, typename Derived > +struct msvc_x86_operations : + public msvc_x86_operations_base +{ + typedef T storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + if (order != memory_order_seq_cst) + { + fence_before(order); + storage = v; + fence_after(order); + } + else + { + Derived::exchange(storage, v, order); + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + storage_type v = storage; + fence_after_load(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + typedef typename make_signed< storage_type >::type signed_storage_type; + return Derived::fetch_add(storage, static_cast< storage_type >(-static_cast< signed_storage_type >(v)), order); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return Derived::compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Derived::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 4u, Signed > : + public msvc_x86_operations< typename make_storage_type< 4u, Signed >::type, operations< 4u, Signed > > +{ + typedef msvc_x86_operations< typename make_storage_type< 4u, Signed >::type, operations< 4u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&storage, v)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&storage, desired, previous)); + expected = old_val; + return (previous == old_val); + } + +#if defined(BOOST_ATOMIC_INTERLOCKED_AND) + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND(&storage, v)); + } +#else + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res & v, order, memory_order_relaxed)) {} + return res; + } +#endif + +#if defined(BOOST_ATOMIC_INTERLOCKED_OR) + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR(&storage, v)); + } +#else + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res | v, order, memory_order_relaxed)) {} + return res; + } +#endif + +#if defined(BOOST_ATOMIC_INTERLOCKED_XOR) + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&storage, v)); + } +#else + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res ^ v, order, memory_order_relaxed)) {} + return res; + } +#endif +}; + +#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8) + +template< bool Signed > +struct operations< 1u, Signed > : + public msvc_x86_operations< typename make_storage_type< 1u, Signed >::type, operations< 1u, Signed > > +{ + typedef msvc_x86_operations< typename make_storage_type< 1u, Signed >::type, operations< 1u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(&storage, v)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8(&storage, desired, previous)); + expected = old_val; + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND8(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR8(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR8(&storage, v)); + } +}; + +#elif defined(_M_IX86) + +template< bool Signed > +struct operations< 1u, Signed > : + public msvc_x86_operations< typename make_storage_type< 1u, Signed >::type, operations< 1u, Signed > > +{ + typedef msvc_x86_operations< typename make_storage_type< 1u, Signed >::type, operations< 1u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock xadd byte ptr [edx], al + mov v, al + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + xchg byte ptr [edx], al + mov v, al + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order) BOOST_NOEXCEPT + { + base_type::fence_before(success_order); + bool success; + __asm + { + mov esi, expected + mov edi, storage + movzx eax, byte ptr [esi] + movzx edx, desired + lock cmpxchg byte ptr [edi], dl + mov byte ptr [esi], al + sete success + }; + // The success and failure fences are equivalent anyway + base_type::fence_after(success_order); + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + int backup; + __asm + { + mov backup, ebx + xor edx, edx + mov edi, storage + movzx ebx, v + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + and dl, bl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, al + mov ebx, backup + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + int backup; + __asm + { + mov backup, ebx + xor edx, edx + mov edi, storage + movzx ebx, v + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + or dl, bl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, al + mov ebx, backup + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + int backup; + __asm + { + mov backup, ebx + xor edx, edx + mov edi, storage + movzx ebx, v + movzx eax, byte ptr [edi] + align 16 + again: + mov dl, al + xor dl, bl + lock cmpxchg byte ptr [edi], dl + jne again + mov v, al + mov ebx, backup + }; + base_type::fence_after(order); + return v; + } +}; + +#else + +template< bool Signed > +struct operations< 1u, Signed > : + public extending_cas_based_operations< operations< 4u, Signed >, 1u, Signed > +{ +}; + +#endif + +#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16) + +template< bool Signed > +struct operations< 2u, Signed > : + public msvc_x86_operations< typename make_storage_type< 2u, Signed >::type, operations< 2u, Signed > > +{ + typedef msvc_x86_operations< typename make_storage_type< 2u, Signed >::type, operations< 2u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(&storage, v)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16(&storage, desired, previous)); + expected = old_val; + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND16(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR16(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR16(&storage, v)); + } +}; + +#elif defined(_M_IX86) + +template< bool Signed > +struct operations< 2u, Signed > : + public msvc_x86_operations< typename make_storage_type< 2u, Signed >::type, operations< 2u, Signed > > +{ + typedef msvc_x86_operations< typename make_storage_type< 2u, Signed >::type, operations< 2u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + lock xadd word ptr [edx], ax + mov v, ax + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + __asm + { + mov edx, storage + movzx eax, v + xchg word ptr [edx], ax + mov v, ax + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order) BOOST_NOEXCEPT + { + base_type::fence_before(success_order); + bool success; + __asm + { + mov esi, expected + mov edi, storage + movzx eax, word ptr [esi] + movzx edx, desired + lock cmpxchg word ptr [edi], dx + mov word ptr [esi], ax + sete success + }; + // The success and failure fences are equivalent anyway + base_type::fence_after(success_order); + return success; + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + int backup; + __asm + { + mov backup, ebx + xor edx, edx + mov edi, storage + movzx ebx, v + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + and dx, bx + lock cmpxchg word ptr [edi], dx + jne again + mov v, ax + mov ebx, backup + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + int backup; + __asm + { + mov backup, ebx + xor edx, edx + mov edi, storage + movzx ebx, v + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + or dx, bx + lock cmpxchg word ptr [edi], dx + jne again + mov v, ax + mov ebx, backup + }; + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + int backup; + __asm + { + mov backup, ebx + xor edx, edx + mov edi, storage + movzx ebx, v + movzx eax, word ptr [edi] + align 16 + again: + mov dx, ax + xor dx, bx + lock cmpxchg word ptr [edi], dx + jne again + mov v, ax + mov ebx, backup + }; + base_type::fence_after(order); + return v; + } +}; + +#else + +template< bool Signed > +struct operations< 2u, Signed > : + public extending_cas_based_operations< operations< 4u, Signed >, 2u, Signed > +{ +}; + +#endif + + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) + +template< bool Signed > +struct msvc_dcas_x86 +{ + typedef typename make_storage_type< 8u, Signed >::type storage_type; + + // Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 3A, 8.1.1. Guaranteed Atomic Operations: + // + // The Pentium processor (and newer processors since) guarantees that the following additional memory operations will always be carried out atomically: + // * Reading or writing a quadword aligned on a 64-bit boundary + // + // Luckily, the memory is almost always 8-byte aligned in our case because atomic<> uses 64 bit native types for storage and dynamic memory allocations + // have at least 8 byte alignment. The only unfortunate case is when atomic is placeod on the stack and it is not 8-byte aligned (like on 32 bit Windows). + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type volatile* p = &storage; + if (((uint32_t)p & 0x00000007) == 0) + { +#if defined(_M_IX86_FP) && _M_IX86_FP >= 2 +#if defined(__AVX__) + __asm + { + mov edx, p + vmovq xmm4, v + vmovq qword ptr [edx], xmm4 + }; +#else + __asm + { + mov edx, p + movq xmm4, v + movq qword ptr [edx], xmm4 + }; +#endif +#else + __asm + { + mov edx, p + fild v + fistp qword ptr [edx] + }; +#endif + } + else + { + int backup; + __asm + { + mov backup, ebx + mov edi, p + mov ebx, dword ptr [v] + mov ecx, dword ptr [v + 4] + mov eax, dword ptr [edi] + mov edx, dword ptr [edi + 4] + align 16 + again: + lock cmpxchg8b qword ptr [edi] + jne again + mov ebx, backup + }; + } + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type const volatile* p = &storage; + storage_type value; + + if (((uint32_t)p & 0x00000007) == 0) + { +#if defined(_M_IX86_FP) && _M_IX86_FP >= 2 +#if defined(__AVX__) + __asm + { + mov edx, p + vmovq xmm4, qword ptr [edx] + vmovq value, xmm4 + }; +#else + __asm + { + mov edx, p + movq xmm4, qword ptr [edx] + movq value, xmm4 + }; +#endif +#else + __asm + { + mov edx, p + fild qword ptr [edx] + fistp value + }; +#endif + } + else + { + // We don't care for comparison result here; the previous value will be stored into value anyway. + // Also we don't care for ebx and ecx values, they just have to be equal to eax and edx before cmpxchg8b. + __asm + { + mov edi, p + mov eax, ebx + mov edx, ecx + lock cmpxchg8b qword ptr [edi] + mov dword ptr [value], eax + mov dword ptr [value + 4], edx + }; + } + + return value; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type volatile* p = &storage; +#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64) + const storage_type old_val = (storage_type)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(p, desired, expected); + const bool result = (old_val == expected); + expected = old_val; + return result; +#else + bool result; + int backup; + __asm + { + mov backup, ebx + mov edi, p + mov esi, expected + mov ebx, dword ptr [desired] + mov ecx, dword ptr [desired + 4] + mov eax, dword ptr [esi] + mov edx, dword ptr [esi + 4] + lock cmpxchg8b qword ptr [edi] + mov dword ptr [esi], eax + mov dword ptr [esi + 4], edx + mov ebx, backup + sete result + }; + return result; +#endif + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 8u, Signed > : + public cas_based_operations< msvc_dcas_x86< Signed > > +{ +}; + +#elif defined(_M_AMD64) + +template< bool Signed > +struct operations< 8u, Signed > : + public msvc_x86_operations< typename make_storage_type< 8u, Signed >::type, operations< 8u, Signed > > +{ + typedef msvc_x86_operations< typename make_storage_type< 8u, Signed >::type, operations< 8u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(&storage, v)); + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(&storage, desired, previous)); + expected = old_val; + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND64(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR64(&storage, v)); + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + return static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR64(&storage, v)); + } +}; + +#endif + +#if defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +template< bool Signed > +struct msvc_dcas_x86_64 +{ + typedef typename make_storage_type< 16u, Signed >::type storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT + { + storage_type value = const_cast< storage_type& >(storage); + while (!BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE128(&storage, v, &value)) {} + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order) BOOST_NOEXCEPT + { + storage_type value = storage_type(); + BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE128(&storage, value, &value); + return value; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order, memory_order) BOOST_NOEXCEPT + { + return !!BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE128(&storage, desired, &expected); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 16u, Signed > : + public cas_based_operations< msvc_dcas_x86_64< Signed > > +{ +}; + +#endif // defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B) + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + if (order == memory_order_seq_cst) + msvc_x86_operations_base::hardware_full_fence(); + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#if defined(BOOST_MSVC) +#pragma warning(pop) +#endif + +#endif // BOOST_ATOMIC_DETAIL_OPS_MSVC_X86_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/ops_windows.hpp b/3party/boost/boost/atomic/detail/ops_windows.hpp new file mode 100644 index 0000000000..1b4b04c8bc --- /dev/null +++ b/3party/boost/boost/atomic/detail/ops_windows.hpp @@ -0,0 +1,215 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/ops_windows.hpp + * + * This header contains implementation of the \c operations template. + * + * This implementation is the most basic version for Windows. It should + * work for any non-MSVC-like compilers as long as there are Interlocked WinAPI + * functions available. This version is also used for WinCE. + * + * Notably, this implementation is not as efficient as other + * versions based on compiler intrinsics. + */ + +#ifndef BOOST_ATOMIC_DETAIL_OPS_WINDOWS_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_OPS_WINDOWS_HPP_INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +struct windows_operations_base +{ + static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT + { + long tmp; + BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&tmp, 0); + } + + static BOOST_FORCEINLINE void fence_before(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } + + static BOOST_FORCEINLINE void fence_after(memory_order) BOOST_NOEXCEPT + { + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + } +}; + +template< typename T, typename Derived > +struct windows_operations : + public windows_operations_base +{ + typedef T storage_type; + + static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + Derived::exchange(storage, v, order); + } + + static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return Derived::fetch_add(const_cast< storage_type volatile& >(storage), (storage_type)0, order); + } + + static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + typedef typename make_signed< storage_type >::type signed_storage_type; + return Derived::fetch_add(storage, static_cast< storage_type >(-static_cast< signed_storage_type >(v)), order); + } + + static BOOST_FORCEINLINE bool compare_exchange_weak( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + return Derived::compare_exchange_strong(storage, expected, desired, success_order, failure_order); + } + + static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + return !!Derived::exchange(storage, (storage_type)1, order); + } + + static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT + { + store(storage, (storage_type)0, order); + } + + static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT + { + return true; + } +}; + +template< bool Signed > +struct operations< 4u, Signed > : + public windows_operations< typename make_storage_type< 4u, Signed >::type, operations< 4u, Signed > > +{ + typedef windows_operations< typename make_storage_type< 4u, Signed >::type, operations< 4u, Signed > > base_type; + typedef typename base_type::storage_type storage_type; + + static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&storage, v)); + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&storage, v)); + base_type::fence_after(order); + return v; + } + + static BOOST_FORCEINLINE bool compare_exchange_strong( + storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT + { + storage_type previous = expected; + base_type::fence_before(success_order); + storage_type old_val = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&storage, desired, previous)); + expected = old_val; + // The success and failure fences are the same anyway + base_type::fence_after(success_order); + return (previous == old_val); + } + + static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_INTERLOCKED_AND) + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_AND(&storage, v)); + base_type::fence_after(order); + return v; +#else + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res & v, order, memory_order_relaxed)) {} + return res; +#endif + } + + static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_INTERLOCKED_OR) + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_OR(&storage, v)); + base_type::fence_after(order); + return v; +#else + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res | v, order, memory_order_relaxed)) {} + return res; +#endif + } + + static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT + { +#if defined(BOOST_ATOMIC_INTERLOCKED_XOR) + base_type::fence_before(order); + v = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&storage, v)); + base_type::fence_after(order); + return v; +#else + storage_type res = storage; + while (!compare_exchange_strong(storage, res, res ^ v, order, memory_order_relaxed)) {} + return res; +#endif + } +}; + +template< bool Signed > +struct operations< 1u, Signed > : + public extending_cas_based_operations< operations< 4u, Signed >, 1u, Signed > +{ +}; + +template< bool Signed > +struct operations< 2u, Signed > : + public extending_cas_based_operations< operations< 4u, Signed >, 2u, Signed > +{ +}; + +BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT +{ + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); + if (order == memory_order_seq_cst) + windows_operations_base::hardware_full_fence(); + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); +} + +BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT +{ + if (order != memory_order_relaxed) + BOOST_ATOMIC_DETAIL_COMPILER_BARRIER(); +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_OPS_WINDOWS_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/pause.hpp b/3party/boost/boost/atomic/detail/pause.hpp new file mode 100644 index 0000000000..15d7a024d7 --- /dev/null +++ b/3party/boost/boost/atomic/detail/pause.hpp @@ -0,0 +1,43 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * (C) Copyright 2013 Tim Blechmann + * (C) Copyright 2013 Andrey Semashev + */ + +#ifndef BOOST_ATOMIC_DETAIL_PAUSE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_PAUSE_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86)) +extern "C" void _mm_pause(void); +#pragma intrinsic(_mm_pause) +#endif + +namespace boost { +namespace atomics { +namespace detail { + +BOOST_FORCEINLINE void pause() BOOST_NOEXCEPT +{ +#if defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86)) + _mm_pause(); + +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) + __asm__ __volatile__("pause;"); + +#endif +} + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_PAUSE_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/platform.hpp b/3party/boost/boost/atomic/detail/platform.hpp index a31ececade..76ad4ebb8f 100644 --- a/3party/boost/boost/atomic/detail/platform.hpp +++ b/3party/boost/boost/atomic/detail/platform.hpp @@ -1,62 +1,115 @@ -#ifndef BOOST_ATOMIC_DETAIL_PLATFORM_HPP -#define BOOST_ATOMIC_DETAIL_PLATFORM_HPP +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/platform.hpp + * + * This header defines macros for the target platform detection + */ -// Copyright (c) 2009 Helge Bahmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// Platform selection file +#ifndef BOOST_ATOMIC_DETAIL_PLATFORM_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_PLATFORM_HPP_INCLUDED_ #include -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE +#ifdef BOOST_HAS_PRAGMA_ONCE #pragma once #endif -#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) +#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) - #include +// Compiler-based backends +#if ((defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 407)) ||\ + (defined(BOOST_CLANG) && ((__clang_major__ * 100 + __clang_minor__) >= 302))) &&\ + (\ + (__GCC_ATOMIC_BOOL_LOCK_FREE + 0) == 2 ||\ + (__GCC_ATOMIC_CHAR_LOCK_FREE + 0) == 2 ||\ + (__GCC_ATOMIC_SHORT_LOCK_FREE + 0) == 2 ||\ + (__GCC_ATOMIC_INT_LOCK_FREE + 0) == 2 ||\ + (__GCC_ATOMIC_LONG_LOCK_FREE + 0) == 2 ||\ + (__GCC_ATOMIC_LLONG_LOCK_FREE + 0) == 2\ + ) -#elif 0 && defined(__GNUC__) && defined(__alpha__) /* currently does not work correctly */ +#define BOOST_ATOMIC_DETAIL_PLATFORM gcc_atomic - #include - #include +#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) + +#define BOOST_ATOMIC_DETAIL_PLATFORM gcc_x86 #elif defined(__GNUC__) && (defined(__POWERPC__) || defined(__PPC__)) - #include +#define BOOST_ATOMIC_DETAIL_PLATFORM gcc_ppc // This list of ARM architecture versions comes from Apple's arm/arch.h header. // I don't know how complete it is. -#elif defined(__GNUC__) && (defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ - || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \ - || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_7A__)) +#elif defined(__GNUC__) &&\ + (\ + defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) ||\ + defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) ||\ + defined(__ARM_ARCH_6ZK__) ||\ + defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) ||\ + defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) ||\ + defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7S__)\ + ) - #include - -#elif defined(__linux__) && defined(__arm__) - - #include +#define BOOST_ATOMIC_DETAIL_PLATFORM gcc_arm #elif defined(__GNUC__) && defined(__sparc_v9__) - #include +#define BOOST_ATOMIC_DETAIL_PLATFORM gcc_sparc + +#elif defined(__GNUC__) && defined(__alpha__) + +#define BOOST_ATOMIC_DETAIL_PLATFORM gcc_alpha + +#elif defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 401) &&\ + (\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1) ||\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) ||\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) ||\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) ||\ + defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16)\ + ) + +#define BOOST_ATOMIC_DETAIL_PLATFORM gcc_sync + +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + +#define BOOST_ATOMIC_DETAIL_PLATFORM msvc_x86 + +#elif defined(_MSC_VER) && _MSC_VER >= 1700 && defined(_M_ARM) + +#define BOOST_ATOMIC_DETAIL_PLATFORM msvc_arm + +#endif + +// OS-based backends +#if !defined(BOOST_ATOMIC_DETAIL_PLATFORM) + +#if defined(__linux__) && defined(__arm__) + +#define BOOST_ATOMIC_DETAIL_PLATFORM linux_arm #elif defined(BOOST_WINDOWS) || defined(_WIN32_CE) - #include - -#elif 0 && defined(__GNUC__) /* currently does not work correctly */ - - #include - #include - -#else - -#include +#define BOOST_ATOMIC_DETAIL_PLATFORM windows #endif +#endif // !defined(BOOST_ATOMIC_DETAIL_PLATFORM) + +#endif // !defined(BOOST_ATOMIC_FORCE_FALLBACK) + +#if !defined(BOOST_ATOMIC_DETAIL_PLATFORM) +#define BOOST_ATOMIC_DETAIL_PLATFORM emulated +#define BOOST_ATOMIC_EMULATED #endif + +#define BOOST_ATOMIC_DETAIL_HEADER(prefix) + +#endif // BOOST_ATOMIC_DETAIL_PLATFORM_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/storage_type.hpp b/3party/boost/boost/atomic/detail/storage_type.hpp new file mode 100644 index 0000000000..a024f1d327 --- /dev/null +++ b/3party/boost/boost/atomic/detail/storage_type.hpp @@ -0,0 +1,168 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2009 Helge Bahmann + * Copyright (c) 2012 Tim Blechmann + * Copyright (c) 2013 - 2014 Andrey Semashev + */ +/*! + * \file atomic/detail/storage_type.hpp + * + * This header defines underlying types used as storage + */ + +#ifndef BOOST_ATOMIC_DETAIL_STORAGE_TYPE_HPP_INCLUDED_ +#define BOOST_ATOMIC_DETAIL_STORAGE_TYPE_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { +namespace atomics { +namespace detail { + +template< unsigned int Size > +struct buffer_storage +{ + unsigned char data[Size]; + + BOOST_FORCEINLINE bool operator! () const BOOST_NOEXCEPT + { + bool result = true; + for (unsigned int i = 0; i < Size && result; ++i) + { + result &= data[i] == 0; + } + return result; + } + + BOOST_FORCEINLINE bool operator== (buffer_storage const& that) const BOOST_NOEXCEPT + { + return std::memcmp(data, that.data, Size) == 0; + } + + BOOST_FORCEINLINE bool operator!= (buffer_storage const& that) const BOOST_NOEXCEPT + { + return std::memcmp(data, that.data, Size) != 0; + } +}; + +template< unsigned int Size, bool Signed > +struct make_storage_type +{ + typedef buffer_storage< Size > type; +}; + +template< > +struct make_storage_type< 1u, false > +{ + typedef boost::uint8_t type; +}; + +template< > +struct make_storage_type< 1u, true > +{ + typedef boost::int8_t type; +}; + +template< > +struct make_storage_type< 2u, false > +{ + typedef boost::uint16_t type; +}; + +template< > +struct make_storage_type< 2u, true > +{ + typedef boost::int16_t type; +}; + +template< > +struct make_storage_type< 4u, false > +{ + typedef boost::uint32_t type; +}; + +template< > +struct make_storage_type< 4u, true > +{ + typedef boost::int32_t type; +}; + +template< > +struct make_storage_type< 8u, false > +{ + typedef boost::uint64_t type; +}; + +template< > +struct make_storage_type< 8u, true > +{ + typedef boost::int64_t type; +}; + +#if defined(BOOST_HAS_INT128) + +template< > +struct make_storage_type< 16u, false > +{ + typedef boost::uint128_type type; +}; + +template< > +struct make_storage_type< 16u, true > +{ + typedef boost::int128_type type; +}; + +#elif !defined(BOOST_NO_ALIGNMENT) + +struct BOOST_ALIGNMENT(16) storage128_t +{ + boost::uint64_t data[2]; + + BOOST_FORCEINLINE bool operator! () const BOOST_NOEXCEPT + { + return data[0] == 0 && data[1] == 0; + } +}; + +BOOST_FORCEINLINE bool operator== (storage128_t const& left, storage128_t const& right) BOOST_NOEXCEPT +{ + return left.data[0] == right.data[0] && left.data[1] == right.data[1]; +} +BOOST_FORCEINLINE bool operator!= (storage128_t const& left, storage128_t const& right) BOOST_NOEXCEPT +{ + return !(left == right); +} + +template< bool Signed > +struct make_storage_type< 16u, Signed > +{ + typedef storage128_t type; +}; + +#endif + +template< typename T > +struct storage_size_of +{ + enum _ + { + size = sizeof(T), + value = (size == 3 ? 4 : (size >= 5 && size <= 7 ? 8 : (size >= 9 && size <= 15 ? 16 : size))) + }; +}; + +} // namespace detail +} // namespace atomics +} // namespace boost + +#endif // BOOST_ATOMIC_DETAIL_STORAGE_TYPE_HPP_INCLUDED_ diff --git a/3party/boost/boost/atomic/detail/type-classification.hpp b/3party/boost/boost/atomic/detail/type-classification.hpp deleted file mode 100644 index f7c2f8bf8f..0000000000 --- a/3party/boost/boost/atomic/detail/type-classification.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_TYPE_CLASSIFICATION_HPP -#define BOOST_ATOMIC_DETAIL_TYPE_CLASSIFICATION_HPP - -// Copyright (c) 2011 Helge Bahmann -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -namespace boost { -namespace atomics { -namespace detail { - -template::value> -struct classify -{ - typedef void type; -}; - -template -struct classify {typedef int type;}; - -template -struct classify {typedef void* type;}; - -template -struct storage_size_of -{ - enum _ - { - size = sizeof(T), - value = (size == 3 ? 4 : (size == 5 || size == 6 || size == 7 ? 8 : size)) - }; -}; - -}}} - -#endif diff --git a/3party/boost/boost/atomic/detail/windows.hpp b/3party/boost/boost/atomic/detail/windows.hpp deleted file mode 100644 index 0fa9712064..0000000000 --- a/3party/boost/boost/atomic/detail/windows.hpp +++ /dev/null @@ -1,1484 +0,0 @@ -#ifndef BOOST_ATOMIC_DETAIL_WINDOWS_HPP -#define BOOST_ATOMIC_DETAIL_WINDOWS_HPP - -// Copyright (c) 2009 Helge Bahmann -// Copyright (c) 2012 Andrey Semashev -// Copyright (c) 2013 Tim Blechmann, Andrey Semashev -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include -#include -#include -#include - -#ifdef BOOST_ATOMIC_HAS_PRAGMA_ONCE -#pragma once -#endif - -#ifdef _MSC_VER -#pragma warning(push) -// 'order' : unreferenced formal parameter -#pragma warning(disable: 4100) -#endif - -#if defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86)) -extern "C" void _mm_pause(void); -#pragma intrinsic(_mm_pause) -#define BOOST_ATOMIC_X86_PAUSE() _mm_pause() -#else -#define BOOST_ATOMIC_X86_PAUSE() -#endif - -// Define hardware barriers -#if defined(_MSC_VER) && (defined(_M_AMD64) || (defined(_M_IX86) && defined(_M_IX86_FP) && _M_IX86_FP >= 2)) -extern "C" void _mm_mfence(void); -#pragma intrinsic(_mm_mfence) -#endif - -// Define compiler barriers -#if defined(__INTEL_COMPILER) -#define BOOST_ATOMIC_COMPILER_BARRIER __memory_barrier(); -#elif defined(_MSC_VER) && _MSC_VER >= 1310 && !defined(_WIN32_WCE) -extern "C" void _ReadWriteBarrier(void); -#pragma intrinsic(_ReadWriteBarrier) -#define BOOST_ATOMIC_COMPILER_BARRIER() _ReadWriteBarrier() -#endif - -#ifndef BOOST_ATOMIC_COMPILER_BARRIER -#define BOOST_ATOMIC_COMPILER_BARRIER() -#endif - -namespace boost { -namespace atomics { -namespace detail { - -BOOST_FORCEINLINE void hardware_full_fence(void) -{ -#if defined(_MSC_VER) && (defined(_M_AMD64) || (defined(_M_IX86) && defined(_M_IX86_FP) && _M_IX86_FP >= 2)) - // Use mfence only if SSE2 is available - _mm_mfence(); -#else - long tmp; - BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&tmp, 0); -#endif -} - -// Define compiler barriers -#if defined(_MSC_VER) && _MSC_VER >= 1310 && !defined(_WIN32_WCE) -extern "C" void _ReadWriteBarrier(); -#pragma intrinsic(_ReadWriteBarrier) -#define BOOST_ATOMIC_COMPILER_BARRIER() _ReadWriteBarrier() -#endif - -#ifndef BOOST_ATOMIC_COMPILER_BARRIER -#define BOOST_ATOMIC_COMPILER_BARRIER() -#endif - -BOOST_FORCEINLINE void -platform_fence_before(memory_order) -{ - BOOST_ATOMIC_COMPILER_BARRIER(); -} - -BOOST_FORCEINLINE void -platform_fence_after(memory_order) -{ - BOOST_ATOMIC_COMPILER_BARRIER(); -} - -BOOST_FORCEINLINE void -platform_fence_before_store(memory_order) -{ - BOOST_ATOMIC_COMPILER_BARRIER(); -} - -BOOST_FORCEINLINE void -platform_fence_after_store(memory_order) -{ - BOOST_ATOMIC_COMPILER_BARRIER(); -} - -BOOST_FORCEINLINE void -platform_fence_after_load(memory_order order) -{ - BOOST_ATOMIC_COMPILER_BARRIER(); - - // On x86 and x86_64 there is no need for a hardware barrier, - // even if seq_cst memory order is requested, because all - // seq_cst writes are implemented with lock-prefixed operations - // or xchg which has implied lock prefix. Therefore normal loads - // are already ordered with seq_cst stores on these architectures. - -#if !(defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_IX86))) - if (order == memory_order_seq_cst) - hardware_full_fence(); -#endif -} - -} // namespace detail -} // namespace atomics - -#define BOOST_ATOMIC_THREAD_FENCE 2 -BOOST_FORCEINLINE void -atomic_thread_fence(memory_order order) -{ - BOOST_ATOMIC_COMPILER_BARRIER(); - if (order == memory_order_seq_cst) - atomics::detail::hardware_full_fence(); -} - -#define BOOST_ATOMIC_SIGNAL_FENCE 2 -BOOST_FORCEINLINE void -atomic_signal_fence(memory_order) -{ - BOOST_ATOMIC_COMPILER_BARRIER(); -} - -#undef BOOST_ATOMIC_COMPILER_BARRIER - -class atomic_flag -{ -private: - atomic_flag(const atomic_flag &) /* = delete */ ; - atomic_flag & operator=(const atomic_flag &) /* = delete */ ; - uint32_t v_; -public: - BOOST_CONSTEXPR atomic_flag(void) BOOST_NOEXCEPT : v_(0) {} - - bool - test_and_set(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before(order); - const uint32_t old = (uint32_t)BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&v_, 1); - atomics::detail::platform_fence_after(order); - return old != 0; - } - - void - clear(memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - atomics::detail::platform_fence_before_store(order); - BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&v_, 0); - atomics::detail::platform_fence_after_store(order); - } -}; - -} // namespace boost - -#define BOOST_ATOMIC_FLAG_LOCK_FREE 2 - -#include - -#if !defined(BOOST_ATOMIC_FORCE_FALLBACK) - -#define BOOST_ATOMIC_CHAR_LOCK_FREE 2 -#define BOOST_ATOMIC_SHORT_LOCK_FREE 2 -#define BOOST_ATOMIC_INT_LOCK_FREE 2 -#define BOOST_ATOMIC_LONG_LOCK_FREE 2 -#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64) -#define BOOST_ATOMIC_LLONG_LOCK_FREE 2 -#else -#define BOOST_ATOMIC_LLONG_LOCK_FREE 0 -#endif -#define BOOST_ATOMIC_POINTER_LOCK_FREE 2 -#define BOOST_ATOMIC_BOOL_LOCK_FREE 2 - -namespace boost { -namespace atomics { -namespace detail { - -#if defined(_MSC_VER) -#pragma warning(push) -// 'char' : forcing value to bool 'true' or 'false' (performance warning) -#pragma warning(disable: 4800) -#endif - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8 - typedef value_type storage_type; -#else - typedef uint32_t storage_type; -#endif - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT: v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - v_ = static_cast< storage_type >(v); - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = static_cast< value_type >(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); -#ifdef BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8 - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD8(&v_, v)); -#else - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&v_, v)); -#endif - platform_fence_after(order); - return v; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - typedef typename make_signed< value_type >::type signed_value_type; - return fetch_add(static_cast< value_type >(-static_cast< signed_value_type >(v)), order); - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); -#ifdef BOOST_ATOMIC_INTERLOCKED_EXCHANGE8 - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(&v_, v)); -#else - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&v_, v)); -#endif - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8 - value_type oldval = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8(&v_, desired, previous)); -#else - value_type oldval = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&v_, desired, previous)); -#endif - bool success = (previous == oldval); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = oldval; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#ifdef BOOST_ATOMIC_INTERLOCKED_AND8 - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_AND8(&v_, v)); - platform_fence_after(order); - return v; -#elif defined(BOOST_ATOMIC_INTERLOCKED_AND) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_AND(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#ifdef BOOST_ATOMIC_INTERLOCKED_OR8 - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_OR8(&v_, v)); - platform_fence_after(order); - return v; -#elif defined(BOOST_ATOMIC_INTERLOCKED_OR) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_OR(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#ifdef BOOST_ATOMIC_INTERLOCKED_XOR8 - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_XOR8(&v_, v)); - platform_fence_after(order); - return v; -#elif defined(BOOST_ATOMIC_INTERLOCKED_XOR) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16 - typedef value_type storage_type; -#else - typedef uint32_t storage_type; -#endif - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT: v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - v_ = static_cast< storage_type >(v); - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = static_cast< value_type >(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); -#ifdef BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16 - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD16(&v_, v)); -#else - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&v_, v)); -#endif - platform_fence_after(order); - return v; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - typedef typename make_signed< value_type >::type signed_value_type; - return fetch_add(static_cast< value_type >(-static_cast< signed_value_type >(v)), order); - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); -#ifdef BOOST_ATOMIC_INTERLOCKED_EXCHANGE16 - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(&v_, v)); -#else - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&v_, v)); -#endif - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16 - value_type oldval = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16(&v_, desired, previous)); -#else - value_type oldval = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&v_, desired, previous)); -#endif - bool success = (previous == oldval); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = oldval; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#ifdef BOOST_ATOMIC_INTERLOCKED_AND16 - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_AND16(&v_, v)); - platform_fence_after(order); - return v; -#elif defined(BOOST_ATOMIC_INTERLOCKED_AND) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_AND(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#ifdef BOOST_ATOMIC_INTERLOCKED_OR16 - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_OR16(&v_, v)); - platform_fence_after(order); - return v; -#elif defined(BOOST_ATOMIC_INTERLOCKED_OR) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_OR(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#ifdef BOOST_ATOMIC_INTERLOCKED_XOR16 - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_XOR16(&v_, v)); - platform_fence_after(order); - return v; -#elif defined(BOOST_ATOMIC_INTERLOCKED_XOR) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef value_type storage_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT: v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - v_ = static_cast< storage_type >(v); - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - value_type v = static_cast< value_type >(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD(&v_, v)); - platform_fence_after(order); - return v; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - typedef typename make_signed< value_type >::type signed_value_type; - return fetch_add(static_cast< value_type >(-static_cast< signed_value_type >(v)), order); - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&v_, v)); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - value_type oldval = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&v_, desired, previous)); - bool success = (previous == oldval); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = oldval; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#if defined(BOOST_ATOMIC_INTERLOCKED_AND) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_AND(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#if defined(BOOST_ATOMIC_INTERLOCKED_OR) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_OR(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for(; !compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#if defined(BOOST_ATOMIC_INTERLOCKED_XOR) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_XOR(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - bool - is_lock_free(void)const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64) - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef value_type storage_type; - typedef T difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT: v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - v_ = static_cast< storage_type >(v); - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - value_type v = static_cast< value_type >(v_); - platform_fence_after_load(order); - return v; - } - - value_type - fetch_add(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD64(&v_, v)); - platform_fence_after(order); - return v; - } - - value_type - fetch_sub(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - typedef typename make_signed< value_type >::type signed_value_type; - return fetch_add(static_cast< value_type >(-static_cast< signed_value_type >(v)), order); - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(&v_, v)); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - value_type oldval = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(&v_, desired, previous)); - bool success = (previous == oldval); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = oldval; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_and(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#if defined(BOOST_ATOMIC_INTERLOCKED_AND64) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_AND64(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp & v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - value_type - fetch_or(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#if defined(BOOST_ATOMIC_INTERLOCKED_OR64) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_OR64(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp | v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - value_type - fetch_xor(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { -#if defined(BOOST_ATOMIC_INTERLOCKED_XOR64) - platform_fence_before(order); - v = static_cast< value_type >(BOOST_ATOMIC_INTERLOCKED_XOR64(&v_, v)); - platform_fence_after(order); - return v; -#else - value_type tmp = load(memory_order_relaxed); - for (; !compare_exchange_weak(tmp, tmp ^ v, order, memory_order_relaxed);) - { - BOOST_ATOMIC_X86_PAUSE(); - } - return tmp; -#endif - } - - bool - is_lock_free(void)const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_INTEGRAL_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -#endif // defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64) - -// MSVC 2012 fails to recognize sizeof(T) as a constant expression in template specializations -enum msvc_sizeof_pointer_workaround { sizeof_pointer = sizeof(void*) }; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef ptrdiff_t difference_type; - typedef void* value_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT: v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - v = (value_type)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(&v_, v); - platform_fence_after(order); - return v; - } - - bool compare_exchange_strong(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - value_type oldval = (value_type)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&v_, desired, previous); - bool success = (previous == oldval); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = oldval; - return success; - } - - bool compare_exchange_weak(value_type & expected, value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void)const volatile BOOST_NOEXCEPT - { - return true; - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - value_type res = (value_type)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(&v_, v); - platform_fence_after(order); - return res; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - BOOST_ATOMIC_DECLARE_VOID_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T* value_type; - typedef ptrdiff_t difference_type; -public: - BOOST_CONSTEXPR explicit base_atomic(value_type v) BOOST_NOEXCEPT: v_(v) {} - base_atomic(void) {} - - void - store(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - platform_fence_before(order); - const_cast(v_) = v; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - value_type v = const_cast(v_); - platform_fence_after_load(order); - return v; - } - - value_type - exchange(value_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - platform_fence_before(order); - v = (value_type)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_POINTER(&v_, v); - platform_fence_after(order); - return v; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - value_type previous = expected; - platform_fence_before(success_order); - value_type oldval = (value_type)BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&v_, desired, previous); - bool success = (previous == oldval); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - expected = oldval; - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - value_type - fetch_add(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - v = v * sizeof(*v_); - platform_fence_before(order); - value_type res = (value_type)BOOST_ATOMIC_INTERLOCKED_EXCHANGE_ADD_POINTER(&v_, v); - platform_fence_after(order); - return res; - } - - value_type - fetch_sub(difference_type v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - return fetch_add(-v, order); - } - - bool - is_lock_free(void)const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_POINTER_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - value_type v_; -}; - - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8 - typedef uint8_t storage_type; -#else - typedef uint32_t storage_type; -#endif -public: -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8 - BOOST_CONSTEXPR explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(reinterpret_cast< storage_type const& >(v)) - { - } -#else - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } -#endif - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst) const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); -#ifdef BOOST_ATOMIC_INTERLOCKED_EXCHANGE8 - tmp = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE8(&v_, tmp)); -#else - tmp = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&v_, tmp)); -#endif - platform_fence_after(order); - value_type res; - memcpy(&res, &tmp, sizeof(value_type)); - return res; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - platform_fence_before(success_order); -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8 - storage_type oldval = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE8(&v_, desired_s, expected_s)); -#else - storage_type oldval = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&v_, desired_s, expected_s)); -#endif - bool success = (oldval == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &oldval, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void) const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16 - typedef uint16_t storage_type; -#else - typedef uint32_t storage_type; -#endif -public: -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16 - BOOST_CONSTEXPR explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(reinterpret_cast< storage_type const& >(v)) - { - } -#else - explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } -#endif - - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); -#ifdef BOOST_ATOMIC_INTERLOCKED_EXCHANGE16 - tmp = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE16(&v_, tmp)); -#else - tmp = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&v_, tmp)); -#endif - platform_fence_after(order); - value_type res; - memcpy(&res, &tmp, sizeof(value_type)); - return res; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - platform_fence_before(success_order); -#ifdef BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16 - storage_type oldval = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE16(&v_, desired_s, expected_s)); -#else - storage_type oldval = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&v_, desired_s, expected_s)); -#endif - bool success = (oldval == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &oldval, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void)const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint32_t storage_type; -public: - explicit base_atomic(value_type const& v) : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - tmp = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE(&v_, tmp)); - platform_fence_after(order); - value_type res; - memcpy(&res, &tmp, sizeof(value_type)); - return res; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - platform_fence_before(success_order); - storage_type oldval = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(&v_, desired_s, expected_s)); - bool success = (oldval == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &oldval, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void)const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -#if defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64) - -template -class base_atomic -{ - typedef base_atomic this_type; - typedef T value_type; - typedef uint64_t storage_type; -public: - explicit base_atomic(value_type const& v) : v_(0) - { - memcpy(&v_, &v, sizeof(value_type)); - } - base_atomic(void) {} - - void - store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - if (order != memory_order_seq_cst) { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - const_cast(v_) = tmp; - } else { - exchange(v, order); - } - } - - value_type - load(memory_order order = memory_order_seq_cst)const volatile BOOST_NOEXCEPT - { - storage_type tmp = const_cast(v_); - platform_fence_after_load(order); - value_type v; - memcpy(&v, &tmp, sizeof(value_type)); - return v; - } - - value_type - exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT - { - storage_type tmp = 0; - memcpy(&tmp, &v, sizeof(value_type)); - platform_fence_before(order); - tmp = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_EXCHANGE64(&v_, tmp)); - platform_fence_after(order); - value_type res; - memcpy(&res, &tmp, sizeof(value_type)); - return res; - } - - bool - compare_exchange_strong( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - storage_type expected_s = 0, desired_s = 0; - memcpy(&expected_s, &expected, sizeof(value_type)); - memcpy(&desired_s, &desired, sizeof(value_type)); - platform_fence_before(success_order); - storage_type oldval = static_cast< storage_type >(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64(&v_, desired_s, expected_s)); - bool success = (oldval == expected_s); - if (success) - platform_fence_after(success_order); - else - platform_fence_after(failure_order); - memcpy(&expected, &oldval, sizeof(value_type)); - return success; - } - - bool - compare_exchange_weak( - value_type & expected, - value_type const& desired, - memory_order success_order, - memory_order failure_order) volatile BOOST_NOEXCEPT - { - return compare_exchange_strong(expected, desired, success_order, failure_order); - } - - bool - is_lock_free(void)const volatile BOOST_NOEXCEPT - { - return true; - } - - BOOST_ATOMIC_DECLARE_BASE_OPERATORS -private: - base_atomic(const base_atomic &) /* = delete */ ; - void operator=(const base_atomic &) /* = delete */ ; - storage_type v_; -}; - -#endif // defined(BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE64) - -} // namespace detail -} // namespace atomics -} // namespace boost - -#endif /* !defined(BOOST_ATOMIC_FORCE_FALLBACK) */ - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#endif diff --git a/3party/boost/boost/atomic/fences.hpp b/3party/boost/boost/atomic/fences.hpp new file mode 100644 index 0000000000..31e3040578 --- /dev/null +++ b/3party/boost/boost/atomic/fences.hpp @@ -0,0 +1,67 @@ +/* + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + * + * Copyright (c) 2011 Helge Bahmann + * Copyright (c) 2013 Tim Blechmann + * Copyright (c) 2014 Andrey Semashev + */ +/*! + * \file atomic/fences.hpp + * + * This header contains definition of \c atomic_thread_fence and \c atomic_signal_fence functions. + */ + +#ifndef BOOST_ATOMIC_FENCES_HPP_INCLUDED_ +#define BOOST_ATOMIC_FENCES_HPP_INCLUDED_ + +#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +/* + * IMPLEMENTATION NOTE: All interface functions MUST be declared with BOOST_FORCEINLINE, + * see comment for convert_memory_order_to_gcc in ops_gcc_atomic.hpp. + */ + +namespace boost { + +namespace atomics { + +#if BOOST_ATOMIC_THREAD_FENCE > 0 +BOOST_FORCEINLINE void atomic_thread_fence(memory_order order) BOOST_NOEXCEPT +{ + detail::thread_fence(order); +} +#else +BOOST_FORCEINLINE void atomic_thread_fence(memory_order) BOOST_NOEXCEPT +{ + detail::lockpool::thread_fence(); +} +#endif + +#if BOOST_ATOMIC_SIGNAL_FENCE > 0 +BOOST_FORCEINLINE void atomic_signal_fence(memory_order order) BOOST_NOEXCEPT +{ + detail::signal_fence(order); +} +#else +BOOST_FORCEINLINE void atomic_signal_fence(memory_order) BOOST_NOEXCEPT +{ + detail::lockpool::signal_fence(); +} +#endif + +} // namespace atomics + +using atomics::atomic_thread_fence; +using atomics::atomic_signal_fence; + +} // namespace boost + +#endif // BOOST_ATOMIC_FENCES_HPP_INCLUDED_ diff --git a/3party/boost/boost/bimap/container_adaptor/container_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/container_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/detail/comparison_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/detail/comparison_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/detail/functor_bag.hpp b/3party/boost/boost/bimap/container_adaptor/detail/functor_bag.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/detail/identity_converters.hpp b/3party/boost/boost/bimap/container_adaptor/detail/identity_converters.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/detail/key_extractor.hpp b/3party/boost/boost/bimap/container_adaptor/detail/key_extractor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp b/3party/boost/boost/bimap/container_adaptor/detail/non_unique_container_helper.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/list_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/list_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/multiset_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/multiset_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/set_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/set_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/support/iterator_facade_converters.hpp b/3party/boost/boost/bimap/container_adaptor/support/iterator_facade_converters.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/unordered_associative_container_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/unordered_multiset_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/container_adaptor/unordered_set_adaptor.hpp b/3party/boost/boost/bimap/container_adaptor/unordered_set_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/concept_tags.hpp b/3party/boost/boost/bimap/detail/concept_tags.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/debug/static_error.hpp b/3party/boost/boost/bimap/detail/debug/static_error.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/generate_index_binder.hpp b/3party/boost/boost/bimap/detail/generate_index_binder.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/generate_relation_binder.hpp b/3party/boost/boost/bimap/detail/generate_relation_binder.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/generate_view_binder.hpp b/3party/boost/boost/bimap/detail/generate_view_binder.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/is_set_type_of.hpp b/3party/boost/boost/bimap/detail/is_set_type_of.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/manage_additional_parameters.hpp b/3party/boost/boost/bimap/detail/manage_additional_parameters.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/manage_bimap_key.hpp b/3party/boost/boost/bimap/detail/manage_bimap_key.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/modifier_adaptor.hpp b/3party/boost/boost/bimap/detail/modifier_adaptor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/non_unique_views_helper.hpp b/3party/boost/boost/bimap/detail/non_unique_views_helper.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/test/check_metadata.hpp b/3party/boost/boost/bimap/detail/test/check_metadata.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/detail/user_interface_config.hpp b/3party/boost/boost/bimap/detail/user_interface_config.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/detail/access_builder.hpp b/3party/boost/boost/bimap/relation/detail/access_builder.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/detail/metadata_access_builder.hpp b/3party/boost/boost/bimap/relation/detail/metadata_access_builder.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/detail/static_access_builder.hpp b/3party/boost/boost/bimap/relation/detail/static_access_builder.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/detail/to_mutable_relation_functor.hpp b/3party/boost/boost/bimap/relation/detail/to_mutable_relation_functor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/member_at.hpp b/3party/boost/boost/bimap/relation/member_at.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/pair_layout.hpp b/3party/boost/boost/bimap/relation/pair_layout.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/support/get.hpp b/3party/boost/boost/bimap/relation/support/get.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/support/get_pair_functor.hpp b/3party/boost/boost/bimap/relation/support/get_pair_functor.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/support/is_tag_of_member_at.hpp b/3party/boost/boost/bimap/relation/support/is_tag_of_member_at.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/support/member_with_tag.hpp b/3party/boost/boost/bimap/relation/support/member_with_tag.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/support/opposite_tag.hpp b/3party/boost/boost/bimap/relation/support/opposite_tag.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/support/pair_by.hpp b/3party/boost/boost/bimap/relation/support/pair_by.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/support/pair_type_by.hpp b/3party/boost/boost/bimap/relation/support/pair_type_by.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/support/value_type_of.hpp b/3party/boost/boost/bimap/relation/support/value_type_of.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/relation/symmetrical_base.hpp b/3party/boost/boost/bimap/relation/symmetrical_base.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/support/data_type_by.hpp b/3party/boost/boost/bimap/support/data_type_by.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/support/key_type_by.hpp b/3party/boost/boost/bimap/support/key_type_by.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/support/lambda.hpp b/3party/boost/boost/bimap/support/lambda.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/support/map_by.hpp b/3party/boost/boost/bimap/support/map_by.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/support/map_type_by.hpp b/3party/boost/boost/bimap/support/map_type_by.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/support/value_type_by.hpp b/3party/boost/boost/bimap/support/value_type_by.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/tags/support/apply_to_value_type.hpp b/3party/boost/boost/bimap/tags/support/apply_to_value_type.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/tags/support/default_tagged.hpp b/3party/boost/boost/bimap/tags/support/default_tagged.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/tags/support/is_tagged.hpp b/3party/boost/boost/bimap/tags/support/is_tagged.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/tags/support/overwrite_tagged.hpp b/3party/boost/boost/bimap/tags/support/overwrite_tagged.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/tags/support/tag_of.hpp b/3party/boost/boost/bimap/tags/support/tag_of.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/tags/support/value_type_of.hpp b/3party/boost/boost/bimap/tags/support/value_type_of.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/tags/tagged.hpp b/3party/boost/boost/bimap/tags/tagged.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/views/multiset_view.hpp b/3party/boost/boost/bimap/views/multiset_view.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/views/set_view.hpp b/3party/boost/boost/bimap/views/set_view.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/views/unordered_multiset_view.hpp b/3party/boost/boost/bimap/views/unordered_multiset_view.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bimap/views/unordered_set_view.hpp b/3party/boost/boost/bimap/views/unordered_set_view.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/bind/arg.hpp b/3party/boost/boost/bind/arg.hpp index 0d5cd03a74..c879bb408b 100644 --- a/3party/boost/boost/bind/arg.hpp +++ b/3party/boost/boost/bind/arg.hpp @@ -21,6 +21,7 @@ #include #include +#include namespace boost { @@ -33,8 +34,7 @@ template< int I > struct arg template< class T > arg( T const & /* t */ ) { - // static assert I == is_placeholder::value - typedef char T_must_be_placeholder[ I == is_placeholder::value? 1: -1 ]; + BOOST_STATIC_ASSERT( I == is_placeholder::value ); } }; diff --git a/3party/boost/boost/call_traits.hpp b/3party/boost/boost/call_traits.hpp index 5253a6de58..2c1328e94d 100644 --- a/3party/boost/boost/call_traits.hpp +++ b/3party/boost/boost/call_traits.hpp @@ -5,7 +5,7 @@ // // See http://www.boost.org/libs/utility for most recent version including documentation. -// See boost/detail/call_traits.hpp and boost/detail/ob_call_traits.hpp +// See boost/detail/call_traits.hpp // for full copyright notices. #ifndef BOOST_CALL_TRAITS_HPP @@ -15,10 +15,6 @@ #include #endif -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -#include -#else #include -#endif #endif // BOOST_CALL_TRAITS_HPP diff --git a/3party/boost/boost/cast.hpp b/3party/boost/boost/cast.hpp index 2615d183fa..ab452bdf16 100644 --- a/3party/boost/boost/cast.hpp +++ b/3party/boost/boost/cast.hpp @@ -1,107 +1,20 @@ -// boost cast.hpp header file ----------------------------------------------// - -// (C) Copyright Kevlin Henney and Dave Abrahams 1999. +// boost cast.hpp header file +// +// (C) Copyright Antony Polukhin 2014. +// // Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - +// // See http://www.boost.org/libs/conversion for Documentation. -// Revision History -// 23 JUn 05 numeric_cast removed and redirected to the new verion (Fernando Cacciola) -// 02 Apr 01 Removed BOOST_NO_LIMITS workarounds and included -// instead (the workaround did not -// actually compile when BOOST_NO_LIMITS was defined in -// any case, so we loose nothing). (John Maddock) -// 21 Jan 01 Undid a bug I introduced yesterday. numeric_cast<> never -// worked with stock GCC; trying to get it to do that broke -// vc-stlport. -// 20 Jan 01 Moved BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS to config.hpp. -// Removed unused BOOST_EXPLICIT_TARGET macro. Moved -// boost::detail::type to boost/type.hpp. Made it compile with -// stock gcc again (Dave Abrahams) -// 29 Nov 00 Remove nested namespace cast, cleanup spacing before Formal -// Review (Beman Dawes) -// 19 Oct 00 Fix numeric_cast for floating-point types (Dave Abrahams) -// 15 Jul 00 Suppress numeric_cast warnings for GCC, Borland and MSVC -// (Dave Abrahams) -// 30 Jun 00 More MSVC6 wordarounds. See comments below. (Dave Abrahams) -// 28 Jun 00 Removed implicit_cast<>. See comment below. (Beman Dawes) -// 27 Jun 00 More MSVC6 workarounds -// 15 Jun 00 Add workarounds for MSVC6 -// 2 Feb 00 Remove bad_numeric_cast ";" syntax error (Doncho Angelov) -// 26 Jan 00 Add missing throw() to bad_numeric_cast::what(0 (Adam Levar) -// 29 Dec 99 Change using declarations so usages in other namespaces work -// correctly (Dave Abrahams) -// 23 Sep 99 Change polymorphic_downcast assert to also detect M.I. errors -// as suggested Darin Adler and improved by Valentin Bonnard. -// 2 Sep 99 Remove controversial asserts, simplify, rename. -// 30 Aug 99 Move to cast.hpp, replace value_cast with numeric_cast, -// place in nested namespace. -// 3 Aug 99 Initial version +// This is a DEPRECATED header file! +// Use or instead #ifndef BOOST_CAST_HPP #define BOOST_CAST_HPP -# include -# include -# include -# include -# include -# include - -// It has been demonstrated numerous times that MSVC 6.0 fails silently at link -// time if you use a template function which has template parameters that don't -// appear in the function's argument list. -// -// TODO: Add this to config.hpp? -# if defined(BOOST_MSVC) && BOOST_MSVC < 1300 -# define BOOST_EXPLICIT_DEFAULT_TARGET , ::boost::type* = 0 -# else -# define BOOST_EXPLICIT_DEFAULT_TARGET -# endif - -namespace boost -{ -// See the documentation for descriptions of how to choose between -// static_cast<>, dynamic_cast<>, polymorphic_cast<> and polymorphic_downcast<> - -// polymorphic_cast --------------------------------------------------------// - - // Runtime checked polymorphic downcasts and crosscasts. - // Suggested in The C++ Programming Language, 3rd Ed, Bjarne Stroustrup, - // section 15.8 exercise 1, page 425. - - template - inline Target polymorphic_cast(Source* x BOOST_EXPLICIT_DEFAULT_TARGET) - { - Target tmp = dynamic_cast(x); - if ( tmp == 0 ) throw std::bad_cast(); - return tmp; - } - -// polymorphic_downcast ----------------------------------------------------// - - // BOOST_ASSERT() checked polymorphic downcast. Crosscasts prohibited. - - // WARNING: Because this cast uses BOOST_ASSERT(), it violates - // the One Definition Rule if used in multiple translation units - // where BOOST_DISABLE_ASSERTS, BOOST_ENABLE_ASSERT_HANDLER - // NDEBUG are defined inconsistently. - - // Contributed by Dave Abrahams - - template - inline Target polymorphic_downcast(Source* x BOOST_EXPLICIT_DEFAULT_TARGET) - { - BOOST_ASSERT( dynamic_cast(x) == x ); // detect logic error - return static_cast(x); - } - -# undef BOOST_EXPLICIT_DEFAULT_TARGET - -} // namespace boost - +# include # include #endif // BOOST_CAST_HPP diff --git a/3party/boost/boost/checked_delete.hpp b/3party/boost/boost/checked_delete.hpp index 9bb84e8e1b..fb71c789c8 100644 --- a/3party/boost/boost/checked_delete.hpp +++ b/3party/boost/boost/checked_delete.hpp @@ -1,69 +1,17 @@ -#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED -#define BOOST_CHECKED_DELETE_HPP_INCLUDED +/* + * Copyright (c) 2014 Glen Fernandes + * + * Distributed under the Boost Software License, Version 1.0. (See + * accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ -// MS compatible compilers support #pragma once +#ifndef BOOST_CHECKED_DELETE_HPP +#define BOOST_CHECKED_DELETE_HPP + +// The header file at this path is deprecated; +// use boost/core/checked_delete.hpp instead. + +#include -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once #endif - -// -// boost/checked_delete.hpp -// -// Copyright (c) 2002, 2003 Peter Dimov -// Copyright (c) 2003 Daniel Frey -// Copyright (c) 2003 Howard Hinnant -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/utility/checked_delete.html for documentation. -// - -namespace boost -{ - -// verify that types are complete for increased safety - -template inline void checked_delete(T * x) -{ - // intentionally complex - simplification causes regressions - typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; - (void) sizeof(type_must_be_complete); - delete x; -} - -template inline void checked_array_delete(T * x) -{ - typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; - (void) sizeof(type_must_be_complete); - delete [] x; -} - -template struct checked_deleter -{ - typedef void result_type; - typedef T * argument_type; - - void operator()(T * x) const - { - // boost:: disables ADL - boost::checked_delete(x); - } -}; - -template struct checked_array_deleter -{ - typedef void result_type; - typedef T * argument_type; - - void operator()(T * x) const - { - boost::checked_array_delete(x); - } -}; - -} // namespace boost - -#endif // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED diff --git a/3party/boost/boost/chrono/config.hpp b/3party/boost/boost/chrono/config.hpp index 301b877510..1045ba3a79 100644 --- a/3party/boost/boost/chrono/config.hpp +++ b/3party/boost/boost/chrono/config.hpp @@ -2,6 +2,7 @@ // Copyright Beman Dawes 2003, 2006, 2008 // Copyright 2009-2011 Vicente J. Botet Escriba +// Copyright (c) Microsoft Corporation 2014 // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -12,6 +13,7 @@ #define BOOST_CHRONO_CONFIG_HPP #include +#include #if !defined BOOST_CHRONO_VERSION #define BOOST_CHRONO_VERSION 1 @@ -64,13 +66,16 @@ # define BOOST_CHRONO_HAS_PROCESS_CLOCKS # endif # define BOOST_CHRONO_HAS_CLOCK_STEADY -# define BOOST_CHRONO_HAS_THREAD_CLOCK +# if BOOST_PLAT_WINDOWS_DESKTOP +# define BOOST_CHRONO_HAS_THREAD_CLOCK +# endif # define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true # endif # if defined( BOOST_CHRONO_MAC_API ) # define BOOST_CHRONO_HAS_PROCESS_CLOCKS # define BOOST_CHRONO_HAS_CLOCK_STEADY +# define BOOST_CHRONO_HAS_THREAD_CLOCK # define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true # endif @@ -92,7 +97,7 @@ # undef BOOST_CHRONO_HAS_THREAD_CLOCK # undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY # endif -# if defined(__HP_aCC) && defined(__hpux) +# if (defined(__HP_aCC) || defined(__GNUC__)) && defined(__hpux) # undef BOOST_CHRONO_HAS_THREAD_CLOCK # undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY # endif @@ -106,8 +111,6 @@ #undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY #endif -//#undef BOOST_CHRONO_HAS_PROCESS_CLOCKS - // unicode support ------------------------------// #if defined(BOOST_NO_CXX11_UNICODE_LITERALS) || defined(BOOST_NO_CXX11_CHAR16_T) || defined(BOOST_NO_CXX11_CHAR32_T) @@ -116,14 +119,7 @@ #define BOOST_CHRONO_HAS_UNICODE_SUPPORT 1 #endif -#if ! defined BOOST_NOEXCEPT -#if defined(BOOST_NO_CXX11_NOEXCEPT) -#define BOOST_NOEXCEPT -#else -#define BOOST_NOEXCEPT noexcept -#endif -#endif - +#ifndef BOOST_CHRONO_LIB_CONSTEXPR #if defined( BOOST_NO_CXX11_NUMERIC_LIMITS ) #define BOOST_CHRONO_LIB_CONSTEXPR #elif defined(_LIBCPP_VERSION) && !defined(_LIBCPP_CONSTEXPR) @@ -131,6 +127,7 @@ #else #define BOOST_CHRONO_LIB_CONSTEXPR BOOST_CONSTEXPR #endif +#endif #if defined( BOOST_NO_CXX11_NUMERIC_LIMITS ) # define BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW throw() @@ -142,7 +139,6 @@ #endif #endif - #if defined BOOST_CHRONO_PROVIDE_HYBRID_ERROR_HANDLING \ && defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING #error "BOOST_CHRONO_PROVIDE_HYBRID_ERROR_HANDLING && BOOST_CHRONO_PROVIDE_HYBRID_ERROR_HANDLING defined" diff --git a/3party/boost/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp b/3party/boost/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp index 48753bdfc7..6d09e2cb3a 100644 --- a/3party/boost/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +++ b/3party/boost/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp @@ -48,7 +48,7 @@ namespace boost process_real_cpu_clock::time_point process_real_cpu_clock::now() BOOST_NOEXCEPT { -#if 0 +#if 1 tms tm; clock_t c = ::times(&tm); if (c == clock_t(-1)) // error @@ -71,10 +71,18 @@ namespace boost if (c == clock_t(-1)) // error { BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + } else + { + long factor = chrono_detail::tick_factor(); + if (factor != -1) + { + return time_point(nanoseconds(c * factor)); + } else + { + BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + } } - return time_point( - duration(c*(1000000000l/CLOCKS_PER_SEC)) - ); + return time_point(); #endif } @@ -82,7 +90,7 @@ namespace boost process_real_cpu_clock::time_point process_real_cpu_clock::now(system::error_code & ec) { -#if 0 +#if 1 tms tm; clock_t c = ::times(&tm); if (c == clock_t(-1)) // error @@ -129,11 +137,28 @@ namespace boost ec.assign(errno, BOOST_CHRONO_SYSTEM_CATEGORY); return time_point(); } + } else + { + long factor = chrono_detail::tick_factor(); + if (factor != -1) + { + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + return time_point(nanoseconds(c * factor)); + } else + { + if (BOOST_CHRONO_IS_THROWS(ec)) + { + boost::throw_exception(system::system_error(errno, BOOST_CHRONO_SYSTEM_CATEGORY, "chrono::process_real_cpu_clock")); + } else + { + ec.assign(errno, BOOST_CHRONO_SYSTEM_CATEGORY); + return time_point(); + } + } } - return time_point( - duration(c*(1000000000l/CLOCKS_PER_SEC)) - ); - #endif } diff --git a/3party/boost/boost/chrono/detail/inlined/mac/thread_clock.hpp b/3party/boost/boost/chrono/detail/inlined/mac/thread_clock.hpp index dad806e4e2..1a4406b83d 100644 --- a/3party/boost/boost/chrono/detail/inlined/mac/thread_clock.hpp +++ b/3party/boost/boost/chrono/detail/inlined/mac/thread_clock.hpp @@ -1,6 +1,8 @@ // boost thread_clock.cpp -----------------------------------------------------------// -// Copyright Vicente J. Botet Escriba 2010 +// Copyright Beman Dawes 1994, 2006, 2008 +// Copyright Vicente J. Botet Escriba 2009-2011 +// Copyright Christopher Brown 2013 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt @@ -10,6 +12,80 @@ //--------------------------------------------------------------------------------------// #include -#include +#include #include +# include +# include + +namespace boost { namespace chrono { + + thread_clock::time_point thread_clock::now( ) BOOST_NOEXCEPT + { + // get the thread port (borrowing pthread's reference) + mach_port_t port = pthread_mach_thread_np(pthread_self()); + + // get the thread info + thread_basic_info_data_t info; + mach_msg_type_number_t count = THREAD_BASIC_INFO_COUNT; + if ( thread_info(port, THREAD_BASIC_INFO, (thread_info_t)&info, &count) != KERN_SUCCESS ) + { + BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + return time_point(); + } + + // convert to nanoseconds + duration user = duration( + static_cast( info.user_time.seconds ) * 1000000000 + + static_cast(info.user_time.microseconds ) * 1000); + + duration system = duration( + static_cast( info.system_time.seconds ) * 1000000000 + + static_cast( info.system_time.microseconds ) * 1000); + + return time_point( user + system ); + } + +#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING + thread_clock::time_point thread_clock::now( system::error_code & ec ) + { + // get the thread port (borrowing pthread's reference) + mach_port_t port = pthread_mach_thread_np(pthread_self()); + + // get the thread info + thread_basic_info_data_t info; + mach_msg_type_number_t count = THREAD_BASIC_INFO_COUNT; + if ( thread_info(port, THREAD_BASIC_INFO, (thread_info_t)&info, &count) != KERN_SUCCESS ) + { + if (BOOST_CHRONO_IS_THROWS(ec)) + { + boost::throw_exception( + system::system_error( + EINVAL, + BOOST_CHRONO_SYSTEM_CATEGORY, + "chrono::thread_clock" )); + } + else + { + ec.assign( errno, BOOST_CHRONO_SYSTEM_CATEGORY ); + return time_point(); + } + } + if (!BOOST_CHRONO_IS_THROWS(ec)) + { + ec.clear(); + } + + // convert to nanoseconds + duration user = duration( + static_cast( info.user_time.seconds ) * 1000000000 + + static_cast(info.user_time.microseconds ) * 1000); + + duration system = duration( + static_cast( info.system_time.seconds ) * 1000000000 + + static_cast( info.system_time.microseconds ) * 1000); + + return time_point( user + system ); + } +#endif +} } diff --git a/3party/boost/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp b/3party/boost/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp index 5d5c4f4806..0476f590c9 100644 --- a/3party/boost/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +++ b/3party/boost/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp @@ -22,7 +22,7 @@ namespace boost { namespace chrono { namespace chrono_detail { - inline long tick_factor() // multiplier to convert ticks + inline nanoseconds::rep tick_factor() // multiplier to convert ticks // to nanoseconds; -1 if unknown { static long factor = 0; @@ -281,12 +281,13 @@ process_cpu_clock::time_point process_cpu_clock::now() BOOST_NOEXCEPT } else { - if ( chrono_detail::tick_factor() != -1 ) + nanoseconds::rep factor = chrono_detail::tick_factor(); + if ( factor != -1 ) { time_point::rep r( - 1000*c*chrono_detail::tick_factor(), - 1000*(tm.tms_utime + tm.tms_cutime)*chrono_detail::tick_factor(), - 1000*(tm.tms_stime + tm.tms_cstime)*chrono_detail::tick_factor()); + c*factor, + (tm.tms_utime + tm.tms_cutime)*factor, + (tm.tms_stime + tm.tms_cstime)*factor); return time_point(duration(r)); } else @@ -324,9 +325,9 @@ process_cpu_clock::time_point process_cpu_clock::now( if ( chrono_detail::tick_factor() != -1 ) { time_point::rep r( - 1000*c*chrono_detail::tick_factor(), - 1000*(tm.tms_utime + tm.tms_cutime)*chrono_detail::tick_factor(), - 1000*(tm.tms_stime + tm.tms_cstime)*chrono_detail::tick_factor()); + c*chrono_detail::tick_factor(), + (tm.tms_utime + tm.tms_cutime)*chrono_detail::tick_factor(), + (tm.tms_stime + tm.tms_cstime)*chrono_detail::tick_factor()); return time_point(duration(r)); } else diff --git a/3party/boost/boost/chrono/detail/inlined/win/chrono.hpp b/3party/boost/boost/chrono/detail/inlined/win/chrono.hpp index 17dae964cc..16e8c51426 100644 --- a/3party/boost/boost/chrono/detail/inlined/win/chrono.hpp +++ b/3party/boost/boost/chrono/detail/inlined/win/chrono.hpp @@ -12,9 +12,9 @@ #ifndef BOOST_CHRONO_DETAIL_INLINED_WIN_CHRONO_HPP #define BOOST_CHRONO_DETAIL_INLINED_WIN_CHRONO_HPP -#include -#include -#include +#include +#include +#include namespace boost { @@ -25,8 +25,8 @@ namespace chrono_detail BOOST_CHRONO_INLINE double get_nanosecs_per_tic() BOOST_NOEXCEPT { - boost::detail::win32::LARGE_INTEGER_ freq; - if ( !boost::detail::win32::QueryPerformanceFrequency( &freq ) ) + boost::detail::winapi::LARGE_INTEGER_ freq; + if ( !boost::detail::winapi::QueryPerformanceFrequency( &freq ) ) return 0.0L; return double(1000000000.0L / freq.QuadPart); } @@ -35,15 +35,23 @@ namespace chrono_detail steady_clock::time_point steady_clock::now() BOOST_NOEXCEPT { - static double nanosecs_per_tic = chrono_detail::get_nanosecs_per_tic(); + double nanosecs_per_tic = chrono_detail::get_nanosecs_per_tic(); - boost::detail::win32::LARGE_INTEGER_ pcount; - if ( (nanosecs_per_tic <= 0.0L) || - (!boost::detail::win32::QueryPerformanceCounter( &pcount )) ) + boost::detail::winapi::LARGE_INTEGER_ pcount; + if ( nanosecs_per_tic <= 0.0L ) { - BOOST_ASSERT(0 && "Boost::Chrono - Internal Error"); + BOOST_ASSERT(0 && "Boost::Chrono - get_nanosecs_per_tic Internal Error"); return steady_clock::time_point(); } + unsigned times=0; + while ( ! boost::detail::winapi::QueryPerformanceCounter( &pcount ) ) + { + if ( ++times > 3 ) + { + BOOST_ASSERT(0 && "Boost::Chrono - QueryPerformanceCounter Internal Error"); + return steady_clock::time_point(); + } + } return steady_clock::time_point(steady_clock::duration( static_cast((nanosecs_per_tic) * pcount.QuadPart))); @@ -53,16 +61,16 @@ namespace chrono_detail #if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING steady_clock::time_point steady_clock::now( system::error_code & ec ) { - static double nanosecs_per_tic = chrono_detail::get_nanosecs_per_tic(); + double nanosecs_per_tic = chrono_detail::get_nanosecs_per_tic(); - boost::detail::win32::LARGE_INTEGER_ pcount; + boost::detail::winapi::LARGE_INTEGER_ pcount; if ( (nanosecs_per_tic <= 0.0L) - || (!boost::detail::win32::QueryPerformanceCounter( &pcount )) ) + || (!boost::detail::winapi::QueryPerformanceCounter( &pcount )) ) { - boost::detail::win32::DWORD_ cause = + boost::detail::winapi::DWORD_ cause = ((nanosecs_per_tic <= 0.0L) ? ERROR_NOT_SUPPORTED - : boost::detail::win32::GetLastError()); + : boost::detail::winapi::GetLastError()); if (BOOST_CHRONO_IS_THROWS(ec)) { boost::throw_exception( system::system_error( @@ -89,19 +97,13 @@ namespace chrono_detail BOOST_CHRONO_INLINE system_clock::time_point system_clock::now() BOOST_NOEXCEPT { - boost::detail::win32::FILETIME_ ft; - #if defined(UNDER_CE) - // Windows CE does not define GetSystemTimeAsFileTime so we do it in two steps. - boost::detail::win32::SYSTEMTIME_ st; - boost::detail::win32::GetSystemTime( &st ); - boost::detail::win32::SystemTimeToFileTime( &st, &ft ); - #else - boost::detail::win32::GetSystemTimeAsFileTime( &ft ); // never fails - #endif + boost::detail::winapi::FILETIME_ ft; + boost::detail::winapi::GetSystemTimeAsFileTime( &ft ); // never fails return system_clock::time_point( system_clock::duration( ((static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime) - -116444736000000000LL + - 116444736000000000LL + //- (134775LL*864000000000LL) ) ); } @@ -110,21 +112,18 @@ namespace chrono_detail BOOST_CHRONO_INLINE system_clock::time_point system_clock::now( system::error_code & ec ) { - boost::detail::win32::FILETIME_ ft; - #if defined(UNDER_CE) - // Windows CE does not define GetSystemTimeAsFileTime so we do it in two steps. - boost::detail::win32::SYSTEMTIME_ st; - boost::detail::win32::GetSystemTime( &st ); - boost::detail::win32::SystemTimeToFileTime( &st, &ft ); - #else - boost::detail::win32::GetSystemTimeAsFileTime( &ft ); // never fails - #endif + boost::detail::winapi::FILETIME_ ft; + boost::detail::winapi::GetSystemTimeAsFileTime( &ft ); // never fails if (!BOOST_CHRONO_IS_THROWS(ec)) { ec.clear(); } - return time_point(duration( - (static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime)); + return system_clock::time_point( + system_clock::duration( + ((static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime) + - 116444736000000000LL + //- (134775LL*864000000000LL) + )); } #endif @@ -132,7 +131,6 @@ namespace chrono_detail std::time_t system_clock::to_time_t(const system_clock::time_point& t) BOOST_NOEXCEPT { __int64 temp = t.time_since_epoch().count(); - temp /= 10000000; return static_cast( temp ); } @@ -142,7 +140,6 @@ namespace chrono_detail { __int64 temp = t; temp *= 10000000; - return time_point(duration(temp)); } diff --git a/3party/boost/boost/chrono/detail/inlined/win/process_cpu_clocks.hpp b/3party/boost/boost/chrono/detail/inlined/win/process_cpu_clocks.hpp index 1b7e67a120..e97bfe590c 100644 --- a/3party/boost/boost/chrono/detail/inlined/win/process_cpu_clocks.hpp +++ b/3party/boost/boost/chrono/detail/inlined/win/process_cpu_clocks.hpp @@ -2,6 +2,7 @@ // Copyright Beman Dawes 1994, 2006, 2008 // Copyright 2009-2010 Vicente J. Botet Escriba +// Copyright (c) Microsoft Corporation 2014 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt @@ -18,9 +19,11 @@ #include #include -#include -#include -#include +#include +#include +#if BOOST_PLAT_WINDOWS_DESKTOP +#include +#endif namespace boost { @@ -64,14 +67,15 @@ process_real_cpu_clock::time_point process_real_cpu_clock::now( } #endif +#if BOOST_PLAT_WINDOWS_DESKTOP process_user_cpu_clock::time_point process_user_cpu_clock::now() BOOST_NOEXCEPT { // note that Windows uses 100 nanosecond ticks for FILETIME - boost::detail::win32::FILETIME_ creation, exit, user_time, system_time; + boost::detail::winapi::FILETIME_ creation, exit, user_time, system_time; - if ( boost::detail::win32::GetProcessTimes( - boost::detail::win32::GetCurrentProcess(), &creation, &exit, + if ( boost::detail::winapi::GetProcessTimes( + boost::detail::winapi::GetCurrentProcess(), &creation, &exit, &system_time, &user_time ) ) { return time_point(duration( @@ -93,10 +97,10 @@ process_user_cpu_clock::time_point process_user_cpu_clock::now( { // note that Windows uses 100 nanosecond ticks for FILETIME - boost::detail::win32::FILETIME_ creation, exit, user_time, system_time; + boost::detail::winapi::FILETIME_ creation, exit, user_time, system_time; - if ( boost::detail::win32::GetProcessTimes( - boost::detail::win32::GetCurrentProcess(), &creation, &exit, + if ( boost::detail::winapi::GetProcessTimes( + boost::detail::winapi::GetCurrentProcess(), &creation, &exit, &system_time, &user_time ) ) { if (!BOOST_CHRONO_IS_THROWS(ec)) @@ -110,7 +114,7 @@ process_user_cpu_clock::time_point process_user_cpu_clock::now( } else { - boost::detail::win32::DWORD_ cause = boost::detail::win32::GetLastError(); + boost::detail::winapi::DWORD_ cause = boost::detail::winapi::GetLastError(); if (BOOST_CHRONO_IS_THROWS(ec)) { boost::throw_exception( @@ -133,10 +137,10 @@ process_system_cpu_clock::time_point process_system_cpu_clock::now() BOOST_NOEXC { // note that Windows uses 100 nanosecond ticks for FILETIME - boost::detail::win32::FILETIME_ creation, exit, user_time, system_time; + boost::detail::winapi::FILETIME_ creation, exit, user_time, system_time; - if ( boost::detail::win32::GetProcessTimes( - boost::detail::win32::GetCurrentProcess(), &creation, &exit, + if ( boost::detail::winapi::GetProcessTimes( + boost::detail::winapi::GetCurrentProcess(), &creation, &exit, &system_time, &user_time ) ) { return time_point(duration( @@ -158,10 +162,10 @@ process_system_cpu_clock::time_point process_system_cpu_clock::now( { // note that Windows uses 100 nanosecond ticks for FILETIME - boost::detail::win32::FILETIME_ creation, exit, user_time, system_time; + boost::detail::winapi::FILETIME_ creation, exit, user_time, system_time; - if ( boost::detail::win32::GetProcessTimes( - boost::detail::win32::GetCurrentProcess(), &creation, &exit, + if ( boost::detail::winapi::GetProcessTimes( + boost::detail::winapi::GetCurrentProcess(), &creation, &exit, &system_time, &user_time ) ) { if (!BOOST_CHRONO_IS_THROWS(ec)) @@ -175,7 +179,7 @@ process_system_cpu_clock::time_point process_system_cpu_clock::now( } else { - boost::detail::win32::DWORD_ cause = boost::detail::win32::GetLastError(); + boost::detail::winapi::DWORD_ cause = boost::detail::winapi::GetLastError(); if (BOOST_CHRONO_IS_THROWS(ec)) { boost::throw_exception( @@ -198,10 +202,10 @@ process_cpu_clock::time_point process_cpu_clock::now() BOOST_NOEXCEPT { // note that Windows uses 100 nanosecond ticks for FILETIME - boost::detail::win32::FILETIME_ creation, exit, user_time, system_time; + boost::detail::winapi::FILETIME_ creation, exit, user_time, system_time; - if ( boost::detail::win32::GetProcessTimes( - boost::detail::win32::GetCurrentProcess(), &creation, &exit, + if ( boost::detail::winapi::GetProcessTimes( + boost::detail::winapi::GetCurrentProcess(), &creation, &exit, &system_time, &user_time ) ) { time_point::rep r(process_real_cpu_clock::now().time_since_epoch().count() @@ -229,10 +233,10 @@ process_cpu_clock::time_point process_cpu_clock::now( { // note that Windows uses 100 nanosecond ticks for FILETIME - boost::detail::win32::FILETIME_ creation, exit, user_time, system_time; + boost::detail::winapi::FILETIME_ creation, exit, user_time, system_time; - if ( boost::detail::win32::GetProcessTimes( - boost::detail::win32::GetCurrentProcess(), &creation, &exit, + if ( boost::detail::winapi::GetProcessTimes( + boost::detail::winapi::GetCurrentProcess(), &creation, &exit, &system_time, &user_time ) ) { if (!BOOST_CHRONO_IS_THROWS(ec)) @@ -252,7 +256,7 @@ process_cpu_clock::time_point process_cpu_clock::now( } else { - boost::detail::win32::DWORD_ cause = boost::detail::win32::GetLastError(); + boost::detail::winapi::DWORD_ cause = boost::detail::winapi::GetLastError(); if (BOOST_CHRONO_IS_THROWS(ec)) { boost::throw_exception( @@ -270,6 +274,7 @@ process_cpu_clock::time_point process_cpu_clock::now( } #endif +#endif } // namespace chrono } // namespace boost diff --git a/3party/boost/boost/chrono/detail/inlined/win/thread_clock.hpp b/3party/boost/boost/chrono/detail/inlined/win/thread_clock.hpp index 8ca1506ce5..e47c481473 100644 --- a/3party/boost/boost/chrono/detail/inlined/win/thread_clock.hpp +++ b/3party/boost/boost/chrono/detail/inlined/win/thread_clock.hpp @@ -15,9 +15,9 @@ #include #include -#include -#include -#include +#include +#include +#include namespace boost { @@ -28,10 +28,10 @@ namespace chrono thread_clock::time_point thread_clock::now( system::error_code & ec ) { // note that Windows uses 100 nanosecond ticks for FILETIME - boost::detail::win32::FILETIME_ creation, exit, user_time, system_time; + boost::detail::winapi::FILETIME_ creation, exit, user_time, system_time; - if ( boost::detail::win32::GetThreadTimes( - boost::detail::win32::GetCurrentThread (), &creation, &exit, + if ( boost::detail::winapi::GetThreadTimes( + boost::detail::winapi::GetCurrentThread (), &creation, &exit, &system_time, &user_time ) ) { duration user = duration( @@ -55,13 +55,13 @@ thread_clock::time_point thread_clock::now( system::error_code & ec ) { boost::throw_exception( system::system_error( - boost::detail::win32::GetLastError(), + boost::detail::winapi::GetLastError(), BOOST_CHRONO_SYSTEM_CATEGORY, "chrono::thread_clock" )); } else { - ec.assign( boost::detail::win32::GetLastError(), BOOST_CHRONO_SYSTEM_CATEGORY ); + ec.assign( boost::detail::winapi::GetLastError(), BOOST_CHRONO_SYSTEM_CATEGORY ); return thread_clock::time_point(duration(0)); } } @@ -72,10 +72,10 @@ thread_clock::time_point thread_clock::now() BOOST_NOEXCEPT { // note that Windows uses 100 nanosecond ticks for FILETIME - boost::detail::win32::FILETIME_ creation, exit, user_time, system_time; + boost::detail::winapi::FILETIME_ creation, exit, user_time, system_time; - if ( boost::detail::win32::GetThreadTimes( - boost::detail::win32::GetCurrentThread (), &creation, &exit, + if ( boost::detail::winapi::GetThreadTimes( + boost::detail::winapi::GetCurrentThread (), &creation, &exit, &system_time, &user_time ) ) { duration user = duration( diff --git a/3party/boost/boost/chrono/floor.hpp b/3party/boost/boost/chrono/floor.hpp index e133e49c8a..eb85fa7446 100644 --- a/3party/boost/boost/chrono/floor.hpp +++ b/3party/boost/boost/chrono/floor.hpp @@ -24,7 +24,9 @@ namespace boost template To floor(const duration& d) { - return duration_cast(d); + To t = duration_cast(d); + if (t>d) --t; + return t; } diff --git a/3party/boost/boost/chrono/io/duration_get.hpp b/3party/boost/boost/chrono/io/duration_get.hpp index 3b051e2872..ce3075b7b3 100644 --- a/3party/boost/boost/chrono/io/duration_get.hpp +++ b/3party/boost/boost/chrono/io/duration_get.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -44,6 +45,12 @@ namespace boost is_signed::value, long long, unsigned long long>::type>::type type; }; + template + struct duration_io_intermediate, false> + { + typedef process_times::type> type; + }; + template typename enable_if , bool>::type reduce(intermediate_type& r, unsigned long long& den, std::ios_base::iostate& err) @@ -300,7 +307,7 @@ namespace boost } common_type_t t = r * num; t /= den; - if (t > 0) + if (t > duration_values::zero()) { Rep pt = t; if ( (duration_values::max)() < pt) @@ -367,6 +374,45 @@ namespace boost { return std::use_facet >(ios.getloc()).get(s, end, ios, err, r); } + template + iter_type get_value(iter_type s, iter_type end, std::ios_base& ios, std::ios_base::iostate& err, process_times& r) const + { + if (s == end) { + err |= std::ios_base::eofbit; + return s; + } else if (*s != '{') { // mandatory '{' + err |= std::ios_base::failbit; + return s; + } + ++s; + s = std::use_facet >(ios.getloc()).get(s, end, ios, err, r.real); + if (s == end) { + err |= std::ios_base::eofbit; + return s; + } else if (*s != ';') { // mandatory ';' + err |= std::ios_base::failbit; + return s; + } + ++s; + s = std::use_facet >(ios.getloc()).get(s, end, ios, err, r.user); + if (s == end) { + err |= std::ios_base::eofbit; + return s; + } else if (*s != ';') { // mandatory ';' + err |= std::ios_base::failbit; + return s; + } + ++s; + s = std::use_facet >(ios.getloc()).get(s, end, ios, err, r.system); + if (s == end) { + err |= std::ios_base::eofbit; + return s; + } else if (*s != '}') { // mandatory '}' + err |= std::ios_base::failbit; + return s; + } + return s; + } /** * diff --git a/3party/boost/boost/chrono/io/duration_put.hpp b/3party/boost/boost/chrono/io/duration_put.hpp index 7bd0cd7db1..81c13cf40e 100644 --- a/3party/boost/boost/chrono/io/duration_put.hpp +++ b/3party/boost/boost/chrono/io/duration_put.hpp @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -191,6 +192,19 @@ namespace boost static_cast (d.count())); } + template + iter_type put_value(iter_type s, std::ios_base& ios, char_type fill, duration, Period> const& d) const + { + *s++ = CharT('{'); + s = put_value(s, ios, fill, process_real_cpu_clock::duration(d.count().real)); + *s++ = CharT(';'); + s = put_value(s, ios, fill, process_user_cpu_clock::duration(d.count().user)); + *s++ = CharT(';'); + s = put_value(s, ios, fill, process_system_cpu_clock::duration(d.count().system)); + *s++ = CharT('}'); + return s; + } + /** * * @param s an output stream iterator @@ -240,6 +254,25 @@ namespace boost } return s; } + template + iter_type put_unit(duration_units const& facet, iter_type s, std::ios_base& ios, char_type fill, + duration, Period> const& d) const + { + duration real(d.count().real); + if (facet.template is_named_unit()) { + string_type str = facet.get_unit(get_duration_style(ios), real); + s=std::copy(str.begin(), str.end(), s); + } else { + *s++ = CharT('['); + std::use_facet >(ios.getloc()).put(s, ios, fill, Period::num); + *s++ = CharT('/'); + std::use_facet >(ios.getloc()).put(s, ios, fill, Period::den); + *s++ = CharT(']'); + string_type str = facet.get_n_d_unit(get_duration_style(ios), real); + s=std::copy(str.begin(), str.end(), s); + } + return s; + } /** * Unique identifier for this type of facet. diff --git a/3party/boost/boost/chrono/io/time_point_io.hpp b/3party/boost/boost/chrono/io/time_point_io.hpp index 5f8640750d..629479cde9 100644 --- a/3party/boost/boost/chrono/io/time_point_io.hpp +++ b/3party/boost/boost/chrono/io/time_point_io.hpp @@ -28,27 +28,38 @@ #include #include #include +#include #include #include #include -#include +#include #define BOOST_CHRONO_INTERNAL_TIMEGM \ - ( defined BOOST_WINDOWS && ! defined(__CYGWIN__) ) || \ - ( (defined(sun) || defined(__sun)) && defined __GNUC__) + ( defined BOOST_WINDOWS && ! defined(__CYGWIN__) ) \ + || (defined(sun) || defined(__sun)) \ + || (defined __IBMCPP__) \ + || defined __ANDROID__ \ + || defined __QNXNTO__ \ + || (defined(_AIX) && defined __GNUC__) -#define BOOST_CHRONO_INTERNAL_GMTIME defined BOOST_WINDOWS && ! defined(__CYGWIN__) +#define BOOST_CHRONO_INTERNAL_GMTIME \ + (defined BOOST_WINDOWS && ! defined(__CYGWIN__)) \ + || ( (defined(sun) || defined(__sun)) && defined __GNUC__) \ + || (defined __IBMCPP__) \ + || defined __ANDROID__ \ + || (defined(_AIX) && defined __GNUC__) #define BOOST_CHRONO_USES_INTERNAL_TIME_GET - namespace boost { namespace chrono { + typedef double fractional_seconds; namespace detail { + template > struct time_get { @@ -158,8 +169,7 @@ namespace boost err |= std::ios_base::failbit; } - void - get_second(int& s, + void get_second(int& s, iter_type& b, iter_type e, std::ios_base::iostate& err, const std::ctype& ct) const @@ -171,7 +181,89 @@ namespace boost err |= std::ios_base::failbit; } + void get_white_space(iter_type& b, iter_type e, + std::ios_base::iostate& err, + const std::ctype& ct) const + { + for (; b != e && ct.is(std::ctype_base::space, *b); ++b) + ; + if (b == e) + err |= std::ios_base::eofbit; + } + void get_12_hour(int& h, + iter_type& b, iter_type e, + std::ios_base::iostate& err, + const std::ctype& ct) const + { + int t = get_up_to_n_digits(b, e, err, ct, 2); + if (!(err & std::ios_base::failbit) && 1 <= t && t <= 12) + h = t; + else + err |= std::ios_base::failbit; + } + + void get_percent(iter_type& b, iter_type e, + std::ios_base::iostate& err, + const std::ctype& ct) const + { + if (b == e) + { + err |= std::ios_base::eofbit | std::ios_base::failbit; + return; + } + if (ct.narrow(*b, 0) != '%') + err |= std::ios_base::failbit; + else if(++b == e) + err |= std::ios_base::eofbit; + } + + void get_day_year_num(int& d, + iter_type& b, iter_type e, + std::ios_base::iostate& err, + const std::ctype& ct) const + { + int t = get_up_to_n_digits(b, e, err, ct, 3); + if (!(err & std::ios_base::failbit) && t <= 365) + d = t; + else + err |= std::ios_base::failbit; + } + + void + get_weekday(int& w, + iter_type& b, iter_type e, + std::ios_base::iostate& err, + const std::ctype& ct) const + { + int t = get_up_to_n_digits(b, e, err, ct, 1); + if (!(err & std::ios_base::failbit) && t <= 6) + w = t; + else + err |= std::ios_base::failbit; + } +#if 0 + + void + get_am_pm(int& h, + iter_type& b, iter_type e, + std::ios_base::iostate& err, + const std::ctype& ct) const + { + const string_type* ap = am_pm(); + if (ap[0].size() + ap[1].size() == 0) + { + err |= ios_base::failbit; + return; + } + ptrdiff_t i = detail::scan_keyword(b, e, ap, ap+2, ct, err, false) - ap; + if (i == 0 && h == 12) + h = 0; + else if (i == 1 && h < 12) + h += 12; + } + +#endif InputIterator get( iter_type b, iter_type e, @@ -185,101 +277,113 @@ namespace boost switch (fmt) { -// case 'a': -// case 'A': -// that_.get_weekdayname(tm->tm_wday, b, e, err, ct); -// break; -// case 'b': -// case 'B': -// case 'h': -// that_.get_monthname(tm->tm_mon, b, e, err, ct); -// break; + case 'a': + case 'A': + { + std::tm tm2; + std::memset(&tm2, 0, sizeof(std::tm)); + that_.get_weekday(b, e, iob, err, &tm2); + //tm->tm_wday = tm2.tm_wday; + } + break; + case 'b': + case 'B': + case 'h': + { + std::tm tm2; + std::memset(&tm2, 0, sizeof(std::tm)); + that_.get_monthname(b, e, iob, err, &tm2); + //tm->tm_mon = tm2.tm_mon; + } + break; // case 'c': -// { -// const string_type& fm = this->c(); -// b = that_.get(b, e, iob, err, tm, fm.data(), fm.data() + fm.size()); -// } -// break; +// { +// const string_type& fm = c(); +// b = get(b, e, iob, err, tm, fm.data(), fm.data() + fm.size()); +// } +// break; case 'd': case 'e': get_day(tm->tm_mday, b, e, err, ct); - - break; -// case 'D': -// { -// const char_type fm[] = {'%', 'm', '/', '%', 'd', '/', '%', 'y'}; -// b = that_.get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); -// } -// break; -// case 'F': -// { -// const char_type fm[] = {'%', 'Y', '-', '%', 'm', '-', '%', 'd'}; -// b = that_.get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); -// } -// break; + break; + case 'D': + { + const char_type fm[] = {'%', 'm', '/', '%', 'd', '/', '%', 'y'}; + b = get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); + } + break; + case 'F': + { + const char_type fm[] = {'%', 'Y', '-', '%', 'm', '-', '%', 'd'}; + b = get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); + } + break; case 'H': get_hour(tm->tm_hour, b, e, err, ct); - break; -// case 'I': -// that_.get_12_hour(tm->tm_hour, b, e, err, ct); -// break; -// case 'j': -// that_.get_day_year_num(tm->tm_yday, b, e, err, ct); -// break; + break; + case 'I': + get_12_hour(tm->tm_hour, b, e, err, ct); + break; + case 'j': + get_day_year_num(tm->tm_yday, b, e, err, ct); + break; case 'm': get_month(tm->tm_mon, b, e, err, ct); - break; + break; case 'M': get_minute(tm->tm_min, b, e, err, ct); - break; -// case 'n': -// case 't': -// that_.get_white_space(b, e, err, ct); -// break; + break; + case 'n': + case 't': + get_white_space(b, e, err, ct); + break; // case 'p': -// that_.get_am_pm(tm->tm_hour, b, e, err, ct); -// break; -// case 'r': -// { -// const char_type fm[] = {'%', 'I', ':', '%', 'M', ':', '%', 'S', ' ', '%', 'p'}; -// b = that_.get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); -// } -// break; -// case 'R': -// { -// const char_type fm[] = {'%', 'H', ':', '%', 'M'}; -// b = that_.get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); -// } -// break; -// case 'S': -// that_.get_second(tm->tm_sec, b, e, err, ct); -// break; -// case 'T': -// { -// const char_type fm[] = {'%', 'H', ':', '%', 'M', ':', '%', 'S'}; -// b = that_.get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); -// } -// break; -// case 'w': -// that_.get_weekday(tm->tm_wday, b, e, err, ct); -// break; -// case 'x': -// return that_.get_date(b, e, iob, err, tm); +// get_am_pm(tm->tm_hour, b, e, err, ct); +// break; + case 'r': + { + const char_type fm[] = {'%', 'I', ':', '%', 'M', ':', '%', 'S', ' ', '%', 'p'}; + b = get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); + } + break; + case 'R': + { + const char_type fm[] = {'%', 'H', ':', '%', 'M'}; + b = get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); + } + break; + case 'S': + get_second(tm->tm_sec, b, e, err, ct); + break; + case 'T': + { + const char_type fm[] = {'%', 'H', ':', '%', 'M', ':', '%', 'S'}; + b = get(b, e, iob, err, tm, fm, fm + sizeof(fm)/sizeof(fm[0])); + } + break; + case 'w': + { + get_weekday(tm->tm_wday, b, e, err, ct); + } + break; + case 'x': + return that_.get_date(b, e, iob, err, tm); // case 'X': -// { -// const string_type& fm = this->X(); +// return that_.get_time(b, e, iob, err, tm); +// { +// const string_type& fm = X(); // b = that_.get(b, e, iob, err, tm, fm.data(), fm.data() + fm.size()); -// } -// break; +// } +// break; // case 'y': -// that_.get_year(tm->tm_year, b, e, err, ct); +// get_year(tm->tm_year, b, e, err, ct); break; case 'Y': get_year4(tm->tm_year, b, e, err, ct); - break; -// case '%': -// that_.get_percent(b, e, err, ct); -// break; + break; + case '%': + get_percent(b, e, err, ct); + break; default: err |= std::ios_base::failbit; } @@ -638,6 +742,8 @@ namespace boost namespace detail { +//#if BOOST_CHRONO_INTERNAL_TIMEGM + inline int32_t is_leap(int32_t year) { if(year % 400 == 0) @@ -665,6 +771,7 @@ namespace boost { 0,31,59,90,120,151,181,212,243,273,304,334}, { 0,31,60,91,121,152,182,213,244,274,305,335} }; + return days[is_leap(year)][month-1] + day - 1; } @@ -686,13 +793,14 @@ namespace boost month++; int day = t->tm_mday; int day_of_year = days_from_1jan(year,month,day); - int days_since_epoch = days_from_1970(year) + day_of_year; + int days_since_epoch = days_from_1970(year) + day_of_year ; time_t seconds_in_day = 3600 * 24; time_t result = seconds_in_day * days_since_epoch + 3600 * t->tm_hour + 60 * t->tm_min + t->tm_sec; return result; } +//#endif /** * from_ymd could be made more efficient by using a table @@ -708,11 +816,36 @@ namespace boost return y * 365 + y / 4 - y / 100 + y / 400; } + // Returns year/month/day triple in civil calendar + // Preconditions: z is number of days since 1970-01-01 and is in the range: + // [numeric_limits::min(), numeric_limits::max()-719468]. + template + //constexpr + void + inline civil_from_days(Int z, Int& y, unsigned& m, unsigned& d) BOOST_NOEXCEPT + { + BOOST_STATIC_ASSERT_MSG(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + BOOST_STATIC_ASSERT_MSG(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + z += 719468; + const Int era = (z >= 0 ? z : z - 146096) / 146097; + const unsigned doe = static_cast(z - era * 146097); // [0, 146096] + const unsigned yoe = (doe - doe/1460 + doe/36524 - doe/146096) / 365; // [0, 399] + y = static_cast(yoe) + era * 400; + const unsigned doy = doe - (365*yoe + yoe/4 - yoe/100); // [0, 365] + const unsigned mp = (5*doy + 2)/153; // [0, 11] + d = doy - (153*mp+2)/5 + 1; // [1, 31] + m = mp + (mp < 10 ? 3 : -9); // [1, 12] + y += (m <= 2); + --m; + } inline std::tm * internal_gmtime(std::time_t const* t, std::tm *tm) { if (t==0) return 0; if (tm==0) return 0; +#if 0 static const unsigned char day_of_year_month[2][366] = { @@ -727,6 +860,7 @@ namespace boost { -1, 30, 58, 89, 119, 150, 180, 211, 242, 272, 303, 333, 364 }, { -1, 30, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 } }; +#endif const time_t seconds_in_day = 3600 * 24; int32_t days_since_epoch = static_cast(*t / seconds_in_day); @@ -736,6 +870,7 @@ namespace boost hms = seconds_in_day+hms; } +#if 0 int32_t x = days_since_epoch; int32_t y = static_cast (static_cast (x + 2) * 400 / 146097); @@ -750,16 +885,23 @@ namespace boost //y -= 32767 + 2; y += 70; tm->tm_year=y; - const bool leap = is_leap(y); + const int32_t leap = is_leap(y); tm->tm_mon = day_of_year_month[leap][doy]-1; - tm->tm_mday = doy - days_in_year_before[leap][day_of_year_month[leap][doy] - 1]; - + tm->tm_mday = doy - days_in_year_before[leap][tm->tm_mon] ; +#else + int32_t y; + unsigned m, d; + civil_from_days(days_since_epoch, y, m, d); + tm->tm_year=y-1900; tm->tm_mon=m; tm->tm_mday=d; +#endif tm->tm_hour = hms / 3600; const int ms = hms % 3600; tm->tm_min = ms / 60; tm->tm_sec = ms % 60; + tm->tm_isdst = -1; + (void)mktime(tm); return tm; } @@ -788,6 +930,7 @@ namespace boost std::locale loc = os.getloc(); time_t t = system_clock::to_time_t(time_point_cast(tp)); std::tm tm; + std::memset(&tm, 0, sizeof(std::tm)); if (tz == timezone::local) { #if defined BOOST_WINDOWS && ! defined(__CYGWIN__) @@ -813,6 +956,9 @@ namespace boost tm = *tmp; #else if (gmtime_r(&t, &tm) == 0) failed = true; + tm.tm_isdst = -1; + (void)mktime(&tm); + #endif } @@ -828,7 +974,7 @@ namespace boost failed = tpf.put(os, os, os.fill(), &tm, pb, pe).failed(); if (!failed) { - duration d = tp - system_clock::from_time_t(t) + seconds(tm.tm_sec); + duration d = tp - system_clock::from_time_t(t) + seconds(tm.tm_sec); if (d.count() < 10) os << CharT('0'); //if (! os.good()) { // throw "exception"; @@ -838,6 +984,7 @@ namespace boost //if (! os.good()) { //throw "exception"; //} + os.precision(9); os << d.count(); //if (! os.good()) { //throw "exception"; @@ -964,6 +1111,8 @@ namespace boost const std::time_get& tg = std::use_facet >(loc); const std::ctype& ct = std::use_facet >(loc); tm tm; // {0} + std::memset(&tm, 0, sizeof(std::tm)); + typedef std::istreambuf_iterator It; if (pb == pe) { @@ -971,7 +1120,7 @@ namespace boost { '%', 'Y', '-', '%', 'm', '-', '%', 'd', ' ', '%', 'H', ':', '%', 'M', ':' }; pb = pattern; pe = pb + sizeof (pattern) / sizeof(CharT); - tm.tm_sec=0; + #if defined BOOST_CHRONO_USES_INTERNAL_TIME_GET const detail::time_get& dtg(tg); dtg.get(is, 0, is, err, &tm, pb, pe); @@ -979,9 +1128,13 @@ namespace boost tg.get(is, 0, is, err, &tm, pb, pe); #endif if (err & std::ios_base::failbit) goto exit; - double sec; + fractional_seconds sec; CharT c = CharT(); + std::ios::fmtflags flgs = is.flags(); + is.setf(std::ios::fixed, std::ios::floatfield); + is.precision(9); is >> sec; + is.flags(flgs); if (is.fail()) { err |= std::ios_base::failbit; @@ -999,13 +1152,14 @@ namespace boost if (err & std::ios_base::failbit) goto exit; time_t t; + #if BOOST_CHRONO_INTERNAL_TIMEGM t = detail::internal_timegm(&tm); #else t = timegm(&tm); #endif tp = time_point_cast( - system_clock::from_time_t(t) - min + round (duration (sec)) + system_clock::from_time_t(t) - min + round (duration (sec)) ); } else diff --git a/3party/boost/boost/chrono/io/time_point_units.hpp b/3party/boost/boost/chrono/io/time_point_units.hpp index 24284a76dc..378c112603 100644 --- a/3party/boost/boost/chrono/io/time_point_units.hpp +++ b/3party/boost/boost/chrono/io/time_point_units.hpp @@ -1,5 +1,6 @@ // (C) Copyright Howard Hinnant // (C) Copyright 2011 Vicente J. Botet Escriba +// Copyright (c) Microsoft Corporation 2014 // Use, modification and distribution are subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt). @@ -104,6 +105,7 @@ namespace boost * @return The epoch string associated to the @c process_real_cpu_clock. */ virtual string_type do_get_epoch(process_real_cpu_clock) const=0; +#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP /** * * @param c a dummy instance of @c process_user_cpu_clock. @@ -123,6 +125,7 @@ namespace boost */ virtual string_type do_get_epoch(process_cpu_clock) const=0; #endif +#endif #if defined(BOOST_CHRONO_HAS_THREAD_CLOCK) /** * @@ -197,6 +200,7 @@ namespace boost { return clock_string::since(); } +#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP /** * @param c a dummy instance of @c process_user_cpu_clock. * @return The epoch string returned by @c clock_string::since(). @@ -222,6 +226,7 @@ namespace boost return clock_string::since(); } +#endif #endif #if defined(BOOST_CHRONO_HAS_THREAD_CLOCK) /** diff --git a/3party/boost/boost/chrono/io/utility/ios_base_state_ptr.hpp b/3party/boost/boost/chrono/io/utility/ios_base_state_ptr.hpp index 865b98724e..f7dfdddca0 100644 --- a/3party/boost/boost/chrono/io/utility/ios_base_state_ptr.hpp +++ b/3party/boost/boost/chrono/io/utility/ios_base_state_ptr.hpp @@ -81,6 +81,7 @@ namespace boost explicit ios_state_ptr(std::ios_base& ios) : ios_(ios) { + } /** * Nothing to do as xalloc index can not be removed. diff --git a/3party/boost/boost/chrono/io_v1/chrono_io.hpp b/3party/boost/boost/chrono/io_v1/chrono_io.hpp index daabd49222..1a7e832b5b 100644 --- a/3party/boost/boost/chrono/io_v1/chrono_io.hpp +++ b/3party/boost/boost/chrono/io_v1/chrono_io.hpp @@ -546,7 +546,7 @@ operator>>(std::basic_istream& is, duration& d) t /= den; //std::cerr << __FILE__ << "[" << __LINE__ << "]"<< std::endl; - if (t > 0) + if (t > duration_values::zero()) { //std::cerr << __FILE__ << "[" << __LINE__ << "]"<< std::endl; Rep pt = t; diff --git a/3party/boost/boost/chrono/process_cpu_clocks.hpp b/3party/boost/boost/chrono/process_cpu_clocks.hpp index 486950da40..248837506e 100644 --- a/3party/boost/boost/chrono/process_cpu_clocks.hpp +++ b/3party/boost/boost/chrono/process_cpu_clocks.hpp @@ -1,6 +1,7 @@ // boost/chrono/process_cpu_clocks.hpp -----------------------------------------------------------// // Copyright 2009-2011 Vicente J. Botet Escriba +// Copyright (c) Microsoft Corporation 2014 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt @@ -43,6 +44,7 @@ namespace boost { namespace chrono { #endif }; +#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP class BOOST_CHRONO_DECL process_user_cpu_clock { public: typedef nanoseconds duration; @@ -70,6 +72,7 @@ namespace boost { namespace chrono { static BOOST_CHRONO_INLINE time_point now(system::error_code & ec ); #endif }; +#endif template struct process_times @@ -83,12 +86,15 @@ namespace boost { namespace chrono { : real(0) , user(0) , system(0){} + +#if ! defined BOOST_CHRONO_DONT_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0 template explicit process_times( Rep2 r) : real(r) , user(r) , system(r){} +#endif template explicit process_times( process_times const& rhs) @@ -107,10 +113,12 @@ namespace boost { namespace chrono { rep user; // user cpu time rep system; // system cpu time +#if ! defined BOOST_CHRONO_DONT_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0 operator rep() const { return real; } +#endif template bool operator==(process_times const& rhs) { return (real==rhs.real && @@ -180,7 +188,7 @@ namespace boost { namespace chrono { } template - void read(std::basic_istream& is) const + void read(std::basic_istream& is) { typedef std::istreambuf_iterator in_iterator; in_iterator i(is); @@ -292,6 +300,7 @@ namespace chrono typedef process_times process_cpu_clock_times; +#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP class BOOST_CHRONO_DECL process_cpu_clock { public: @@ -308,6 +317,7 @@ namespace chrono static BOOST_CHRONO_INLINE time_point now(system::error_code & ec ); #endif }; +#endif template std::basic_ostream& @@ -321,7 +331,7 @@ namespace chrono template std::basic_istream& operator>>(std::basic_istream& is, - process_times const& rhs) + process_times& rhs) { rhs.read(is); return is; @@ -372,6 +382,7 @@ namespace chrono } }; +#if ! BOOST_OS_WINDOWS || BOOST_PLAT_WINDOWS_DESKTOP template struct clock_string { @@ -436,6 +447,7 @@ namespace chrono return str; } }; +#endif } // namespace chrono } // namespace boost diff --git a/3party/boost/boost/chrono/round.hpp b/3party/boost/boost/chrono/round.hpp index 3d0619e681..09741fcf09 100644 --- a/3party/boost/boost/chrono/round.hpp +++ b/3party/boost/boost/chrono/round.hpp @@ -26,18 +26,22 @@ namespace boost template To round(const duration& d) { + typedef typename common_type >::type result_type; + result_type diff0; + result_type diff1; + To t0 = duration_cast(d); To t1 = t0; - ++t1; -#if 0 - // Avoid the user of BOOST_AUTO to make the library portable to Sun, PGI, .. - BOOST_AUTO(diff0, d - t0); - BOOST_AUTO(diff1, t1 - d); -#else - typedef typename common_type >::type result_type; - result_type diff0 = d - t0; - result_type diff1 = t1 - d; -#endif + if (t0>d) { + --t1; + diff0 = t0 - d; + diff1 = d - t1; + } else { + ++t1; + diff0 = d - t0; + diff1 = t1 - d; + } + if (diff0 == diff1) { if (t0.count() & 1) diff --git a/3party/boost/boost/circular_buffer.hpp b/3party/boost/boost/circular_buffer.hpp index 13cc94fef7..f5eff60f08 100644 --- a/3party/boost/boost/circular_buffer.hpp +++ b/3party/boost/boost/circular_buffer.hpp @@ -11,12 +11,13 @@ #if !defined(BOOST_CIRCULAR_BUFFER_HPP) #define BOOST_CIRCULAR_BUFFER_HPP -#if defined(_MSC_VER) && _MSC_VER >= 1200 +#if defined(_MSC_VER) #pragma once #endif #include #include +#include // BOOST_CB_ENABLE_DEBUG: Debug support control. #if defined(NDEBUG) || defined(BOOST_CB_DISABLE_DEBUG) @@ -33,29 +34,20 @@ #define BOOST_CB_ASSERT(Expr) ((void)0) #endif -// BOOST_CB_STATIC_ASSERT: Compile time assertion. -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - #define BOOST_CB_STATIC_ASSERT(Expr) ((void)0) -#else - #include - #define BOOST_CB_STATIC_ASSERT(Expr) BOOST_STATIC_ASSERT(Expr) -#endif - // BOOST_CB_IS_CONVERTIBLE: Check if Iterator::value_type is convertible to Type. -#if BOOST_WORKAROUND(__BORLANDC__, <= 0x0550) || BOOST_WORKAROUND(__MWERKS__, <= 0x2407) || \ - BOOST_WORKAROUND(BOOST_MSVC, < 1300) +#if BOOST_WORKAROUND(__BORLANDC__, <= 0x0550) || BOOST_WORKAROUND(__MWERKS__, <= 0x2407) #define BOOST_CB_IS_CONVERTIBLE(Iterator, Type) ((void)0) #else #include #include #define BOOST_CB_IS_CONVERTIBLE(Iterator, Type) \ - BOOST_CB_STATIC_ASSERT((is_convertible::value_type, Type>::value)) + BOOST_STATIC_ASSERT((is_convertible::value_type, Type>::value)) #endif // BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS: // Check if the STL provides templated iterator constructors for its containers. #if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) - #define BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS BOOST_CB_STATIC_ASSERT(false); + #define BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS BOOST_STATIC_ASSERT(false); #else #define BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS ((void)0); #endif @@ -67,7 +59,6 @@ #undef BOOST_CB_ASSERT_TEMPLATED_ITERATOR_CONSTRUCTORS #undef BOOST_CB_IS_CONVERTIBLE -#undef BOOST_CB_STATIC_ASSERT #undef BOOST_CB_ASSERT #undef BOOST_CB_ENABLE_DEBUG diff --git a/3party/boost/boost/circular_buffer/base.hpp b/3party/boost/boost/circular_buffer/base.hpp index 4893cb2043..13c5d4b972 100644 --- a/3party/boost/boost/circular_buffer/base.hpp +++ b/3party/boost/boost/circular_buffer/base.hpp @@ -1,6 +1,9 @@ // Implementation of the base circular buffer. // Copyright (c) 2003-2008 Jan Gaspar +// Copyright (c) 2013 Paul A. Bristow // Doxygen comments changed. +// Copyright (c) 2013 Antony Polukhin // Move semantics implementation. +// Copyright (c) 2014 Glen Fernandes // C++11 allocator model support. // Use, modification, and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -9,55 +12,53 @@ #if !defined(BOOST_CIRCULAR_BUFFER_BASE_HPP) #define BOOST_CIRCULAR_BUFFER_BASE_HPP -#if defined(_MSC_VER) && _MSC_VER >= 1200 +#if defined(_MSC_VER) #pragma once #endif +#include #include #include #include +#include #include #include #include #include #include +#include +#include +#include +#include +#include +#include #include #include #include -#if !defined(BOOST_NO_EXCEPTIONS) - #include -#endif -#if BOOST_CB_ENABLE_DEBUG - #include -#endif +#include + #if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205)) #include #endif -#if defined(BOOST_NO_STDC_NAMESPACE) -namespace std { - using ::memset; -} -#endif - namespace boost { /*! \class circular_buffer \brief Circular buffer - a STL compliant container. - \param T The type of the elements stored in the circular_buffer. + \tparam T The type of the elements stored in the circular_buffer. \par Type Requirements T The T has to be - SGIAssignable (SGI STL defined combination of - Assignable and CopyConstructible). + SGIAssignable (SGI STL defined combination of + Assignable and CopyConstructible). Moreover T has to be DefaultConstructible if supplied as a default parameter when invoking some of the circular_buffer's methods e.g. insert(iterator pos, const value_type& item = %value_type()). And EqualityComparable and/or - LessThanComparable if the circular_buffer + LessThanComparable if the circular_buffer will be compared with another container. - \param Alloc The allocator type used for all internal memory management. + \tparam Alloc The allocator type used for all internal memory management. \par Type Requirements Alloc The Alloc has to meet the allocator requirements imposed by STL. \par Default Alloc @@ -75,38 +76,50 @@ class circular_buffer /*! \endcond */ { -// Requirements - BOOST_CLASS_REQUIRE(T, boost, SGIAssignableConcept); + // Requirements + //BOOST_CLASS_REQUIRE(T, boost, SGIAssignableConcept); + + + //BOOST_CONCEPT_ASSERT((Assignable)); + //BOOST_CONCEPT_ASSERT((CopyConstructible)); + //BOOST_CONCEPT_ASSERT((DefaultConstructible)); + + // Required if the circular_buffer will be compared with anther container. + //BOOST_CONCEPT_ASSERT((EqualityComparable)); + //BOOST_CONCEPT_ASSERT((LessThanComparable)); public: // Basic types + + //! The type of this circular_buffer. + typedef circular_buffer this_type; //! The type of elements stored in the circular_buffer. - typedef typename Alloc::value_type value_type; + typedef typename boost::container::allocator_traits::value_type value_type; //! A pointer to an element. - typedef typename Alloc::pointer pointer; + typedef typename boost::container::allocator_traits::pointer pointer; //! A const pointer to the element. - typedef typename Alloc::const_pointer const_pointer; + typedef typename boost::container::allocator_traits::const_pointer const_pointer; //! A reference to an element. - typedef typename Alloc::reference reference; + typedef typename boost::container::allocator_traits::reference reference; //! A const reference to an element. - typedef typename Alloc::const_reference const_reference; + typedef typename boost::container::allocator_traits::const_reference const_reference; //! The distance type. /*! (A signed integral type used to represent the distance between two iterators.) */ - typedef typename Alloc::difference_type difference_type; + typedef typename boost::container::allocator_traits::difference_type difference_type; //! The size type. /*! (An unsigned integral type that can represent any non-negative value of the container's distance type.) */ - typedef typename Alloc::size_type size_type; + typedef typename boost::container::allocator_traits::size_type size_type; //! The type of an allocator used in the circular_buffer. typedef Alloc allocator_type; @@ -114,10 +127,10 @@ public: // Iterators //! A const (random access) iterator used to iterate through the circular_buffer. - typedef cb_details::iterator< circular_buffer, cb_details::const_traits > const_iterator; + typedef cb_details::iterator< circular_buffer, cb_details::const_traits > > const_iterator; //! A (random access) iterator used to iterate through the circular_buffer. - typedef cb_details::iterator< circular_buffer, cb_details::nonconst_traits > iterator; + typedef cb_details::iterator< circular_buffer, cb_details::nonconst_traits > > iterator; //! A const iterator used to iterate backwards through a circular_buffer. typedef boost::reverse_iterator const_reverse_iterator; @@ -145,20 +158,40 @@ public: //! The capacity type. /*! - (Same as size_type - defined for consistency with the - circular_buffer_space_optimized.) + (Same as size_type - defined for consistency with the __cbso class. + */ + // circular_buffer_space_optimized.) + typedef size_type capacity_type; // Helper types - // A type representing the "best" way to pass the value_type to a method. - typedef typename call_traits::param_type param_value_type; + //! A type representing the "best" way to pass the value_type to a method. + typedef const value_type& param_value_type; - // A type representing the "best" way to return the value_type from a const method. - typedef typename call_traits::param_type return_value_type; + //! A type representing rvalue from param type. + //! On compilers without rvalue references support this type is the Boost.Moves type used for emulation. + typedef BOOST_RV_REF(value_type) rvalue_type; private: + + // TODO: move to Boost.Move + /*! \cond */ + template + static inline typename boost::conditional< + ((boost::is_nothrow_move_constructible::value && boost::is_nothrow_move_assignable::value) || !boost::is_copy_constructible::value) +#if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + && has_move_emulation_enabled::value +#endif + , + rvalue_type, + param_value_type + >::type move_if_noexcept(ValT& value) BOOST_NOEXCEPT { + return boost::move(value); + } + /*! \endcond */ + // Member variables //! The internal buffer used for storing elements in the circular buffer. @@ -202,7 +235,7 @@ public: Constant (in the size of the circular_buffer). \sa get_allocator() for obtaining an allocator %reference. */ - allocator_type get_allocator() const { return m_alloc; } + allocator_type get_allocator() const BOOST_NOEXCEPT { return m_alloc; } //! Get the allocator reference. /*! @@ -218,7 +251,7 @@ public: although use of stateful allocators in STL is discouraged. \sa get_allocator() const */ - allocator_type& get_allocator() { return m_alloc; } + allocator_type& get_allocator() BOOST_NOEXCEPT { return m_alloc; } // Element access @@ -236,7 +269,7 @@ public: Constant (in the size of the circular_buffer). \sa end(), rbegin(), rend() */ - iterator begin() { return iterator(this, empty() ? 0 : m_first); } + iterator begin() BOOST_NOEXCEPT { return iterator(this, empty() ? 0 : m_first); } //! Get the iterator pointing to the end of the circular_buffer. /*! @@ -252,7 +285,7 @@ public: Constant (in the size of the circular_buffer). \sa begin(), rbegin(), rend() */ - iterator end() { return iterator(this, 0); } + iterator end() BOOST_NOEXCEPT { return iterator(this, 0); } //! Get the const iterator pointing to the beginning of the circular_buffer. /*! @@ -268,7 +301,7 @@ public: Constant (in the size of the circular_buffer). \sa end() const, rbegin() const, rend() const */ - const_iterator begin() const { return const_iterator(this, empty() ? 0 : m_first); } + const_iterator begin() const BOOST_NOEXCEPT { return const_iterator(this, empty() ? 0 : m_first); } //! Get the const iterator pointing to the end of the circular_buffer. /*! @@ -284,7 +317,7 @@ public: Constant (in the size of the circular_buffer). \sa begin() const, rbegin() const, rend() const */ - const_iterator end() const { return const_iterator(this, 0); } + const_iterator end() const BOOST_NOEXCEPT { return const_iterator(this, 0); } //! Get the iterator pointing to the beginning of the "reversed" circular_buffer. /*! @@ -300,7 +333,7 @@ public: Constant (in the size of the circular_buffer). \sa rend(), begin(), end() */ - reverse_iterator rbegin() { return reverse_iterator(end()); } + reverse_iterator rbegin() BOOST_NOEXCEPT { return reverse_iterator(end()); } //! Get the iterator pointing to the end of the "reversed" circular_buffer. /*! @@ -316,7 +349,7 @@ public: Constant (in the size of the circular_buffer). \sa rbegin(), begin(), end() */ - reverse_iterator rend() { return reverse_iterator(begin()); } + reverse_iterator rend() BOOST_NOEXCEPT { return reverse_iterator(begin()); } //! Get the const iterator pointing to the beginning of the "reversed" circular_buffer. /*! @@ -332,7 +365,7 @@ public: Constant (in the size of the circular_buffer). \sa rend() const, begin() const, end() const */ - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } + const_reverse_iterator rbegin() const BOOST_NOEXCEPT { return const_reverse_iterator(end()); } //! Get the const iterator pointing to the end of the "reversed" circular_buffer. /*! @@ -348,7 +381,7 @@ public: Constant (in the size of the circular_buffer). \sa rbegin() const, begin() const, end() const */ - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } + const_reverse_iterator rend() const BOOST_NOEXCEPT { return const_reverse_iterator(begin()); } //! Get the element at the index position. /*! @@ -383,7 +416,7 @@ public: Constant (in the size of the circular_buffer). \sa \link at(size_type)const at() const \endlink */ - return_value_type operator [] (size_type index) const { + const_reference operator [] (size_type index) const { BOOST_CB_ASSERT(index < size()); // check for invalid index return *add(m_first, index); } @@ -421,7 +454,7 @@ public: Constant (in the size of the circular_buffer). \sa \link operator[](size_type)const operator[] const \endlink */ - return_value_type at(size_type index) const { + const_reference at(size_type index) const { check_position(index); return (*this)[index]; } @@ -475,7 +508,7 @@ public: Constant (in the size of the circular_buffer). \sa back() const */ - return_value_type front() const { + const_reference front() const { BOOST_CB_ASSERT(!empty()); // check for empty buffer (front element not available) return *m_first; } @@ -493,7 +526,7 @@ public: Constant (in the size of the circular_buffer). \sa front() const */ - return_value_type back() const { + const_reference back() const { BOOST_CB_ASSERT(!empty()); // check for empty buffer (back element not available) return *((m_last == m_buff ? m_end : m_last) - 1); } @@ -508,8 +541,9 @@ public: The internal representation is often not linear and the state of the internal buffer may look like this:

|e|f|g| | | |a|b|c|d|
- end ---^
- begin -------^


+ end ___^
+ begin _______^

+ where |a|b|c|d| represents the "array one", |e|f|g| represents the "array two" and | | | | is a free space.
Now consider a typical C style function for writing data into a file:

@@ -612,8 +646,7 @@ public: This method can be useful when passing the stored data into a legacy C API as an array. \post \&(*this)[0] \< \&(*this)[1] \< ... \< \&(*this)[size() - 1] \return A pointer to the beginning of the array or 0 if empty. - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + \throws Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operations in the Throws section do not throw anything. \par Iterator Invalidation @@ -649,12 +682,12 @@ public: break; } if (is_uninitialized(dest)) { - m_alloc.construct(dest, *src); + boost::container::allocator_traits::construct(m_alloc, boost::addressof(*dest), this_type::move_if_noexcept(*src)); ++constructed; } else { - value_type tmp = *src; - replace(src, *dest); - replace(dest, tmp); + value_type tmp = this_type::move_if_noexcept(*src); + replace(src, this_type::move_if_noexcept(*dest)); + replace(dest, boost::move(tmp)); } } } @@ -689,7 +722,7 @@ public: Constant (in the size of the circular_buffer). \sa linearize(), array_one(), array_two() */ - bool is_linearized() const { return m_first < m_last || m_last == m_buff; } + bool is_linearized() const BOOST_NOEXCEPT { return m_first < m_last || m_last == m_buff; } //! Rotate elements in the circular_buffer. /*! @@ -705,8 +738,7 @@ public: val_0 == (*this)[0] \&\& val_1 == (*this)[1] \&\& ... \&\& val_m == (*this)[m - 1] \&\& val_r1 == (*this)[m + n - 1] \&\& val_r2 == (*this)[m + n - 2] \&\& ... \&\& val_rn == (*this)[m] \param new_begin The new beginning. - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + \throws See Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the circular_buffer is full or new_begin points to begin() or if the operations in the Throws section do not throw anything. @@ -729,12 +761,12 @@ public: difference_type n = new_begin - begin(); if (m < n) { for (; m > 0; --m) { - push_front(back()); + push_front(this_type::move_if_noexcept(back())); pop_back(); } } else { for (; n > 0; --n) { - push_back(front()); + push_back(this_type::move_if_noexcept(front())); pop_front(); } } @@ -756,7 +788,7 @@ public: \sa capacity(), max_size(), reserve(), \link resize() resize(size_type, const_reference)\endlink */ - size_type size() const { return m_size; } + size_type size() const BOOST_NOEXCEPT { return m_size; } /*! \brief Get the largest possible size or capacity of the circular_buffer. (It depends on allocator's %max_size()). @@ -770,8 +802,8 @@ public: Constant (in the size of the circular_buffer). \sa size(), capacity(), reserve() */ - size_type max_size() const { - return (std::min)(m_alloc.max_size(), (std::numeric_limits::max)()); + size_type max_size() const BOOST_NOEXCEPT { + return (std::min)(boost::container::allocator_traits::max_size(m_alloc), (std::numeric_limits::max)()); } //! Is the circular_buffer empty? @@ -787,7 +819,7 @@ public: Constant (in the size of the circular_buffer). \sa full() */ - bool empty() const { return size() == 0; } + bool empty() const BOOST_NOEXCEPT { return size() == 0; } //! Is the circular_buffer full? /*! @@ -802,7 +834,7 @@ public: Constant (in the size of the circular_buffer). \sa empty() */ - bool full() const { return capacity() == size(); } + bool full() const BOOST_NOEXCEPT { return capacity() == size(); } /*! \brief Get the maximum number of elements which can be inserted into the circular_buffer without overwriting any of already stored elements. @@ -816,7 +848,7 @@ public: Constant (in the size of the circular_buffer). \sa capacity(), size(), max_size() */ - size_type reserve() const { return capacity() - size(); } + size_type reserve() const BOOST_NOEXCEPT { return capacity() - size(); } //! Get the capacity of the circular_buffer. /*! @@ -831,18 +863,20 @@ public: \sa reserve(), size(), max_size(), set_capacity(capacity_type) */ - capacity_type capacity() const { return m_end - m_buff; } + capacity_type capacity() const BOOST_NOEXCEPT { return m_end - m_buff; } //! Change the capacity of the circular_buffer. - /*! + /*! + \pre If T is a move only type, then compiler shall support noexcept modifiers + and move constructor of T must be marked with it (must not throw exceptions). \post capacity() == new_capacity \&\& size() \<= new_capacity

If the current number of elements stored in the circular_buffer is greater than the desired new capacity then number of [size() - new_capacity] last elements will be removed and the new size will be equal to new_capacity. \param new_capacity The new capacity. - \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + \throws "An allocation error" if memory is exhausted, (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. \par Exception Safety Strong. \par Iterator Invalidation @@ -860,7 +894,7 @@ public: iterator b = begin(); BOOST_TRY { reset(buff, - cb_details::uninitialized_copy_with_alloc(b, b + (std::min)(new_capacity, size()), buff, m_alloc), + cb_details::uninitialized_move_if_noexcept(b, b + (std::min)(new_capacity, size()), buff, m_alloc), new_capacity); } BOOST_CATCH(...) { deallocate(buff, new_capacity); @@ -883,7 +917,7 @@ public: size. (See the Effect.) \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. \par Exception Safety Basic. \par Iterator Invalidation @@ -908,7 +942,9 @@ public: } //! Change the capacity of the circular_buffer. - /*! + /*! + \pre If T is a move only type, then compiler shall support noexcept modifiers + and move constructor of T must be marked with it (must not throw exceptions). \post capacity() == new_capacity \&\& size() \<= new_capacity

If the current number of elements stored in the circular_buffer is greater than the desired new capacity then number of [size() - new_capacity] first elements will be removed @@ -916,7 +952,7 @@ public: \param new_capacity The new capacity. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. \par Exception Safety Strong. \par Iterator Invalidation @@ -933,7 +969,7 @@ public: pointer buff = allocate(new_capacity); iterator e = end(); BOOST_TRY { - reset(buff, cb_details::uninitialized_copy_with_alloc(e - (std::min)(new_capacity, size()), + reset(buff, cb_details::uninitialized_move_if_noexcept(e - (std::min)(new_capacity, size()), e, buff, m_alloc), new_capacity); } BOOST_CATCH(...) { deallocate(buff, new_capacity); @@ -956,7 +992,7 @@ public: size. (See the Effect.) \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. \par Exception Safety Basic. \par Iterator Invalidation @@ -985,8 +1021,7 @@ public: /*! \post capacity() == 0 \&\& size() == 0 \param alloc The allocator. - \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is - used). + \throws Nothing. \par Complexity Constant. \warning Since Boost version 1.36 the behaviour of this constructor has changed. Now the constructor does not @@ -1000,7 +1035,7 @@ public: \sa circular_buffer(capacity_type, const allocator_type& alloc), set_capacity(capacity_type) */ - explicit circular_buffer(const allocator_type& alloc = allocator_type()) + explicit circular_buffer(const allocator_type& alloc = allocator_type()) BOOST_NOEXCEPT : m_buff(0), m_end(0), m_first(0), m_last(0), m_size(0), m_alloc(alloc) {} //! Create an empty circular_buffer with the specified capacity. @@ -1028,7 +1063,7 @@ public: \param alloc The allocator. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Complexity Linear (in the n). */ @@ -1049,7 +1084,7 @@ public: \param alloc The allocator. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Complexity Linear (in the n). */ @@ -1069,7 +1104,7 @@ public: \param cb The circular_buffer to be copied. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Complexity Linear (in the size of cb). */ @@ -1082,7 +1117,7 @@ public: initialize_buffer(cb.capacity()); m_first = m_buff; BOOST_TRY { - m_last = cb_details::uninitialized_copy_with_alloc(cb.begin(), cb.end(), m_buff, m_alloc); + m_last = cb_details::uninitialized_copy(cb.begin(), cb.end(), m_buff, m_alloc); } BOOST_CATCH(...) { deallocate(m_buff, cb.capacity()); BOOST_RETHROW @@ -1091,24 +1126,21 @@ public: if (m_last == m_end) m_last = m_buff; } - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - - /*! \cond */ - template - circular_buffer(InputIterator first, InputIterator last) - : m_alloc(allocator_type()) { - initialize(first, last, is_integral()); + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + //! The move constructor. + /*! \brief Move constructs a circular_buffer from cb, leaving cb empty. + \pre C++ compiler with rvalue references support. + \post cb.empty() + \param cb circular_buffer to 'steal' value from. + \throws Nothing. + \par Constant. + */ + circular_buffer(circular_buffer&& cb) BOOST_NOEXCEPT + : m_buff(0), m_end(0), m_first(0), m_last(0), m_size(0), m_alloc(cb.get_allocator()) { + cb.swap(*this); } - - template - circular_buffer(capacity_type capacity, InputIterator first, InputIterator last) - : m_alloc(allocator_type()) { - initialize(capacity, first, last, is_integral()); - } - /*! \endcond */ - -#else +#endif // BOOST_NO_CXX11_RVALUE_REFERENCES //! Create a full circular_buffer filled with a copy of the range. /*! @@ -1122,7 +1154,7 @@ public: \param alloc The allocator. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Complexity Linear (in the std::distance(first, last)). */ @@ -1149,7 +1181,7 @@ public: \param alloc The allocator. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Complexity Linear (in std::distance(first, last); in min[capacity, std::distance(first, last)] if the InputIterator is a @@ -1162,8 +1194,6 @@ public: initialize(buffer_capacity, first, last, is_integral()); } -#endif // #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - //! The destructor. /*! Destroys the circular_buffer. @@ -1175,7 +1205,7 @@ public: Constant (in the size of the circular_buffer) for scalar types; linear for other types. \sa clear() */ - ~circular_buffer() { + ~circular_buffer() BOOST_NOEXCEPT { destroy(); #if BOOST_CB_ENABLE_DEBUG invalidate_all_iterators(); @@ -1192,7 +1222,7 @@ public: \param cb The circular_buffer to be copied. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Strong. \par Iterator Invalidation @@ -1211,7 +1241,7 @@ public: return *this; pointer buff = allocate(cb.capacity()); BOOST_TRY { - reset(buff, cb_details::uninitialized_copy_with_alloc(cb.begin(), cb.end(), buff, m_alloc), cb.capacity()); + reset(buff, cb_details::uninitialized_copy(cb.begin(), cb.end(), buff, m_alloc), cb.capacity()); } BOOST_CATCH(...) { deallocate(buff, cb.capacity()); BOOST_RETHROW @@ -1220,6 +1250,23 @@ public: return *this; } +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + /*! \brief Move assigns content of cb to *this, leaving cb empty. + \pre C++ compiler with rvalue references support. + \post cb.empty() + \param cb circular_buffer to 'steal' value from. + \throws Nothing. + \par Complexity + Constant. + */ + circular_buffer& operator = (circular_buffer&& cb) BOOST_NOEXCEPT { + cb.swap(*this); // now `this` holds `cb` + circular_buffer(get_allocator()) // temprary that holds initial `cb` allocator + .swap(cb); // makes `cb` empty + return *this; + } +#endif // BOOST_NO_CXX11_RVALUE_REFERENCES + //! Assign n items into the circular_buffer. /*! The content of the circular_buffer will be removed and replaced with n copies of the @@ -1230,7 +1277,7 @@ public: \param item The element the circular_buffer will be filled with. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -1260,7 +1307,7 @@ public: \param item The element the circular_buffer will be filled with. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -1292,7 +1339,7 @@ public: \param last The end of the range to be copied. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -1329,7 +1376,7 @@ public: \param last The end of the range to be copied. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -1367,7 +1414,7 @@ public: Constant (in the size of the circular_buffer). \sa swap(circular_buffer&, circular_buffer&) */ - void swap(circular_buffer& cb) { + void swap(circular_buffer& cb) BOOST_NOEXCEPT { swap_allocator(cb, is_stateless()); std::swap(m_buff, cb.m_buff); std::swap(m_end, cb.m_end); @@ -1381,7 +1428,44 @@ public: } // push and pop +private: + template + void push_back_impl(ValT item) { + if (full()) { + if (empty()) + return; + replace(m_last, static_cast(item)); + increment(m_last); + m_first = m_last; + } else { + boost::container::allocator_traits::construct(m_alloc, boost::addressof(*m_last), static_cast(item)); + increment(m_last); + ++m_size; + } + } + template + void push_front_impl(ValT item) { + BOOST_TRY { + if (full()) { + if (empty()) + return; + decrement(m_first); + replace(m_first, static_cast(item)); + m_last = m_first; + } else { + decrement(m_first); + boost::container::allocator_traits::construct(m_alloc, boost::addressof(*m_first), static_cast(item)); + ++m_size; + } + } BOOST_CATCH(...) { + increment(m_first); + BOOST_RETHROW + } + BOOST_CATCH_END + } + +public: //! Insert a new element at the end of the circular_buffer. /*! \post if capacity() > 0 then back() == item
@@ -1389,7 +1473,7 @@ public: 0, nothing will be inserted. \param item The element to be inserted. \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws. \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. \par Iterator Invalidation @@ -1399,18 +1483,51 @@ public: \sa \link push_front() push_front(const_reference)\endlink, pop_back(), pop_front() */ - void push_back(param_value_type item = value_type()) { - if (full()) { - if (empty()) - return; - replace(m_last, item); - increment(m_last); - m_first = m_last; - } else { - m_alloc.construct(m_last, item); - increment(m_last); - ++m_size; - } + void push_back(param_value_type item) { + push_back_impl(item); + } + + //! Insert a new element at the end of the circular_buffer using rvalue references or rvalues references emulation. + /*! + \post if capacity() > 0 then back() == item
+ If the circular_buffer is full, the first element will be removed. If the capacity is + 0, nothing will be inserted. + \param item The element to be inserted. + \throws Whatever T::T(T&&) throws. + Whatever T::operator = (T&&) throws. + \par Exception Safety + Basic; no-throw if the operation in the Throws section does not throw anything. + \par Iterator Invalidation + Does not invalidate any iterators with the exception of iterators pointing to the overwritten element. + \par Complexity + Constant (in the size of the circular_buffer). + \sa \link push_front() push_front(const_reference)\endlink, + pop_back(), pop_front() + */ + void push_back(rvalue_type item) { + push_back_impl(boost::move(item)); + } + + //! Insert a new default-constructed element at the end of the circular_buffer. + /*! + \post if capacity() > 0 then back() == item
+ If the circular_buffer is full, the first element will be removed. If the capacity is + 0, nothing will be inserted. + \throws Whatever T::T() throws. + Whatever T::T(T&&) throws. + Whatever T::operator = (T&&) throws. + \par Exception Safety + Basic; no-throw if the operation in the Throws section does not throw anything. + \par Iterator Invalidation + Does not invalidate any iterators with the exception of iterators pointing to the overwritten element. + \par Complexity + Constant (in the size of the circular_buffer). + \sa \link push_front() push_front(const_reference)\endlink, + pop_back(), pop_front() + */ + void push_back() { + value_type temp; + push_back(boost::move(temp)); } //! Insert a new element at the beginning of the circular_buffer. @@ -1420,7 +1537,7 @@ public: 0, nothing will be inserted. \param item The element to be inserted. \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws. \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. \par Iterator Invalidation @@ -1430,24 +1547,51 @@ public: \sa \link push_back() push_back(const_reference)\endlink, pop_back(), pop_front() */ - void push_front(param_value_type item = value_type()) { - BOOST_TRY { - if (full()) { - if (empty()) - return; - decrement(m_first); - replace(m_first, item); - m_last = m_first; - } else { - decrement(m_first); - m_alloc.construct(m_first, item); - ++m_size; - } - } BOOST_CATCH(...) { - increment(m_first); - BOOST_RETHROW - } - BOOST_CATCH_END + void push_front(param_value_type item) { + push_front_impl(item); + } + + //! Insert a new element at the beginning of the circular_buffer using rvalue references or rvalues references emulation. + /*! + \post if capacity() > 0 then front() == item
+ If the circular_buffer is full, the last element will be removed. If the capacity is + 0, nothing will be inserted. + \param item The element to be inserted. + \throws Whatever T::T(T&&) throws. + Whatever T::operator = (T&&) throws. + \par Exception Safety + Basic; no-throw if the operation in the Throws section does not throw anything. + \par Iterator Invalidation + Does not invalidate any iterators with the exception of iterators pointing to the overwritten element. + \par Complexity + Constant (in the size of the circular_buffer). + \sa \link push_back() push_back(const_reference)\endlink, + pop_back(), pop_front() + */ + void push_front(rvalue_type item) { + push_front_impl(boost::move(item)); + } + + //! Insert a new default-constructed element at the beginning of the circular_buffer. + /*! + \post if capacity() > 0 then front() == item
+ If the circular_buffer is full, the last element will be removed. If the capacity is + 0, nothing will be inserted. + \throws Whatever T::T() throws. + Whatever T::T(T&&) throws. + Whatever T::operator = (T&&) throws. + \par Exception Safety + Basic; no-throw if the operation in the Throws section does not throw anything. + \par Iterator Invalidation + Does not invalidate any iterators with the exception of iterators pointing to the overwritten element. + \par Complexity + Constant (in the size of the circular_buffer). + \sa \link push_back() push_back(const_reference)\endlink, + pop_back(), pop_front() + */ + void push_front() { + value_type temp; + push_front(boost::move(temp)); } //! Remove the last element from the circular_buffer. @@ -1491,6 +1635,15 @@ public: increment(m_first); --m_size; } +private: + template + iterator insert_impl(iterator pos, ValT item) { + BOOST_CB_ASSERT(pos.is_valid(this)); // check for uninitialized or invalidated iterator + iterator b = begin(); + if (full() && pos == b) + return b; + return insert_item(pos, static_cast(item)); + } public: // Insert @@ -1507,7 +1660,9 @@ public: \return Iterator to the inserted element or begin() if the item is not inserted. (See the Effect.) \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws. + Exceptions of move_if_noexcept(T&). + \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. \par Iterator Invalidation @@ -1524,12 +1679,77 @@ public: rinsert(iterator, size_type, value_type)\endlink, rinsert(iterator, InputIterator, InputIterator) */ - iterator insert(iterator pos, param_value_type item = value_type()) { - BOOST_CB_ASSERT(pos.is_valid(this)); // check for uninitialized or invalidated iterator - iterator b = begin(); - if (full() && pos == b) - return b; - return insert_item(pos, item); + iterator insert(iterator pos, param_value_type item) { + return insert_impl(pos, item); + } + + //! Insert an element at the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer or its end. + \post The item will be inserted at the position pos.
+ If the circular_buffer is full, the first element will be overwritten. If the + circular_buffer is full and the pos points to begin(), then the + item will not be inserted. If the capacity is 0, nothing will be inserted. + \param pos An iterator specifying the position where the item will be inserted. + \param item The element to be inserted. + \return Iterator to the inserted element or begin() if the item is not inserted. (See + the Effect.) + \throws Whatever T::T(T&&) throws. + Whatever T::operator = (T&&) throws. + Exceptions of move_if_noexcept(T&). + \par Exception Safety + Basic; no-throw if the operation in the Throws section does not throw anything. + \par Iterator Invalidation + Invalidates iterators pointing to the elements at the insertion point (including pos) and + iterators behind the insertion point (towards the end; except iterators equal to end()). It + also invalidates iterators pointing to the overwritten element. + \par Complexity + Linear (in std::distance(pos, end())). + \sa \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator), + \link rinsert(iterator, param_value_type) rinsert(iterator, value_type)\endlink, + \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator) + */ + iterator insert(iterator pos, rvalue_type item) { + return insert_impl(pos, boost::move(item)); + } + + //! Insert a default-constructed element at the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer or its end. + \post The item will be inserted at the position pos.
+ If the circular_buffer is full, the first element will be overwritten. If the + circular_buffer is full and the pos points to begin(), then the + item will not be inserted. If the capacity is 0, nothing will be inserted. + \param pos An iterator specifying the position where the item will be inserted. + \return Iterator to the inserted element or begin() if the item is not inserted. (See + the Effect.) + \throws Whatever T::T() throws. + Whatever T::T(T&&) throws. + Whatever T::operator = (T&&) throws. + Exceptions of move_if_noexcept(T&). + \par Exception Safety + Basic; no-throw if the operation in the Throws section does not throw anything. + \par Iterator Invalidation + Invalidates iterators pointing to the elements at the insertion point (including pos) and + iterators behind the insertion point (towards the end; except iterators equal to end()). It + also invalidates iterators pointing to the overwritten element. + \par Complexity + Linear (in std::distance(pos, end())). + \sa \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator), + \link rinsert(iterator, param_value_type) rinsert(iterator, value_type)\endlink, + \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator) + */ + iterator insert(iterator pos) { + value_type temp; + return insert(pos, boost::move(temp)); } //! Insert n copies of the item at the specified position. @@ -1543,7 +1763,8 @@ public: \param n The number of items the to be inserted. \param item The element whose copies will be inserted. \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws. + Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operations in the Throws section do not throw anything. \par Iterator Invalidation @@ -1556,7 +1777,7 @@ public: Consider a circular_buffer with the capacity of 6 and the size of 4. Its internal buffer may look like the one below.

|1|2|3|4| | |
- p ---^

After inserting 5 elements at the position p:

+ p ___^

After inserting 5 elements at the position p:

insert(p, (size_t)5, 0);

actually only 4 elements get inserted and elements 1 and 2 are overwritten. This is due to the fact the insert operation preserves the capacity. After insertion the internal buffer looks like this:

|0|0|0|0|3|4|
@@ -1594,8 +1815,10 @@ public: \param pos An iterator specifying the position where the range will be inserted. \param first The beginning of the range to be inserted. \param last The end of the range to be inserted. - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + \throws Whatever T::T(const T&) throws if the InputIterator is not a move iterator. + Whatever T::operator = (const T&) throws if the InputIterator is not a move iterator. + Whatever T::T(T&&) throws if the InputIterator is a move iterator. + Whatever T::operator = (T&&) throws if the InputIterator is a move iterator. \par Exception Safety Basic; no-throw if the operations in the Throws section do not throw anything. \par Iterator Invalidation @@ -1611,7 +1834,7 @@ public: Consider a circular_buffer with the capacity of 6 and the size of 4. Its internal buffer may look like the one below.

|1|2|3|4| | |
- p ---^

After inserting a range of elements at the position p:

+ p ___^

After inserting a range of elements at the position p:

int array[] = { 5, 6, 7, 8, 9 };
insert(p, array, array + 5);

actually only elements 6, 7, 8 and 9 from the specified range get inserted and elements 1 and 2 are overwritten. This is due @@ -1631,42 +1854,16 @@ public: insert(pos, first, last, is_integral()); } - //! Insert an element before the specified position. - /*! - \pre pos is a valid iterator pointing to the circular_buffer or its end. - \post The item will be inserted before the position pos.
- If the circular_buffer is full, the last element will be overwritten. If the - circular_buffer is full and the pos points to end(), then the - item will not be inserted. If the capacity is 0, nothing will be inserted. - \param pos An iterator specifying the position before which the item will be inserted. - \param item The element to be inserted. - \return Iterator to the inserted element or end() if the item is not inserted. (See - the Effect.) - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. - \par Exception Safety - Basic; no-throw if the operations in the Throws section do not throw anything. - \par Iterator Invalidation - Invalidates iterators pointing to the elements before the insertion point (towards the beginning and - excluding pos). It also invalidates iterators pointing to the overwritten element. - \par Complexity - Linear (in std::distance(begin(), pos)). - \sa \link rinsert(iterator, size_type, param_value_type) - rinsert(iterator, size_type, value_type)\endlink, - rinsert(iterator, InputIterator, InputIterator), - \link insert(iterator, param_value_type) insert(iterator, value_type)\endlink, - \link insert(iterator, size_type, param_value_type) - insert(iterator, size_type, value_type)\endlink, - insert(iterator, InputIterator, InputIterator) - */ - iterator rinsert(iterator pos, param_value_type item = value_type()) { +private: + template + iterator rinsert_impl(iterator pos, ValT item) { BOOST_CB_ASSERT(pos.is_valid(this)); // check for uninitialized or invalidated iterator if (full() && pos.m_it == 0) return end(); if (pos == begin()) { BOOST_TRY { decrement(m_first); - construct_or_replace(!full(), m_first, item); + construct_or_replace(!full(), m_first, static_cast(item)); } BOOST_CATCH(...) { increment(m_first); BOOST_RETHROW @@ -1681,13 +1878,13 @@ public: bool construct = !full(); BOOST_TRY { while (src != pos.m_it) { - construct_or_replace(construct, dest, *src); + construct_or_replace(construct, dest, this_type::move_if_noexcept(*src)); increment(src); increment(dest); construct = false; } decrement(pos.m_it); - replace(pos.m_it, item); + replace(pos.m_it, static_cast(item)); } BOOST_CATCH(...) { if (!construct && !full()) { decrement(m_first); @@ -1705,6 +1902,108 @@ public: return iterator(this, pos.m_it); } +public: + + //! Insert an element before the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer or its end. + \post The item will be inserted before the position pos.
+ If the circular_buffer is full, the last element will be overwritten. If the + circular_buffer is full and the pos points to end(), then the + item will not be inserted. If the capacity is 0, nothing will be inserted. + \param pos An iterator specifying the position before which the item will be inserted. + \param item The element to be inserted. + \return Iterator to the inserted element or end() if the item is not inserted. (See + the Effect.) + \throws Whatever T::T(const T&) throws. + Whatever T::operator = (const T&) throws. + Exceptions of move_if_noexcept(T&). + \par Exception Safety + Basic; no-throw if the operations in the Throws section do not throw anything. + \par Iterator Invalidation + Invalidates iterators pointing to the elements before the insertion point (towards the beginning and + excluding pos). It also invalidates iterators pointing to the overwritten element. + \par Complexity + Linear (in std::distance(begin(), pos)). + \sa \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator), + \link insert(iterator, param_value_type) insert(iterator, value_type)\endlink, + \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator) + */ + iterator rinsert(iterator pos, param_value_type item) { + return rinsert_impl(pos, item); + } + + //! Insert an element before the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer or its end. + \post The item will be inserted before the position pos.
+ If the circular_buffer is full, the last element will be overwritten. If the + circular_buffer is full and the pos points to end(), then the + item will not be inserted. If the capacity is 0, nothing will be inserted. + \param pos An iterator specifying the position before which the item will be inserted. + \param item The element to be inserted. + \return Iterator to the inserted element or end() if the item is not inserted. (See + the Effect.) + \throws Whatever T::T(T&&) throws. + Whatever T::operator = (T&&) throws. + Exceptions of move_if_noexcept(T&). + \par Exception Safety + Basic; no-throw if the operations in the Throws section do not throw anything. + \par Iterator Invalidation + Invalidates iterators pointing to the elements before the insertion point (towards the beginning and + excluding pos). It also invalidates iterators pointing to the overwritten element. + \par Complexity + Linear (in std::distance(begin(), pos)). + \sa \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator), + \link insert(iterator, param_value_type) insert(iterator, value_type)\endlink, + \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator) + */ + iterator rinsert(iterator pos, rvalue_type item) { + return rinsert_impl(pos, boost::move(item)); + } + + //! Insert an element before the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer or its end. + \post The item will be inserted before the position pos.
+ If the circular_buffer is full, the last element will be overwritten. If the + circular_buffer is full and the pos points to end(), then the + item will not be inserted. If the capacity is 0, nothing will be inserted. + \param pos An iterator specifying the position before which the item will be inserted. + \return Iterator to the inserted element or end() if the item is not inserted. (See + the Effect.) + \throws Whatever T::T() throws. + Whatever T::T(T&&) throws. + Whatever T::operator = (T&&) throws. + Exceptions of move_if_noexcept(T&). + \par Exception Safety + Basic; no-throw if the operations in the Throws section do not throw anything. + \par Iterator Invalidation + Invalidates iterators pointing to the elements before the insertion point (towards the beginning and + excluding pos). It also invalidates iterators pointing to the overwritten element. + \par Complexity + Linear (in std::distance(begin(), pos)). + \sa \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator), + \link insert(iterator, param_value_type) insert(iterator, value_type)\endlink, + \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator) + */ + iterator rinsert(iterator pos) { + value_type temp; + return rinsert(pos, boost::move(temp)); + } + //! Insert n copies of the item before the specified position. /*! \pre pos is a valid iterator pointing to the circular_buffer or its end. @@ -1716,7 +2015,8 @@ public: \param n The number of items the to be inserted. \param item The element whose copies will be inserted. \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws. + Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operations in the Throws section do not throw anything. \par Iterator Invalidation @@ -1728,7 +2028,7 @@ public: Consider a circular_buffer with the capacity of 6 and the size of 4. Its internal buffer may look like the one below.

|1|2|3|4| | |
- p ---^

After inserting 5 elements before the position p:

+ p ___^

After inserting 5 elements before the position p:

rinsert(p, (size_t)5, 0);

actually only 4 elements get inserted and elements 3 and 4 are overwritten. This is due to the fact the rinsert operation preserves the capacity. After insertion the internal buffer looks like this:

|1|2|0|0|0|0|
@@ -1759,8 +2059,10 @@ public: \param pos An iterator specifying the position where the range will be inserted. \param first The beginning of the range to be inserted. \param last The end of the range to be inserted. - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + \throws Whatever T::T(const T&) throws if the InputIterator is not a move iterator. + Whatever T::operator = (const T&) throws if the InputIterator is not a move iterator. + Whatever T::T(T&&) throws if the InputIterator is a move iterator. + Whatever T::operator = (T&&) throws if the InputIterator is a move iterator. \par Exception Safety Basic; no-throw if the operations in the Throws section do not throw anything. \par Iterator Invalidation @@ -1775,7 +2077,7 @@ public: Consider a circular_buffer with the capacity of 6 and the size of 4. Its internal buffer may look like the one below.

|1|2|3|4| | |
- p ---^

After inserting a range of elements before the position p:

+ p ___^

After inserting a range of elements before the position p:

int array[] = { 5, 6, 7, 8, 9 };
insert(p, array, array + 5);

actually only elements 5, 6, 7 and 8 from the specified range get inserted and elements 3 and 4 are overwritten. This is due @@ -1805,7 +2107,7 @@ public: \param pos An iterator pointing at the element to be removed. \return Iterator to the first element remaining beyond the removed element or end() if no such element exists. - \throws Whatever T::operator = (const T&) throws. + \throws Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. \par Iterator Invalidation @@ -1823,7 +2125,7 @@ public: pointer next = pos.m_it; increment(next); for (pointer p = pos.m_it; next != m_last; p = next, increment(next)) - replace(p, *next); + replace(p, this_type::move_if_noexcept(*next)); decrement(m_last); destroy_item(m_last); --m_size; @@ -1843,7 +2145,7 @@ public: \param last The end of the range to be removed. \return Iterator to the first element remaining beyond the removed elements or end() if no such element exists. - \throws Whatever T::operator = (const T&) throws. + \throws Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. \par Iterator Invalidation @@ -1862,7 +2164,7 @@ public: return first; pointer p = first.m_it; while (last.m_it != 0) - replace((first++).m_it, *last++); + replace((first++).m_it, this_type::move_if_noexcept(*last++)); do { decrement(m_last); destroy_item(m_last); @@ -1879,7 +2181,7 @@ public: \param pos An iterator pointing at the element to be removed. \return Iterator to the first element remaining in front of the removed element or begin() if no such element exists. - \throws Whatever T::operator = (const T&) throws. + \throws Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. \par Iterator Invalidation @@ -1900,7 +2202,7 @@ public: pointer prev = pos.m_it; pointer p = prev; for (decrement(prev); p != m_first; p = prev, decrement(prev)) - replace(p, *prev); + replace(p, this_type::move_if_noexcept(*prev)); destroy_item(m_first); increment(m_first); --m_size; @@ -1920,7 +2222,7 @@ public: \param last The end of the range to be removed. \return Iterator to the first element remaining in front of the removed elements or begin() if no such element exists. - \throws Whatever T::operator = (const T&) throws. + \throws Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. \par Iterator Invalidation @@ -1945,7 +2247,7 @@ public: while (first.m_it != m_first) { decrement(first.m_it); decrement(p); - replace(p, *first.m_it); + replace(p, this_type::move_if_noexcept(*first.m_it)); } do { destroy_item(m_first); @@ -1963,7 +2265,7 @@ public: \pre n \<= size() \post The n elements at the beginning of the circular_buffer will be removed. \param n The number of elements to be removed. - \throws Whatever T::operator = (const T&) throws. (Does not throw anything in case of scalars.) + \throws Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. (I.e. no throw in case of scalars.) @@ -1995,7 +2297,7 @@ public: \pre n \<= size() \post The n elements at the end of the circular_buffer will be removed. \param n The number of elements to be removed. - \throws Whatever T::operator = (const T&) throws. (Does not throw anything in case of scalars.) + \throws Exceptions of move_if_noexcept(T&). \par Exception Safety Basic; no-throw if the operation in the Throws section does not throw anything. (I.e. no throw in case of scalars.) @@ -2037,7 +2339,7 @@ public: rerase(iterator), rerase(iterator, iterator), erase_begin(size_type), erase_end(size_type) */ - void clear() { + void clear() BOOST_NOEXCEPT { destroy_content(); m_size = 0; } @@ -2086,11 +2388,11 @@ private: if (n > max_size()) throw_exception(std::length_error("circular_buffer")); #if BOOST_CB_ENABLE_DEBUG - pointer p = (n == 0) ? 0 : m_alloc.allocate(n, 0); - std::memset(p, cb_details::UNINITIALIZED, sizeof(value_type) * n); + pointer p = (n == 0) ? 0 : m_alloc.allocate(n); + cb_details::do_fill_uninitialized_memory(p, sizeof(value_type) * n); return p; #else - return (n == 0) ? 0 : m_alloc.allocate(n, 0); + return (n == 0) ? 0 : m_alloc.allocate(n); #endif } @@ -2101,7 +2403,7 @@ private: } //! Does the pointer point to the uninitialized memory? - bool is_uninitialized(const_pointer p) const { + bool is_uninitialized(const_pointer p) const BOOST_NOEXCEPT { return p >= m_last && (m_first < m_last || p < m_first); } @@ -2113,6 +2415,14 @@ private: #endif } + //! Replace an element. + void replace(pointer pos, rvalue_type item) { + *pos = boost::move(item); +#if BOOST_CB_ENABLE_DEBUG + invalidate_iterators(iterator(this, pos)); +#endif + } + //! Construct or replace an element. /*! construct has to be set to true if and only if @@ -2120,17 +2430,29 @@ private: */ void construct_or_replace(bool construct, pointer pos, param_value_type item) { if (construct) - m_alloc.construct(pos, item); + boost::container::allocator_traits::construct(m_alloc, boost::addressof(*pos), item); else replace(pos, item); } + //! Construct or replace an element. + /*! + construct has to be set to true if and only if + pos points to an uninitialized memory. + */ + void construct_or_replace(bool construct, pointer pos, rvalue_type item) { + if (construct) + boost::container::allocator_traits::construct(m_alloc, boost::addressof(*pos), boost::move(item)); + else + replace(pos, boost::move(item)); + } + //! Destroy an item. void destroy_item(pointer p) { - m_alloc.destroy(p); + boost::container::allocator_traits::destroy(m_alloc, boost::addressof(*p)); #if BOOST_CB_ENABLE_DEBUG invalidate_iterators(iterator(this, p)); - std::memset(p, cb_details::UNINITIALIZED, sizeof(value_type)); + cb_details::do_fill_uninitialized_memory(p, sizeof(value_type)); #endif } @@ -2161,7 +2483,7 @@ private: } //! Destroy content and free allocated memory. - void destroy() { + void destroy() BOOST_NOEXCEPT { destroy_content(); deallocate(m_buff, capacity()); #if BOOST_CB_ENABLE_DEBUG @@ -2203,9 +2525,9 @@ private: void initialize(Iterator first, Iterator last, const false_type&) { BOOST_CB_IS_CONVERTIBLE(Iterator, value_type); // check for invalid iterator type #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) - initialize(first, last, BOOST_ITERATOR_CATEGORY::type()); + initialize(first, last, iterator_category::type()); #else - initialize(first, last, BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type()); + initialize(first, last, BOOST_DEDUCED_TYPENAME iterator_category::type()); #endif } @@ -2216,7 +2538,7 @@ private: // for containers std::deque tmp(first, last, m_alloc); size_type distance = tmp.size(); - initialize(distance, tmp.begin(), tmp.end(), distance); + initialize(distance, boost::make_move_iterator(tmp.begin()), boost::make_move_iterator(tmp.end()), distance); } //! Specialized initialize method. @@ -2242,9 +2564,9 @@ private: void initialize(capacity_type buffer_capacity, Iterator first, Iterator last, const false_type&) { BOOST_CB_IS_CONVERTIBLE(Iterator, value_type); // check for invalid iterator type #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) - initialize(buffer_capacity, first, last, BOOST_ITERATOR_CATEGORY::type()); + initialize(buffer_capacity, first, last, iterator_category::type()); #else - initialize(buffer_capacity, first, last, BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type()); + initialize(buffer_capacity, first, last, BOOST_DEDUCED_TYPENAME iterator_category::type()); #endif } @@ -2260,7 +2582,7 @@ private: if (buffer_capacity == 0) return; while (first != last && !full()) { - m_alloc.construct(m_last, *first++); + boost::container::allocator_traits::construct(m_alloc, boost::addressof(*m_last), *first++); increment(m_last); ++m_size; } @@ -2296,7 +2618,7 @@ private: m_size = distance; } BOOST_TRY { - m_last = cb_details::uninitialized_copy_with_alloc(first, last, m_buff, m_alloc); + m_last = cb_details::uninitialized_copy(first, last, m_buff, m_alloc); } BOOST_CATCH(...) { deallocate(m_buff, buffer_capacity); BOOST_RETHROW @@ -2336,9 +2658,9 @@ private: void assign(Iterator first, Iterator last, const false_type&) { BOOST_CB_IS_CONVERTIBLE(Iterator, value_type); // check for invalid iterator type #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) - assign(first, last, BOOST_ITERATOR_CATEGORY::type()); + assign(first, last, iterator_category::type()); #else - assign(first, last, BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type()); + assign(first, last, BOOST_DEDUCED_TYPENAME iterator_category::type()); #endif } @@ -2350,8 +2672,8 @@ private: std::deque tmp(first, last, m_alloc); size_type distance = tmp.size(); assign_n(distance, distance, - cb_details::assign_range::iterator, - allocator_type>(tmp.begin(), tmp.end(), m_alloc)); + cb_details::make_assign_range + (boost::make_move_iterator(tmp.begin()), boost::make_move_iterator(tmp.end()), m_alloc)); } //! Specialized assign method. @@ -2359,7 +2681,7 @@ private: void assign(ForwardIterator first, ForwardIterator last, const std::forward_iterator_tag&) { BOOST_CB_ASSERT(std::distance(first, last) >= 0); // check for wrong range size_type distance = std::distance(first, last); - assign_n(distance, distance, cb_details::assign_range(first, last, m_alloc)); + assign_n(distance, distance, cb_details::make_assign_range(first, last, m_alloc)); } //! Specialized assign method. @@ -2373,9 +2695,9 @@ private: void assign(capacity_type new_capacity, Iterator first, Iterator last, const false_type&) { BOOST_CB_IS_CONVERTIBLE(Iterator, value_type); // check for invalid iterator type #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) - assign(new_capacity, first, last, BOOST_ITERATOR_CATEGORY::type()); + assign(new_capacity, first, last, iterator_category::type()); #else - assign(new_capacity, first, last, BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type()); + assign(new_capacity, first, last, BOOST_DEDUCED_TYPENAME iterator_category::type()); #endif } @@ -2386,12 +2708,7 @@ private: clear(); insert(begin(), first, last); } else { -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - circular_buffer tmp(new_capacity, m_alloc); - tmp.insert(begin(), first, last); -#else circular_buffer tmp(new_capacity, first, last, m_alloc); -#endif tmp.swap(*this); } } @@ -2407,7 +2724,7 @@ private: distance = new_capacity; } assign_n(new_capacity, distance, - cb_details::assign_range(first, last, m_alloc)); + cb_details::make_assign_range(first, last, m_alloc)); } //! Helper assign method. @@ -2441,10 +2758,11 @@ private: } //! Helper insert method. - iterator insert_item(const iterator& pos, param_value_type item) { + template + iterator insert_item(const iterator& pos, ValT item) { pointer p = pos.m_it; if (p == 0) { - construct_or_replace(!full(), m_last, item); + construct_or_replace(!full(), m_last, static_cast(item)); p = m_last; } else { pointer src = m_last; @@ -2453,11 +2771,11 @@ private: BOOST_TRY { while (src != p) { decrement(src); - construct_or_replace(construct, dest, *src); + construct_or_replace(construct, dest, this_type::move_if_noexcept(*src)); decrement(dest); construct = false; } - replace(p, item); + replace(p, static_cast(item)); } BOOST_CATCH(...) { if (!construct && !full()) { increment(m_last); @@ -2486,9 +2804,9 @@ private: void insert(const iterator& pos, Iterator first, Iterator last, const false_type&) { BOOST_CB_IS_CONVERTIBLE(Iterator, value_type); // check for invalid iterator type #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) - insert(pos, first, last, BOOST_ITERATOR_CATEGORY::type()); + insert(pos, first, last, iterator_category::type()); #else - insert(pos, first, last, BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type()); + insert(pos, first, last, BOOST_DEDUCED_TYPENAME iterator_category::type()); #endif } @@ -2497,7 +2815,7 @@ private: void insert(iterator pos, InputIterator first, InputIterator last, const std::input_iterator_tag&) { if (!full() || pos != begin()) { for (;first != last; ++pos) - pos = insert_item(pos, *first++); + pos = insert(pos, *first++); } } @@ -2529,7 +2847,7 @@ private: pointer p = m_last; BOOST_TRY { for (; ii < construct; ++ii, increment(p)) - m_alloc.construct(p, *wrapper()); + boost::container::allocator_traits::construct(m_alloc, boost::addressof(*p), *wrapper()); for (;ii < n; ++ii, increment(p)) replace(p, *wrapper()); } BOOST_CATCH(...) { @@ -2577,9 +2895,9 @@ private: void rinsert(const iterator& pos, Iterator first, Iterator last, const false_type&) { BOOST_CB_IS_CONVERTIBLE(Iterator, value_type); // check for invalid iterator type #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) - rinsert(pos, first, last, BOOST_ITERATOR_CATEGORY::type()); + rinsert(pos, first, last, iterator_category::type()); #else - rinsert(pos, first, last, BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type()); + rinsert(pos, first, last, BOOST_DEDUCED_TYPENAME iterator_category::type()); #endif } @@ -2623,7 +2941,7 @@ private: for (;ii > construct; --ii, increment(p)) replace(p, *wrapper()); for (; ii > 0; --ii, increment(p)) - m_alloc.construct(p, *wrapper()); + boost::container::allocator_traits::construct(m_alloc, boost::addressof(*p), *wrapper()); } BOOST_CATCH(...) { size_type constructed = ii < construct ? construct - ii : 0; m_last = add(m_last, constructed); @@ -2810,7 +3128,7 @@ inline bool operator >= (const circular_buffer& lhs, const circular_bu \sa \link circular_buffer::swap(circular_buffer&) swap(circular_buffer&)\endlink */ template -inline void swap(circular_buffer& lhs, circular_buffer& rhs) { +inline void swap(circular_buffer& lhs, circular_buffer& rhs) BOOST_NOEXCEPT { lhs.swap(rhs); } diff --git a/3party/boost/boost/circular_buffer/debug.hpp b/3party/boost/boost/circular_buffer/debug.hpp index 6eb4515856..b6ab0fefbe 100644 --- a/3party/boost/boost/circular_buffer/debug.hpp +++ b/3party/boost/boost/circular_buffer/debug.hpp @@ -9,10 +9,20 @@ #if !defined(BOOST_CIRCULAR_BUFFER_DEBUG_HPP) #define BOOST_CIRCULAR_BUFFER_DEBUG_HPP -#if defined(_MSC_VER) && _MSC_VER >= 1200 +#if defined(_MSC_VER) #pragma once #endif +#if BOOST_CB_ENABLE_DEBUG +#include + +#if defined(BOOST_NO_STDC_NAMESPACE) +namespace std { + using ::memset; +} +#endif + +#endif // BOOST_CB_ENABLE_DEBUG namespace boost { namespace cb_details { @@ -22,6 +32,17 @@ namespace cb_details { // The value the uninitialized memory is filled with. const int UNINITIALIZED = 0xcc; +template +inline void do_fill_uninitialized_memory(T* data, std::size_t size_in_bytes) BOOST_NOEXCEPT { + std::memset(static_cast(data), UNINITIALIZED, size_in_bytes); +} + +template +inline void do_fill_uninitialized_memory(T& /*data*/, std::size_t /*size_in_bytes*/) BOOST_NOEXCEPT { + // Do nothing +} + + class debug_iterator_registry; /*! diff --git a/3party/boost/boost/circular_buffer/details.hpp b/3party/boost/boost/circular_buffer/details.hpp index da25ff07ed..44ca9c9689 100644 --- a/3party/boost/boost/circular_buffer/details.hpp +++ b/3party/boost/boost/circular_buffer/details.hpp @@ -1,6 +1,7 @@ // Helper classes and functions for the circular buffer. // Copyright (c) 2003-2008 Jan Gaspar +// Copyright (c) 2014 Glen Fernandes // C++11 allocator model support. // Use, modification, and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -9,15 +10,27 @@ #if !defined(BOOST_CIRCULAR_BUFFER_DETAILS_HPP) #define BOOST_CIRCULAR_BUFFER_DETAILS_HPP -#if defined(_MSC_VER) && _MSC_VER >= 1200 +#if defined(_MSC_VER) #pragma once #endif #include #include +#include +#include +#include +#include #include #include +// Silence MS /W4 warnings like C4913: +// "user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used" +// This might happen when previously including some boost headers that overload the coma operator. +#if defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable:4913) +#endif + namespace boost { namespace cb_details { @@ -29,8 +42,10 @@ void uninitialized_fill_n_with_alloc( ForwardIterator first, Diff n, const T& item, Alloc& alloc); template -ForwardIterator uninitialized_copy_with_alloc( - InputIterator first, InputIterator last, ForwardIterator dest, Alloc& alloc); +ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator dest, Alloc& a); + +template +ForwardIterator uninitialized_move_if_noexcept(InputIterator first, InputIterator last, ForwardIterator dest, Alloc& a); /*! \struct const_traits @@ -98,7 +113,7 @@ private: */ template struct assign_n { - typedef typename Alloc::size_type size_type; + typedef typename boost::container::allocator_traits::size_type size_type; size_type m_n; Value m_item; Alloc& m_alloc; @@ -117,19 +132,24 @@ private: */ template struct assign_range { - const Iterator& m_first; - const Iterator& m_last; - Alloc& m_alloc; + Iterator m_first; + Iterator m_last; + Alloc& m_alloc; + assign_range(const Iterator& first, const Iterator& last, Alloc& alloc) - : m_first(first), m_last(last), m_alloc(alloc) {} + : m_first(first), m_last(last), m_alloc(alloc) {} + template void operator () (Pointer p) const { - uninitialized_copy_with_alloc(m_first, m_last, p, m_alloc); + boost::cb_details::uninitialized_copy(m_first, m_last, p, m_alloc); } -private: - assign_range& operator = (const assign_range&); // do not generate }; +template +inline assign_range make_assign_range(const Iterator& first, const Iterator& last, Alloc& a) { + return assign_range(first, last, a); +} + /*! \class capacity_control \brief Capacity controller of the space optimized circular buffer. @@ -137,18 +157,19 @@ private: template class capacity_control { - //! The capacity of the space optimized circular buffer. + //! The capacity of the space-optimized circular buffer. Size m_capacity; - //! The lowest guaranteed capacity of the adapted circular buffer. + //! The lowest guaranteed or minimum capacity of the adapted space-optimized circular buffer. Size m_min_capacity; public: //! Constructor. capacity_control(Size buffer_capacity, Size min_buffer_capacity = 0) - : m_capacity(buffer_capacity), m_min_capacity(min_buffer_capacity) { - BOOST_CB_ASSERT(buffer_capacity >= min_buffer_capacity); // check for capacity lower than min_capacity + : m_capacity(buffer_capacity), m_min_capacity(min_buffer_capacity) + { // Check for capacity lower than min_capacity. + BOOST_CB_ASSERT(buffer_capacity >= min_buffer_capacity); } // Default copy constructor. @@ -406,45 +427,49 @@ operator + (typename Traits::difference_type n, const iterator& it return it + n; } -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) - -//! Iterator category. -template -inline std::random_access_iterator_tag iterator_category(const iterator&) { - return std::random_access_iterator_tag(); -} - -//! The type of the elements stored in the circular buffer. -template -inline typename Traits::value_type* value_type(const iterator&) { return 0; } - -//! Distance type. -template -inline typename Traits::difference_type* distance_type(const iterator&) { return 0; } - -#endif // #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) - /*! - \fn ForwardIterator uninitialized_copy_with_alloc(InputIterator first, InputIterator last, ForwardIterator dest, - Alloc& alloc) - \brief Equivalent of std::uninitialized_copy with allocator. + \fn ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator dest) + \brief Equivalent of std::uninitialized_copy but with explicit specification of value type. */ template -inline ForwardIterator uninitialized_copy_with_alloc(InputIterator first, InputIterator last, ForwardIterator dest, - Alloc& alloc) { +inline ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator dest, Alloc& a) { ForwardIterator next = dest; BOOST_TRY { for (; first != last; ++first, ++dest) - alloc.construct(dest, *first); + boost::container::allocator_traits::construct(a, boost::addressof(*dest), *first); } BOOST_CATCH(...) { for (; next != dest; ++next) - alloc.destroy(next); + boost::container::allocator_traits::destroy(a, boost::addressof(*next)); BOOST_RETHROW } BOOST_CATCH_END return dest; } +template +ForwardIterator uninitialized_move_if_noexcept_impl(InputIterator first, InputIterator last, ForwardIterator dest, Alloc& a, + true_type) { + for (; first != last; ++first, ++dest) + boost::container::allocator_traits::construct(a, boost::addressof(*dest), boost::move(*first)); + return dest; +} + +template +ForwardIterator uninitialized_move_if_noexcept_impl(InputIterator first, InputIterator last, ForwardIterator dest, Alloc& a, + false_type) { + return uninitialized_copy(first, last, dest, a); +} + +/*! + \fn ForwardIterator uninitialized_move_if_noexcept(InputIterator first, InputIterator last, ForwardIterator dest) + \brief Equivalent of std::uninitialized_copy but with explicit specification of value type and moves elements if they have noexcept move constructors. +*/ +template +ForwardIterator uninitialized_move_if_noexcept(InputIterator first, InputIterator last, ForwardIterator dest, Alloc& a) { + typedef typename boost::is_nothrow_move_constructible::value_type>::type tag_t; + return uninitialized_move_if_noexcept_impl(first, last, dest, a, tag_t()); +} + /*! \fn void uninitialized_fill_n_with_alloc(ForwardIterator first, Diff n, const T& item, Alloc& alloc) \brief Equivalent of std::uninitialized_fill_n with allocator. @@ -454,10 +479,10 @@ inline void uninitialized_fill_n_with_alloc(ForwardIterator first, Diff n, const ForwardIterator next = first; BOOST_TRY { for (; n > 0; ++first, --n) - alloc.construct(first, item); + boost::container::allocator_traits::construct(alloc, boost::addressof(*first), item); } BOOST_CATCH(...) { for (; next != first; ++next) - alloc.destroy(next); + boost::container::allocator_traits::destroy(alloc, boost::addressof(*next)); BOOST_RETHROW } BOOST_CATCH_END @@ -467,4 +492,8 @@ inline void uninitialized_fill_n_with_alloc(ForwardIterator first, Diff n, const } // namespace boost +#if defined(_MSC_VER) +# pragma warning(pop) +#endif + #endif // #if !defined(BOOST_CIRCULAR_BUFFER_DETAILS_HPP) diff --git a/3party/boost/boost/circular_buffer/space_optimized.hpp b/3party/boost/boost/circular_buffer/space_optimized.hpp index 5350676ca9..688ab95796 100644 --- a/3party/boost/boost/circular_buffer/space_optimized.hpp +++ b/3party/boost/boost/circular_buffer/space_optimized.hpp @@ -1,6 +1,8 @@ // Implementation of the circular buffer adaptor. // Copyright (c) 2003-2008 Jan Gaspar +// Copyright (c) 2013 Paul A. Bristow // Doxygen comments changed for new version of documentation. +// Copyright (c) 2013 Antony Polukhin // Move semantics implementation. // Use, modification, and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -9,7 +11,7 @@ #if !defined(BOOST_CIRCULAR_BUFFER_SPACE_OPTIMIZED_HPP) #define BOOST_CIRCULAR_BUFFER_SPACE_OPTIMIZED_HPP -#if defined(_MSC_VER) && _MSC_VER >= 1200 +#if defined(_MSC_VER) #pragma once #endif @@ -20,10 +22,9 @@ namespace boost { /*! \class circular_buffer_space_optimized - \brief Space optimized circular buffer container adaptor. - - For detailed documentation of the space_optimized_circular_buffer visit: - http://www.boost.org/libs/circular_buffer/doc/space_optimized.html + \brief Space optimized circular buffer container adaptor. + T must be a copyable class or must have an noexcept move constructor + and move assignment operator. */ template class circular_buffer_space_optimized : @@ -51,29 +52,53 @@ public: typedef typename circular_buffer::array_range array_range; typedef typename circular_buffer::const_array_range const_array_range; typedef typename circular_buffer::param_value_type param_value_type; - typedef typename circular_buffer::return_value_type return_value_type; + typedef typename circular_buffer::rvalue_type rvalue_type; + //typedef typename circular_buffer::return_value_type return_value_type; - //! Capacity controller of the space optimized circular buffer. - /*! -

-class capacity_control {
-   size_type m_capacity;
-   size_type m_min_capacity;
-public:
-   capacity_control(size_type capacity, size_type min_capacity = 0) : m_capacity(capacity), m_min_capacity(min_capacity) {};
-   size_type %capacity() const { return m_capacity; }
-   size_type min_capacity() const { return m_min_capacity; }
-   operator size_type() const { return m_capacity; }
-};

- \pre capacity >= min_capacity -

The capacity() represents the capacity of the circular_buffer_space_optimized and - the min_capacity() determines the minimal allocated size of its internal buffer.

-

The converting constructor of the capacity_control allows implicit conversion from - size_type-like types which ensures compatibility of creating an instance of the - circular_buffer_space_optimized with other STL containers. On the other hand the operator - %size_type() provides implicit conversion to the size_type which allows to treat the - capacity of the circular_buffer_space_optimized the same way as in the - circular_buffer.

+/*
 is not passed through to html or pdf. So 
is used in code section below. Ugly :-( +Ideally want a link to capacity_control, but this would require include details +and this would expose all the functions in details. +There must be a better way of doing this. +*/ + + /*! Capacity controller of the space optimized circular buffer. + + \see capacity_control in details.hpp. +

+ +class capacity_control
+{
+ size_type m_capacity; // Available capacity.
+ size_type m_min_capacity; // Minimum capacity.
+public:
+ capacity_control(size_type capacity, size_type min_capacity = 0)
+ : m_capacity(capacity), m_min_capacity(min_capacity)
+ {};
+ size_type %capacity() const { return m_capacity; }
+ size_type min_capacity() const { return m_min_capacity; }
+ operator size_type() const { return m_capacity; }
+};
+
+

+ + +

Always + capacity >= min_capacity. +

+

+ The capacity() represents the capacity + of the circular_buffer_space_optimized and + the min_capacity() determines the minimal allocated size of its internal buffer. +

+

The converting constructor of the capacity_control allows implicit conversion from + size_type-like types which ensures compatibility of creating an instance of the + circular_buffer_space_optimized with other STL containers. + + On the other hand the operator %size_type() + provides implicit conversion to the size_type which allows to treat the + capacity of the circular_buffer_space_optimized the same way as in the + circular_buffer. +

*/ typedef cb_details::capacity_control capacity_type; @@ -98,7 +123,7 @@ public: #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) reference operator [] (size_type n) { return circular_buffer::operator[](n); } - return_value_type operator [] (size_type n) const { return circular_buffer::operator[](n); } + const_reference operator [] (size_type n) const { return circular_buffer::operator[](n); } #else using circular_buffer::operator[]; #endif @@ -125,7 +150,7 @@ public: Constant (in the size of the circular_buffer_space_optimized). \sa empty() */ - bool full() const { return m_capacity_ctrl == size(); } + bool full() const BOOST_NOEXCEPT { return m_capacity_ctrl == size(); } /*! \brief Get the maximum number of elements which can be inserted into the circular_buffer_space_optimized without overwriting any of already stored elements. @@ -139,7 +164,7 @@ public: Constant (in the size of the circular_buffer_space_optimized). \sa capacity(), size(), max_size() */ - size_type reserve() const { return m_capacity_ctrl - size(); } + size_type reserve() const BOOST_NOEXCEPT { return m_capacity_ctrl - size(); } //! Get the capacity of the circular_buffer_space_optimized. /*! @@ -155,7 +180,7 @@ public: \sa reserve(), size(), max_size(), set_capacity(const capacity_type&) */ - const capacity_type& capacity() const { return m_capacity_ctrl; } + const capacity_type& capacity() const BOOST_NOEXCEPT { return m_capacity_ctrl; } #if defined(BOOST_CB_TEST) @@ -164,7 +189,7 @@ public: \note This method is not intended to be used directly by the user. It is defined only for testing purposes. */ - size_type internal_capacity() const { return circular_buffer::capacity(); } + size_type internal_capacity() const BOOST_NOEXCEPT { return circular_buffer::capacity(); } #endif // #if defined(BOOST_CB_TEST) @@ -178,9 +203,9 @@ public: than the new capacity then the amount of allocated memory in the internal buffer may be accommodated as necessary but it will never drop below capacity_ctrl.min_capacity(). \param capacity_ctrl The new capacity controller. - \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + \throws "An allocation error" if memory is exhausted, (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. \par Exception Safety Strong. \par Iterator Invalidation @@ -222,7 +247,7 @@ public: the requested size. (See the Effect.) \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -257,7 +282,7 @@ public: \param capacity_ctrl The new capacity controller. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. \par Exception Safety Strong. \par Iterator Invalidation @@ -293,7 +318,7 @@ public: the requested size. (See the Effect.) \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -324,7 +349,7 @@ public: \warning Since Boost version 1.36 the behaviour of this constructor has changed. Now it creates a space optimized circular buffer with zero capacity. */ - explicit circular_buffer_space_optimized(const allocator_type& alloc = allocator_type()) + explicit circular_buffer_space_optimized(const allocator_type& alloc = allocator_type()) BOOST_NOEXCEPT : circular_buffer(0, alloc) , m_capacity_ctrl(0) {} @@ -382,7 +407,7 @@ public: \param alloc The allocator. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Complexity Linear (in the n). */ @@ -391,31 +416,6 @@ public: : circular_buffer(init_capacity(capacity_ctrl, n), n, item, alloc) , m_capacity_ctrl(capacity_ctrl) {} -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - - /*! \cond */ - circular_buffer_space_optimized(const circular_buffer_space_optimized& cb) - : circular_buffer(cb.begin(), cb.end()) - , m_capacity_ctrl(cb.m_capacity_ctrl) {} - - template - circular_buffer_space_optimized(InputIterator first, InputIterator last) - : circular_buffer(first, last) - , m_capacity_ctrl(circular_buffer::capacity()) {} - - template - circular_buffer_space_optimized(capacity_type capacity_ctrl, InputIterator first, InputIterator last) - : circular_buffer( - init_capacity(capacity_ctrl, first, last, is_integral()), - first, last) - , m_capacity_ctrl(capacity_ctrl) { - reduce_capacity( - is_same< BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type, std::input_iterator_tag >()); - } - /*! \endcond */ - -#else - //! The copy constructor. /*! Creates a copy of the specified circular_buffer_space_optimized. @@ -424,7 +424,7 @@ public: \param cb The circular_buffer_space_optimized to be copied. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Complexity Linear (in the size of cb). */ @@ -432,6 +432,23 @@ public: : circular_buffer(cb.begin(), cb.end(), cb.get_allocator()) , m_capacity_ctrl(cb.m_capacity_ctrl) {} +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + //! The move constructor. + /*! \brief Move constructs a circular_buffer_space_optimized from cb, + leaving cb empty. + \pre C++ compiler with rvalue references support. + \post cb.empty() + \param cb circular_buffer to 'steal' value from. + \throws Nothing. + \par Constant. + */ + circular_buffer_space_optimized(circular_buffer_space_optimized&& cb) BOOST_NOEXCEPT + : circular_buffer() + , m_capacity_ctrl(0) { + cb.swap(*this); + } +#endif // BOOST_NO_CXX11_RVALUE_REFERENCES + //! Create a full space optimized circular buffer filled with a copy of the range. /*! \pre Valid range [first, last).
@@ -446,7 +463,8 @@ public: \param alloc The allocator. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept + and InputIterator is a move iterator. \par Complexity Linear (in the std::distance(first, last)). */ @@ -477,7 +495,7 @@ public: \param alloc The allocator. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Complexity Linear (in std::distance(first, last); in min[capacity_ctrl.%capacity(), std::distance(first, last)] if the InputIterator @@ -491,11 +509,9 @@ public: first, last, alloc) , m_capacity_ctrl(capacity_ctrl) { reduce_capacity( - is_same< BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type, std::input_iterator_tag >()); + is_same< BOOST_DEDUCED_TYPENAME iterator_category::type, std::input_iterator_tag >()); } -#endif // #if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - #if defined(BOOST_CB_NEVER_DEFINED) // This section will never be compiled - the default destructor will be generated instead. // Declared only for documentation purpose. @@ -552,6 +568,24 @@ public: return *this; } +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + /*! \brief Move assigns content of cb to *this, leaving cb empty. + \pre C++ compiler with rvalue references support. + \post cb.empty() + \param cb circular_buffer to 'steal' value from. + \throws Nothing. + \par Complexity + Constant. + */ + circular_buffer_space_optimized& operator = (circular_buffer_space_optimized&& cb) BOOST_NOEXCEPT { + cb.swap(*this); // now `this` holds `cb` + circular_buffer(get_allocator()) // temprary that holds initial `cb` allocator + .swap(cb); // makes `cb` empty + return *this; + } +#endif // BOOST_NO_CXX11_RVALUE_REFERENCES + + //! Assign n items into the space optimized circular buffer. /*! The content of the circular_buffer_space_optimized will be removed and replaced with @@ -563,7 +597,7 @@ public: \param item The element the circular_buffer_space_optimized will be filled with. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -596,7 +630,7 @@ public: \param item The element the circular_buffer_space_optimized will be filled with. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -630,7 +664,8 @@ public: \param last The end of the range to be copied. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept and + InputIterator is a move iterator. \par Exception Safety Basic. \par Iterator Invalidation @@ -670,7 +705,8 @@ public: \param last The end of the range to be copied. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept and + InputIterator is a move iterator. \par Exception Safety Basic. \par Iterator Invalidation @@ -692,7 +728,7 @@ public: circular_buffer::assign(capacity_ctrl, first, last); } - //! Swap the contents of two space optimized circular buffers. + //! Swap the contents of two space-optimized circular-buffers. /*! \post this contains elements of cb and vice versa; the capacity and the amount of allocated memory in the internal buffer of this equal to the capacity and the amount of @@ -704,14 +740,18 @@ public: \par Iterator Invalidation Invalidates all iterators of both circular_buffer_space_optimized containers. (On the other hand the iterators still point to the same elements but within another container. If you want to rely on - this feature you have to turn the Debug Support off otherwise an - assertion will report an error if such invalidated iterator is used.) + this feature you have to turn the __debug_support off by defining macro BOOST_CB_DISABLE_DEBUG, + otherwise an assertion will report an error if such invalidated iterator is used.) \par Complexity Constant (in the size of the circular_buffer_space_optimized). - \sa \link swap(circular_buffer&, circular_buffer&) - swap(circular_buffer_space_optimized&, circular_buffer_space_optimized&)\endlink + \sa swap(circular_buffer&, circular_buffer&), + swap(circular_buffer_space_optimized&, circular_buffer_space_optimized&) + + */ - void swap(circular_buffer_space_optimized& cb) { + // Note link does not work right. Asked on Doxygen forum for advice 23 May 2103. + + void swap(circular_buffer_space_optimized& cb) BOOST_NOEXCEPT { std::swap(m_capacity_ctrl, cb.m_capacity_ctrl); circular_buffer::swap(cb); } @@ -725,7 +765,7 @@ public: \param item The element to be inserted. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -736,11 +776,60 @@ public: \sa \link push_front() push_front(const_reference)\endlink, pop_back(), pop_front() */ - void push_back(param_value_type item = value_type()) { + void push_back(param_value_type item) { check_low_capacity(); circular_buffer::push_back(item); } + //! Insert a new element at the end of the space optimized circular buffer. + /*! + \post if capacity().%capacity() > 0 then back() == item
+ If the circular_buffer_space_optimized is full, the first element will be removed. If the + capacity is 0, nothing will be inserted.

+ The amount of allocated memory in the internal buffer may be predictively increased. + \param item The element to be inserted. + \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + used). + \par Exception Safety + Basic. + \par Iterator Invalidation + Invalidates all iterators pointing to the circular_buffer_space_optimized (except iterators + equal to end()). + \par Complexity + Linear (in the size of the circular_buffer_space_optimized). + \sa \link push_front() push_front(const_reference)\endlink, pop_back(), + pop_front() + */ + void push_back(rvalue_type item) { + check_low_capacity(); + circular_buffer::push_back(boost::move(item)); + } + + //! Insert a new element at the end of the space optimized circular buffer. + /*! + \post if capacity().%capacity() > 0 then back() == item
+ If the circular_buffer_space_optimized is full, the first element will be removed. If the + capacity is 0, nothing will be inserted.

+ The amount of allocated memory in the internal buffer may be predictively increased. + \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + used). + Whatever T::T() throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. + \par Exception Safety + Basic. + \par Iterator Invalidation + Invalidates all iterators pointing to the circular_buffer_space_optimized (except iterators + equal to end()). + \par Complexity + Linear (in the size of the circular_buffer_space_optimized). + \sa \link push_front() push_front(const_reference)\endlink, pop_back(), + pop_front() + */ + void push_back() { + check_low_capacity(); + circular_buffer::push_back(); + } + //! Insert a new element at the beginning of the space optimized circular buffer. /*! \post if capacity().%capacity() > 0 then front() == item
@@ -750,7 +839,7 @@ public: \param item The element to be inserted. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. + Whatever T::T(const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -761,11 +850,61 @@ public: \sa \link push_back() push_back(const_reference)\endlink, pop_back(), pop_front() */ - void push_front(param_value_type item = value_type()) { + void push_front(param_value_type item) { check_low_capacity(); circular_buffer::push_front(item); } + //! Insert a new element at the beginning of the space optimized circular buffer. + /*! + \post if capacity().%capacity() > 0 then front() == item
+ If the circular_buffer_space_optimized is full, the last element will be removed. If the + capacity is 0, nothing will be inserted.

+ The amount of allocated memory in the internal buffer may be predictively increased. + \param item The element to be inserted. + \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + used). + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. + \par Exception Safety + Basic. + \par Iterator Invalidation + Invalidates all iterators pointing to the circular_buffer_space_optimized (except iterators + equal to end()). + \par Complexity + Linear (in the size of the circular_buffer_space_optimized). + \sa \link push_back() push_back(const_reference)\endlink, pop_back(), + pop_front() + */ + void push_front(rvalue_type item) { + check_low_capacity(); + circular_buffer::push_front(boost::move(item)); + } + + //! Insert a new element at the beginning of the space optimized circular buffer. + /*! + \post if capacity().%capacity() > 0 then front() == item
+ If the circular_buffer_space_optimized is full, the last element will be removed. If the + capacity is 0, nothing will be inserted.

+ The amount of allocated memory in the internal buffer may be predictively increased. + \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + used). + Whatever T::T() throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. + \par Exception Safety + Basic. + \par Iterator Invalidation + Invalidates all iterators pointing to the circular_buffer_space_optimized (except iterators + equal to end()). + \par Complexity + Linear (in the size of the circular_buffer_space_optimized). + \sa \link push_back() push_back(const_reference)\endlink, pop_back(), + pop_front() + */ + void push_front() { + check_low_capacity(); + circular_buffer::push_front(); + } + //! Remove the last element from the space optimized circular buffer. /*! \pre !empty() @@ -826,8 +965,8 @@ public: the Effect.) \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::T(const T&) throws. + Whatever T::operator = (const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -843,12 +982,88 @@ public: rinsert(iterator, size_type, value_type)\endlink, rinsert(iterator, InputIterator, InputIterator) */ - iterator insert(iterator pos, param_value_type item = value_type()) { + iterator insert(iterator pos, param_value_type item) { size_type index = pos - begin(); check_low_capacity(); return circular_buffer::insert(begin() + index, item); } + //! Insert an element at the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer_space_optimized or its + end. + \post The item will be inserted at the position pos.
+ If the circular_buffer_space_optimized is full, the first element will be overwritten. If + the circular_buffer_space_optimized is full and the pos points to + begin(), then the item will not be inserted. If the capacity is 0, + nothing will be inserted.

+ The amount of allocated memory in the internal buffer may be predictively increased. + \param pos An iterator specifying the position where the item will be inserted. + \param item The element to be inserted. + \return Iterator to the inserted element or begin() if the item is not inserted. (See + the Effect.) + \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + used). + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. + \par Exception Safety + Basic. + \par Iterator Invalidation + Invalidates all iterators pointing to the circular_buffer_space_optimized (except iterators + equal to end()). + \par Complexity + Linear (in the size of the circular_buffer_space_optimized). + \sa \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator), + \link rinsert(iterator, param_value_type) rinsert(iterator, value_type)\endlink, + \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator) + */ + iterator insert(iterator pos, rvalue_type item) { + size_type index = pos - begin(); + check_low_capacity(); + return circular_buffer::insert(begin() + index, boost::move(item)); + } + + //! Insert an element at the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer_space_optimized or its + end. + \post The item will be inserted at the position pos.
+ If the circular_buffer_space_optimized is full, the first element will be overwritten. If + the circular_buffer_space_optimized is full and the pos points to + begin(), then the item will not be inserted. If the capacity is 0, + nothing will be inserted.

+ The amount of allocated memory in the internal buffer may be predictively increased. + \param pos An iterator specifying the position where the item will be inserted. + \return Iterator to the inserted element or begin() if the item is not inserted. (See + the Effect.) + \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + used). + Whatever T::T() throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. + \par Exception Safety + Basic. + \par Iterator Invalidation + Invalidates all iterators pointing to the circular_buffer_space_optimized (except iterators + equal to end()). + \par Complexity + Linear (in the size of the circular_buffer_space_optimized). + \sa \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator), + \link rinsert(iterator, param_value_type) rinsert(iterator, value_type)\endlink, + \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator) + */ + iterator insert(iterator pos) { + size_type index = pos - begin(); + check_low_capacity(); + return circular_buffer::insert(begin() + index); + } + //! Insert n copies of the item at the specified position. /*! \pre pos is a valid iterator pointing to the circular_buffer_space_optimized or its @@ -863,8 +1078,8 @@ public: \param item The element whose copies will be inserted. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::T(const T&) throws. + Whatever T::operator = (const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -876,7 +1091,7 @@ public: Consider a circular_buffer_space_optimized with the capacity of 6 and the size of 4. Its internal buffer may look like the one below.

|1|2|3|4| | |
- p ---^

After inserting 5 elements at the position p:

+ p ___^

After inserting 5 elements at the position p:

insert(p, (size_t)5, 0);

actually only 4 elements get inserted and elements 1 and 2 are overwritten. This is due to the fact the insert operation preserves the capacity. After insertion the internal buffer looks like this:

|0|0|0|0|3|4|
@@ -911,8 +1126,7 @@ public: \param last The end of the range to be inserted. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. \par Exception Safety Basic. \par Iterator Invalidation @@ -927,7 +1141,7 @@ public: Consider a circular_buffer_space_optimized with the capacity of 6 and the size of 4. Its internal buffer may look like the one below.

|1|2|3|4| | |
- p ---^

After inserting a range of elements at the position p:

+ p ___^

After inserting a range of elements at the position p:

int array[] = { 5, 6, 7, 8, 9 };
insert(p, array, array + 5);

actually only elements 6, 7, 8 and 9 from the specified range get inserted and elements 1 and 2 are overwritten. This is due @@ -962,8 +1176,8 @@ public: the Effect.) \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::T(const T&) throws. + Whatever T::operator = (const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -979,12 +1193,88 @@ public: insert(iterator, size_type, value_type)\endlink, insert(iterator, InputIterator, InputIterator) */ - iterator rinsert(iterator pos, param_value_type item = value_type()) { + iterator rinsert(iterator pos, param_value_type item) { size_type index = pos - begin(); check_low_capacity(); return circular_buffer::rinsert(begin() + index, item); } + //! Insert an element before the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer_space_optimized or its + end. + \post The item will be inserted before the position pos.
+ If the circular_buffer_space_optimized is full, the last element will be overwritten. If the + circular_buffer_space_optimized is full and the pos points to + end(), then the item will not be inserted. If the capacity is 0, + nothing will be inserted.

+ The amount of allocated memory in the internal buffer may be predictively increased. + \param pos An iterator specifying the position before which the item will be inserted. + \param item The element to be inserted. + \return Iterator to the inserted element or end() if the item is not inserted. (See + the Effect.) + \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + used). + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. + \par Exception Safety + Basic. + \par Iterator Invalidation + Invalidates all iterators pointing to the circular_buffer_space_optimized (except iterators + equal to end()). + \par Complexity + Linear (in the size of the circular_buffer_space_optimized). + \sa \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator), + \link insert(iterator, param_value_type) insert(iterator, value_type)\endlink, + \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator) + */ + iterator rinsert(iterator pos, rvalue_type item) { + size_type index = pos - begin(); + check_low_capacity(); + return circular_buffer::rinsert(begin() + index, boost::move(item)); + } + + //! Insert an element before the specified position. + /*! + \pre pos is a valid iterator pointing to the circular_buffer_space_optimized or its + end. + \post The item will be inserted before the position pos.
+ If the circular_buffer_space_optimized is full, the last element will be overwritten. If the + circular_buffer_space_optimized is full and the pos points to + end(), then the item will not be inserted. If the capacity is 0, + nothing will be inserted.

+ The amount of allocated memory in the internal buffer may be predictively increased. + \param pos An iterator specifying the position before which the item will be inserted. + \return Iterator to the inserted element or end() if the item is not inserted. (See + the Effect.) + \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is + used). + Whatever T::T() throws. + Whatever T::T(const T&) throws or nothing if T::T(T&&) is noexcept. + \par Exception Safety + Basic. + \par Iterator Invalidation + Invalidates all iterators pointing to the circular_buffer_space_optimized (except iterators + equal to end()). + \par Complexity + Linear (in the size of the circular_buffer_space_optimized). + \sa \link rinsert(iterator, size_type, param_value_type) + rinsert(iterator, size_type, value_type)\endlink, + rinsert(iterator, InputIterator, InputIterator), + \link insert(iterator, param_value_type) insert(iterator, value_type)\endlink, + \link insert(iterator, size_type, param_value_type) + insert(iterator, size_type, value_type)\endlink, + insert(iterator, InputIterator, InputIterator) + */ + iterator rinsert(iterator pos) { + size_type index = pos - begin(); + check_low_capacity(); + return circular_buffer::rinsert(begin() + index); + } + //! Insert n copies of the item before the specified position. /*! \pre pos is a valid iterator pointing to the circular_buffer_space_optimized or its @@ -999,8 +1289,8 @@ public: \param item The element whose copies will be inserted. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::T(const T&) throws. + Whatever T::operator = (const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -1012,7 +1302,7 @@ public: Consider a circular_buffer_space_optimized with the capacity of 6 and the size of 4. Its internal buffer may look like the one below.

|1|2|3|4| | |
- p ---^

After inserting 5 elements before the position p:

+ p ___^

After inserting 5 elements before the position p:

rinsert(p, (size_t)5, 0);

actually only 4 elements get inserted and elements 3 and 4 are overwritten. This is due to the fact the rinsert operation preserves the capacity. After insertion the internal buffer looks like this:

|1|2|0|0|0|0|
@@ -1048,8 +1338,8 @@ public: \param last The end of the range to be inserted. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::T(const T&) throws. - \throws Whatever T::operator = (const T&) throws. + Whatever T::T(const T&) throws. + Whatever T::operator = (const T&) throws. \par Exception Safety Basic. \par Iterator Invalidation @@ -1064,7 +1354,7 @@ public: Consider a circular_buffer_space_optimized with the capacity of 6 and the size of 4. Its internal buffer may look like the one below.

|1|2|3|4| | |
- p ---^

After inserting a range of elements before the position p:

+ p ___^

After inserting a range of elements before the position p:

int array[] = { 5, 6, 7, 8, 9 };
insert(p, array, array + 5);

actually only elements 5, 6, 7 and 8 from the specified range get inserted and elements 3 and 4 are overwritten. This is due @@ -1094,7 +1384,8 @@ public: element exists. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws or + nothing if T::operator = (T&&) is noexcept. \par Exception Safety Basic. \par Iterator Invalidation @@ -1124,7 +1415,8 @@ public: element exists. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws or + nothing if T::operator = (T&&) is noexcept. \par Exception Safety Basic. \par Iterator Invalidation @@ -1153,7 +1445,8 @@ public: such element exists. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws or + nothing if T::operator = (T&&) is noexcept. \par Exception Safety Basic. \par Iterator Invalidation @@ -1162,7 +1455,7 @@ public: \par Complexity Linear (in the size of the circular_buffer_space_optimized). \note Basically there is no difference between erase(iterator) and this method. It is implemented - only for consistency with the base circular_buffer. + only for consistency with the base circular_buffer. \sa erase(iterator), erase(iterator, iterator), rerase(iterator, iterator), clear() */ @@ -1185,7 +1478,8 @@ public: such element exists. \throws "An allocation error" if memory is exhausted (std::bad_alloc if the standard allocator is used). - \throws Whatever T::operator = (const T&) throws. + Whatever T::operator = (const T&) throws or + nothing if T::operator = (T&&) is noexcept. \par Exception Safety Basic. \par Iterator Invalidation @@ -1195,7 +1489,7 @@ public: Linear (in the size of the circular_buffer_space_optimized). \note Basically there is no difference between erase(iterator, iterator) and this method. It is implemented only for consistency with the base - circular_buffer. + . \sa erase(iterator), erase(iterator, iterator), rerase(iterator), clear() */ @@ -1311,10 +1605,10 @@ private: const false_type&) { BOOST_CB_IS_CONVERTIBLE(Iterator, value_type); // check for invalid iterator type #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) - return init_capacity(capacity_ctrl, first, last, BOOST_ITERATOR_CATEGORY::type()); + return init_capacity(capacity_ctrl, first, last, iterator_category::type()); #else return init_capacity( - capacity_ctrl, first, last, BOOST_DEDUCED_TYPENAME BOOST_ITERATOR_CATEGORY::type()); + capacity_ctrl, first, last, BOOST_DEDUCED_TYPENAME iterator_category::type()); #endif } @@ -1414,7 +1708,7 @@ inline bool operator >= (const circular_buffer_space_optimized& lhs, //! Swap the contents of two space optimized circular buffers. template inline void swap(circular_buffer_space_optimized& lhs, - circular_buffer_space_optimized& rhs) { + circular_buffer_space_optimized& rhs) BOOST_NOEXCEPT { lhs.swap(rhs); } diff --git a/3party/boost/boost/compressed_pair.hpp b/3party/boost/boost/compressed_pair.hpp index e6cd6a074a..a7be0f2ba2 100644 --- a/3party/boost/boost/compressed_pair.hpp +++ b/3party/boost/boost/compressed_pair.hpp @@ -5,7 +5,7 @@ // // See http://www.boost.org/libs/utility for most recent version including documentation. -// See boost/detail/compressed_pair.hpp and boost/detail/ob_compressed_pair.hpp +// See boost/detail/compressed_pair.hpp // for full copyright notices. #ifndef BOOST_COMPRESSED_PAIR_HPP @@ -15,10 +15,6 @@ #include #endif -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -#include -#else #include -#endif #endif // BOOST_COMPRESSED_PAIR_HPP diff --git a/3party/boost/boost/concept/assert.hpp b/3party/boost/boost/concept/assert.hpp index 80eca817ac..cf98179522 100644 --- a/3party/boost/boost/concept/assert.hpp +++ b/3party/boost/boost/concept/assert.hpp @@ -18,8 +18,7 @@ # if !defined(BOOST_NO_OLD_CONCEPT_SUPPORT) \ && !defined(BOOST_NO_SFINAE) \ \ - && !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4)) \ - && !(BOOST_WORKAROUND(__GNUC__, == 2)) + && !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4)) // Note: gcc-2.96 through 3.3.x have some SFINAE, but no ability to // check for the presence of particularmember functions. diff --git a/3party/boost/boost/concept/detail/concept_def.hpp b/3party/boost/boost/concept/detail/concept_def.hpp index 79f628e999..750561ee30 100644 --- a/3party/boost/boost/concept/detail/concept_def.hpp +++ b/3party/boost/boost/concept/detail/concept_def.hpp @@ -15,22 +15,6 @@ // // Also defines an equivalent SomeNameConcept for backward compatibility. // Maybe in the next release we can kill off the "Concept" suffix for good. -#if BOOST_WORKAROUND(__GNUC__, <= 3) -# define BOOST_concept(name, params) \ - template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ - struct name; /* forward declaration */ \ - \ - template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ - struct BOOST_PP_CAT(name,Concept) \ - : name< BOOST_PP_SEQ_ENUM(params) > \ - { \ - /* at least 2.96 and 3.4.3 both need this */ \ - BOOST_PP_CAT(name,Concept)(); \ - }; \ - \ - template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ - struct name -#else # define BOOST_concept(name, params) \ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ struct name; /* forward declaration */ \ @@ -43,7 +27,6 @@ \ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \ struct name -#endif // Helper for BOOST_concept, above. # define BOOST_CONCEPT_typename(r, ignored, index, t) \ diff --git a/3party/boost/boost/concept/detail/concept_undef.hpp b/3party/boost/boost/concept/detail/concept_undef.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/concept/detail/general.hpp b/3party/boost/boost/concept/detail/general.hpp index e3014c1b87..c88a1edd3a 100644 --- a/3party/boost/boost/concept/detail/general.hpp +++ b/3party/boost/boost/concept/detail/general.hpp @@ -65,10 +65,19 @@ struct requirement_ # endif +// Version check from https://svn.boost.org/trac/boost/changeset/82886 +// (boost/static_assert.hpp) +#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) +#define BOOST_CONCEPT_UNUSED_TYPEDEF __attribute__((unused)) +#else +#define BOOST_CONCEPT_UNUSED_TYPEDEF /**/ +#endif + # define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \ typedef ::boost::concepts::detail::instantiate< \ &::boost::concepts::requirement_::failed> \ - BOOST_PP_CAT(boost_concept_check,__LINE__) + BOOST_PP_CAT(boost_concept_check,__LINE__) \ + BOOST_CONCEPT_UNUSED_TYPEDEF }} diff --git a/3party/boost/boost/concept/detail/msvc.hpp b/3party/boost/boost/concept/detail/msvc.hpp index 9fbd2505d2..078dd22330 100644 --- a/3party/boost/boost/concept/detail/msvc.hpp +++ b/3party/boost/boost/concept/detail/msvc.hpp @@ -6,12 +6,17 @@ # include # include +# include # ifdef BOOST_OLD_CONCEPT_SUPPORT # include # include # endif +# ifdef BOOST_MSVC +# pragma warning(push) +# pragma warning(disable:4100) +# endif namespace boost { namespace concepts { @@ -111,4 +116,8 @@ enum \ # endif }} +# ifdef BOOST_MSVC +# pragma warning(pop) +# endif + #endif // BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP diff --git a/3party/boost/boost/concept/requires.hpp b/3party/boost/boost/concept/requires.hpp index 024ba742c9..365ce10045 100644 --- a/3party/boost/boost/concept/requires.hpp +++ b/3party/boost/boost/concept/requires.hpp @@ -5,19 +5,37 @@ # define BOOST_CONCEPT_REQUIRES_DWA2006430_HPP # include -# include # include # include namespace boost { +// unaryfunptr_arg_type from parameter/aux_/parenthesized_type.hpp + +namespace ccheck_aux { + +// A metafunction that transforms void(*)(T) -> T +template +struct unaryfunptr_arg_type; + +template +struct unaryfunptr_arg_type +{ + typedef Arg type; +}; + +template <> +struct unaryfunptr_arg_type +{ + typedef void type; +}; + +} // namespace ccheck_aux + // Template for use in handwritten assertions template struct requires_ : More { -# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typedef typename More::type type; -# endif BOOST_CONCEPT_ASSERT((Model)); }; @@ -32,11 +50,8 @@ struct _requires_ }; template -struct Requires_ : ::boost::parameter::aux::unaryfunptr_arg_type +struct Requires_ : ::boost::ccheck_aux::unaryfunptr_arg_type { -# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) - typedef typename ::boost::parameter::aux::unaryfunptr_arg_type::type type; -# endif }; # if BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(1010)) @@ -45,10 +60,10 @@ struct Requires_ : ::boost::parameter::aux::unaryfunptr_arg_type # define BOOST_CONCEPT_REQUIRES_(r,data,t) + (::boost::_requires_::value) # endif -#if defined(NDEBUG) || BOOST_WORKAROUND(BOOST_MSVC, < 1300) +#if defined(NDEBUG) # define BOOST_CONCEPT_REQUIRES(models, result) \ - typename ::boost::parameter::aux::unaryfunptr_arg_type::type + typename ::boost::ccheck_aux::unaryfunptr_arg_type::type #elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) @@ -56,7 +71,7 @@ struct Requires_ : ::boost::parameter::aux::unaryfunptr_arg_type # define BOOST_CONCEPT_REQUIRES(models, result) \ ::boost::Requires_< \ (0 BOOST_PP_SEQ_FOR_EACH(BOOST_CONCEPT_REQUIRES_, ~, models)), \ - ::boost::parameter::aux::unaryfunptr_arg_type \ + ::boost::ccheck_aux::unaryfunptr_arg_type \ >::type #else diff --git a/3party/boost/boost/concept/usage.hpp b/3party/boost/boost/concept/usage.hpp index 21547c31f4..e73370fb37 100644 --- a/3party/boost/boost/concept/usage.hpp +++ b/3party/boost/boost/concept/usage.hpp @@ -10,12 +10,6 @@ namespace boost { namespace concepts { -# if BOOST_WORKAROUND(__GNUC__, == 2) - -# define BOOST_CONCEPT_USAGE(model) ~model() - -# else - template struct usage_requirements { @@ -37,8 +31,6 @@ struct usage_requirements # endif -# endif - }} // namespace boost::concepts #endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP diff --git a/3party/boost/boost/concept_check.hpp b/3party/boost/boost/concept_check.hpp index bf5a2af783..292f37d3b2 100644 --- a/3party/boost/boost/concept_check.hpp +++ b/3party/boost/boost/concept_check.hpp @@ -32,6 +32,12 @@ # include # include +#if (defined _MSC_VER) +# pragma warning( push ) +# pragma warning( disable : 4510 ) // default constructor could not be generated +# pragma warning( disable : 4610 ) // object 'class' can never be instantiated - user-defined constructor required +#endif + namespace boost { @@ -175,11 +181,6 @@ namespace boost TT b; }; -#if (defined _MSC_VER) -# pragma warning( push ) -# pragma warning( disable : 4510 ) // default constructor could not be generated -# pragma warning( disable : 4610 ) // object 'class' can never be instantiated - user-defined constructor required -#endif // The SGI STL version of Assignable requires copy constructor and operator= BOOST_concept(SGIAssignable,(TT)) { @@ -202,9 +203,6 @@ namespace boost TT a; TT b; }; -#if (defined _MSC_VER) -# pragma warning( pop ) -#endif BOOST_concept(Convertible,(X)(Y)) { @@ -562,10 +560,10 @@ namespace boost : ForwardIterator { BOOST_CONCEPT_USAGE(Mutable_ForwardIterator) { - *i++ = *i; // require postincrement and assignment + *i++ = *j; // require postincrement and assignment } private: - TT i; + TT i, j; }; BOOST_concept(BidirectionalIterator,(TT)) @@ -591,10 +589,10 @@ namespace boost { BOOST_CONCEPT_USAGE(Mutable_BidirectionalIterator) { - *i-- = *i; // require postdecrement and assignment + *i-- = *j; // require postdecrement and assignment } private: - TT i; + TT i, j; }; BOOST_concept(RandomAccessIterator,(TT)) @@ -880,7 +878,7 @@ namespace boost typename BackInsertionSequence::const_reference r = cc.back(); ignore_unused_variable_warning(r); - }; + } S c; typename S::value_type t; }; @@ -1077,6 +1075,10 @@ namespace boost }; } // namespace boost +#if (defined _MSC_VER) +# pragma warning( pop ) +#endif + # include #endif // BOOST_CONCEPT_CHECKS_HPP diff --git a/3party/boost/boost/concept_check/borland.hpp b/3party/boost/boost/concept_check/borland.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/concept_check/general.hpp b/3party/boost/boost/concept_check/general.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/concept_check/has_constraints.hpp b/3party/boost/boost/concept_check/has_constraints.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/concept_check/msvc.hpp b/3party/boost/boost/concept_check/msvc.hpp old mode 100644 new mode 100755 diff --git a/3party/boost/boost/config.hpp b/3party/boost/boost/config.hpp index f37585ebb9..d49bb27cd5 100644 --- a/3party/boost/boost/config.hpp +++ b/3party/boost/boost/config.hpp @@ -1,6 +1,6 @@ // Boost config.hpp configuration header file ------------------------------// -// (C) Copyright John Maddock 2002. +// (C) Copyright John Maddock 2002. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -20,6 +20,10 @@ // if we don't have a user config, then use the default location: #if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG) # define BOOST_USER_CONFIG +#if 0 +// For dependency trackers: +# include +#endif #endif // include it first: #ifdef BOOST_USER_CONFIG @@ -56,15 +60,8 @@ // get config suffix code: #include +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + #endif // BOOST_CONFIG_HPP - - - - - - - - - - - diff --git a/3party/boost/boost/config/auto_link.hpp b/3party/boost/boost/config/auto_link.hpp index e36d06a05a..13cbad4360 100644 --- a/3party/boost/boost/config/auto_link.hpp +++ b/3party/boost/boost/config/auto_link.hpp @@ -151,11 +151,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // vc10: # define BOOST_LIB_TOOLSET "vc100" -# elif defined(BOOST_MSVC) +# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800) // vc11: # define BOOST_LIB_TOOLSET "vc110" +# elif defined(BOOST_MSVC) + + // vc12: +# define BOOST_LIB_TOOLSET "vc120" + # elif defined(__BORLANDC__) // CBuilder 6: @@ -421,3 +426,4 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # undef BOOST_DYN_LINK #endif + diff --git a/3party/boost/boost/config/compiler/borland.hpp b/3party/boost/boost/config/compiler/borland.hpp index 38ac4a9ae5..d2a09024d8 100644 --- a/3party/boost/boost/config/compiler/borland.hpp +++ b/3party/boost/boost/config/compiler/borland.hpp @@ -155,7 +155,7 @@ # define BOOST_NO_CXX11_DECLTYPE # define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS # define BOOST_NO_CXX11_EXTERN_TEMPLATE -# define BOOST_NO_CXX11_RVALUE_REFERENCES +# define BOOST_NO_CXX11_RVALUE_REFERENCES # define BOOST_NO_CXX11_SCOPED_ENUMS # define BOOST_NO_CXX11_STATIC_ASSERT #else @@ -191,6 +191,10 @@ #define BOOST_NO_CXX11_NOEXCEPT #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS #if __BORLANDC__ >= 0x590 # define BOOST_HAS_TR1_HASH @@ -243,7 +247,7 @@ // all versions support __declspec: // #if defined(__STRICT_ANSI__) -// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined # define BOOST_SYMBOL_EXPORT #endif // @@ -282,7 +286,3 @@ #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) - - - - diff --git a/3party/boost/boost/config/compiler/clang.hpp b/3party/boost/boost/config/compiler/clang.hpp index 8e38821bdd..6a178242d7 100644 --- a/3party/boost/boost/config/compiler/clang.hpp +++ b/3party/boost/boost/config/compiler/clang.hpp @@ -1,13 +1,23 @@ // (C) Copyright Douglas Gregor 2010 // -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. // Clang compiler setup. +#define BOOST_HAS_PRAGMA_ONCE + +// When compiling with clang before __has_extension was defined, +// even if one writes 'defined(__has_extension) && __has_extension(xxx)', +// clang reports a compiler error. So the only workaround found is: + +#ifndef __has_extension +#define __has_extension __has_feature +#endif + #if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif @@ -26,9 +36,22 @@ #define BOOST_HAS_NRVO +// Branch prediction hints +#if defined(__has_builtin) +#if __has_builtin(__builtin_expect) +#define BOOST_LIKELY(x) __builtin_expect(x, 1) +#define BOOST_UNLIKELY(x) __builtin_expect(x, 0) +#endif +#endif + // Clang supports "long long" in all compilation modes. #define BOOST_HAS_LONG_LONG +#if defined(__SIZEOF_INT128__) +# define BOOST_HAS_INT128 +#endif + + // // Dynamic shared object (DSO) and dynamic-link library (DLL) support // @@ -38,22 +61,25 @@ # define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default"))) #endif -// -// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through -// between switch labels. -// -#if __cplusplus >= 201103L && defined(__has_warning) -# if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough") -# define BOOST_FALLTHROUGH [[clang::fallthrough]] -# endif -#endif +// +// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through +// between switch labels. +// +#if __cplusplus >= 201103L && defined(__has_warning) +# if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough") +# define BOOST_FALLTHROUGH [[clang::fallthrough]] +# endif +#endif #if !__has_feature(cxx_auto_type) # define BOOST_NO_CXX11_AUTO_DECLARATIONS # define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS #endif -#if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) +// +// Currently clang on Windows using VC++ RTL does not support C++11's char16_t or char32_t +// +#if defined(_MSC_VER) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) # define BOOST_NO_CXX11_CHAR16_T # define BOOST_NO_CXX11_CHAR32_T #endif @@ -114,6 +140,10 @@ # define BOOST_NO_CXX11_RAW_LITERALS #endif +#if !__has_feature(cxx_reference_qualified_functions) +# define BOOST_NO_CXX11_REF_QUALIFIERS +#endif + #if !__has_feature(cxx_generalized_initializers) # define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #endif @@ -146,6 +176,18 @@ # define BOOST_NO_CXX11_USER_DEFINED_LITERALS #endif +#if !(__has_feature(cxx_alignas) || __has_extension(cxx_alignas)) +# define BOOST_NO_CXX11_ALIGNAS +#endif + +#if !__has_feature(cxx_trailing_return) +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#endif + +#if !__has_feature(cxx_inline_namespaces) +# define BOOST_NO_CXX11_INLINE_NAMESPACES +#endif + // Clang always supports variadic macros // Clang always supports extern templates diff --git a/3party/boost/boost/config/compiler/codegear.hpp b/3party/boost/boost/config/compiler/codegear.hpp index 9dd97bc025..6b52282f66 100644 --- a/3party/boost/boost/config/compiler/codegear.hpp +++ b/3party/boost/boost/config/compiler/codegear.hpp @@ -72,6 +72,12 @@ # endif #endif + +// Reportedly, #pragma once is supported since C++ Builder 2010 +#if (__CODEGEARC__ >= 0x620) +# define BOOST_HAS_PRAGMA_ONCE +#endif + // // C++0x macros: // @@ -111,6 +117,10 @@ #define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS // // TR1 macros: @@ -151,7 +161,7 @@ // all versions support __declspec: // #if defined(__STRICT_ANSI__) -// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined # define BOOST_SYMBOL_EXPORT #endif // diff --git a/3party/boost/boost/config/compiler/common_edg.hpp b/3party/boost/boost/config/compiler/common_edg.hpp index 4b5d2d2632..d5589adde1 100644 --- a/3party/boost/boost/config/compiler/common_edg.hpp +++ b/3party/boost/boost/config/compiler/common_edg.hpp @@ -1,10 +1,10 @@ -// (C) Copyright John Maddock 2001 - 2002. -// (C) Copyright Jens Maurer 2001. -// (C) Copyright David Abrahams 2002. -// (C) Copyright Aleksey Gurtovoy 2002. +// (C) Copyright John Maddock 2001 - 2002. +// (C) Copyright Jens Maurer 2001. +// (C) Copyright David Abrahams 2002. +// (C) Copyright Aleksey Gurtovoy 2002. // (C) Copyright Markus Schoepflin 2005. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -33,15 +33,15 @@ #if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES) # define BOOST_NO_TEMPLATE_TEMPLATES -#endif +#endif #if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT) # define BOOST_NO_IS_ABSTRACT -#endif +#endif #if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL) # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -#endif +#endif // See also kai.hpp which checks a Kai-specific symbol for EH # if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) @@ -54,6 +54,11 @@ # define BOOST_NO_LONG_LONG # endif +// Not sure what version was the first to support #pragma once, but +// different EDG-based compilers (e.g. Intel) supported it for ages. +// Add a proper version check if it causes problems. +#define BOOST_HAS_PRAGMA_ONCE + // // C++0x features // @@ -96,6 +101,10 @@ #define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS #ifdef c_plusplus // EDG has "long long" in non-strict mode diff --git a/3party/boost/boost/config/compiler/cray.hpp b/3party/boost/boost/config/compiler/cray.hpp index 4455c5c473..94e932b8d9 100644 --- a/3party/boost/boost/config/compiler/cray.hpp +++ b/3party/boost/boost/config/compiler/cray.hpp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2011. +// (C) Copyright Cray, Inc. 2013 // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -9,8 +10,8 @@ #define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE) -#if _RELEASE < 7 -# error "Boost is not configured for Cray compilers prior to version 7, please try the configure script." +#if _RELEASE < 8 +# error "Boost is not configured for Cray compilers prior to version 8, please try the configure script." #endif // @@ -22,12 +23,14 @@ #include "boost/config/compiler/common_edg.hpp" + // -// Cray peculiarities, probably version 7 specific: // -#undef BOOST_NO_CXX11_AUTO_DECLARATIONS -#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +#define BOOST_NO_CXX11_STATIC_ASSERT +#define BOOST_NO_CXX11_AUTO_DECLARATIONS +#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS #define BOOST_HAS_NRVO +#define BOOST_NO_CXX11_VARIADIC_MACROS #define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_UNICODE_LITERALS @@ -55,6 +58,7 @@ #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #define BOOST_NO_CXX11_CHAR32_T #define BOOST_NO_CXX11_CHAR16_T +#define BOOST_NO_CXX11_REF_QUALIFIERS //#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG #define BOOST_MATH_DISABLE_STD_FPCLASSIFY //#define BOOST_HAS_FPCLASSIFY @@ -62,3 +66,24 @@ #define BOOST_SP_USE_PTHREADS #define BOOST_AC_USE_PTHREADS +/* everything that follows is working around what are thought to be + * compiler shortcomings. Revist all of these regularly. + */ + +//#define BOOST_USE_ENUM_STATIC_ASSERT +//#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS //(this may be implied by the previous #define + +// These constants should be provided by the +// compiler, at least when -hgnu is asserted on the command line. + +#ifndef __ATOMIC_RELAXED +#define __ATOMIC_RELAXED 0 +#define __ATOMIC_CONSUME 1 +#define __ATOMIC_ACQUIRE 2 +#define __ATOMIC_RELEASE 3 +#define __ATOMIC_ACQ_REL 4 +#define __ATOMIC_SEQ_CST 5 +#endif + + + diff --git a/3party/boost/boost/config/compiler/digitalmars.hpp b/3party/boost/boost/config/compiler/digitalmars.hpp index 0206dc3815..7bc49ab4b3 100644 --- a/3party/boost/boost/config/compiler/digitalmars.hpp +++ b/3party/boost/boost/config/compiler/digitalmars.hpp @@ -1,8 +1,8 @@ // Copyright (C) Christof Meerwald 2003 // Copyright (C) Dan Watkins 2003 // -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // Digital Mars C++ compiler setup: @@ -11,15 +11,7 @@ #define BOOST_HAS_LONG_LONG #define BOOST_HAS_PRAGMA_ONCE -#if (__DMC__ <= 0x833) -#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -#define BOOST_NO_TEMPLATE_TEMPLATES -#define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING -#define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS -#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -#endif -#if (__DMC__ <= 0x840) || !defined(BOOST_STRICT_CONFIG) -#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +#if !defined(BOOST_STRICT_CONFIG) #define BOOST_NO_MEMBER_TEMPLATE_FRIENDS #define BOOST_NO_OPERATORS_IN_NAMESPACE #define BOOST_NO_UNREACHABLE_RETURN_DETECTION @@ -30,11 +22,9 @@ // // has macros: -#if (__DMC__ >= 0x840) #define BOOST_HAS_DIRENT_H #define BOOST_HAS_STDINT_H #define BOOST_HAS_WINTHREADS -#endif #if (__DMC__ >= 0x847) #define BOOST_HAS_EXPM1 @@ -87,12 +77,12 @@ #define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS -#if (__DMC__ < 0x812) -#define BOOST_NO_CXX11_VARIADIC_MACROS -#endif - -#if __DMC__ < 0x800 +#if (__DMC__ <= 0x840) #error "Compiler not supported or configured - please reconfigure" #endif // diff --git a/3party/boost/boost/config/compiler/gcc.hpp b/3party/boost/boost/config/compiler/gcc.hpp index b3d12ec65f..ef6b07e27d 100644 --- a/3party/boost/boost/config/compiler/gcc.hpp +++ b/3party/boost/boost/config/compiler/gcc.hpp @@ -1,12 +1,12 @@ -// (C) Copyright John Maddock 2001 - 2003. -// (C) Copyright Darin Adler 2001 - 2002. -// (C) Copyright Jens Maurer 2001 - 2002. -// (C) Copyright Beman Dawes 2001 - 2003. -// (C) Copyright Douglas Gregor 2002. -// (C) Copyright David Abrahams 2002 - 2003. -// (C) Copyright Synge Todo 2003. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright Darin Adler 2001 - 2002. +// (C) Copyright Jens Maurer 2001 - 2002. +// (C) Copyright Beman Dawes 2001 - 2003. +// (C) Copyright Douglas Gregor 2002. +// (C) Copyright David Abrahams 2002 - 2003. +// (C) Copyright Synge Todo 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -20,51 +20,12 @@ #define BOOST_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) #endif -#if __GNUC__ < 3 -# if __GNUC_MINOR__ == 91 - // egcs 1.1 won't parse shared_ptr.hpp without this: -# define BOOST_NO_AUTO_PTR -# endif -# if __GNUC_MINOR__ < 95 - // - // Prior to gcc 2.95 member templates only partly - // work - define BOOST_MSVC6_MEMBER_TEMPLATES - // instead since inline member templates mostly work. - // -# define BOOST_NO_MEMBER_TEMPLATES -# if __GNUC_MINOR__ >= 9 -# define BOOST_MSVC6_MEMBER_TEMPLATES -# endif -# endif - -# if __GNUC_MINOR__ < 96 -# define BOOST_NO_SFINAE -# endif - -# if __GNUC_MINOR__ <= 97 -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# define BOOST_NO_OPERATORS_IN_NAMESPACE -# endif - -# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -# define BOOST_NO_IS_ABSTRACT -# define BOOST_NO_CXX11_EXTERN_TEMPLATE -// Variadic macros do not exist for gcc versions before 3.0 -# define BOOST_NO_CXX11_VARIADIC_MACROS -#elif __GNUC__ == 3 +#if __GNUC__ == 3 # if defined (__PATHSCALE__) # define BOOST_NO_TWO_PHASE_NAME_LOOKUP # define BOOST_NO_IS_ABSTRACT # endif - // - // gcc-3.x problems: - // - // Bug specific to gcc 3.1 and 3.2: - // -# if ((__GNUC_MINOR__ == 1) || (__GNUC_MINOR__ == 2)) -# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -# endif + # if __GNUC_MINOR__ < 4 # define BOOST_NO_IS_ABSTRACT # endif @@ -80,6 +41,11 @@ # endif #endif +// GCC prior to 3.4 had #pragma once too but it didn't work well with filesystem links +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +#define BOOST_HAS_PRAGMA_ONCE +#endif + #if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 ) // Previous versions of GCC did not completely implement value-initialization: // GCC Bug 30111, "Value-initialization of POD base class doesn't initialize @@ -104,38 +70,44 @@ // #if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__) # define BOOST_HAS_THREADS -#endif +#endif // // gcc has "long long" +// Except on Darwin with standard compliance enabled (-pedantic) +// Apple gcc helpfully defines this macro we can query // -#define BOOST_HAS_LONG_LONG +#if !defined(__DARWIN_NO_LONG_LONG) +# define BOOST_HAS_LONG_LONG +#endif // // gcc implements the named return value optimization since version 3.1 // -#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 ) #define BOOST_HAS_NRVO -#endif + +// Branch prediction hints +#define BOOST_LIKELY(x) __builtin_expect(x, 1) +#define BOOST_UNLIKELY(x) __builtin_expect(x, 0) // // Dynamic shared object (DSO) and dynamic-link library (DLL) support // #if __GNUC__ >= 4 # if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__) - // All Win32 development environments, including 64-bit Windows and MinGW, define + // All Win32 development environments, including 64-bit Windows and MinGW, define // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, // so does not define _WIN32 or its variants. # define BOOST_HAS_DECLSPEC -# define BOOST_SYMBOL_EXPORT __attribute__((dllexport)) -# define BOOST_SYMBOL_IMPORT __attribute__((dllimport)) +# define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__)) +# define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__)) # else -# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default"))) +# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default"))) # define BOOST_SYMBOL_IMPORT # endif -# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) +# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default"))) #else -// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined # define BOOST_SYMBOL_EXPORT #endif @@ -158,7 +130,7 @@ // // We disable this if the compiler is really nvcc as it // doesn't actually support __int128 as of CUDA_VERSION=5000 -// even though it defines __SIZEOF_INT128__. +// even though it defines __SIZEOF_INT128__. // See https://svn.boost.org/trac/boost/ticket/8048 // Only re-enable this for nvcc if you're absolutely sure // of the circumstances under which it's supported: @@ -183,7 +155,7 @@ # define BOOST_NO_CXX11_RVALUE_REFERENCES # define BOOST_NO_CXX11_STATIC_ASSERT -// Variadic templates compiler: +// Variadic templates compiler: // http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html # if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4) && defined(__GXX_EXPERIMENTAL_CXX0X__)) # define BOOST_HAS_VARIADIC_TMPL @@ -202,12 +174,19 @@ # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST # define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS # define BOOST_NO_CXX11_DELETED_FUNCTIONS +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# define BOOST_NO_CXX11_INLINE_NAMESPACES #endif #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) # define BOOST_NO_SFINAE_EXPR #endif +// GCC 4.5 forbids declaration of defaulted functions in private or protected sections +#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && (__GNUC__ == 4 && __GNUC_MINOR__ <= 5) +# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS +#endif + // C++0x features in 4.5.0 and later // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) @@ -243,10 +222,17 @@ # define BOOST_NO_CXX11_USER_DEFINED_LITERALS #endif +// C++0x features in 4.8.n and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_NO_CXX11_ALIGNAS +#endif + // C++0x features in 4.8.1 and later // #if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40801) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_CXX11_DECLTYPE_N3276 +# define BOOST_NO_CXX11_REF_QUALIFIERS #endif #ifndef BOOST_COMPILER @@ -261,8 +247,8 @@ #endif // versions check: -// we don't know gcc prior to version 2.90: -#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90) +// we don't know gcc prior to version 3.30: +#if (__GNUC__ < 3) || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3)) # error "Compiler not configured - please reconfigure" #endif // diff --git a/3party/boost/boost/config/compiler/gcc_xml.hpp b/3party/boost/boost/config/compiler/gcc_xml.hpp index 1af2fc1ab6..f04af0618c 100644 --- a/3party/boost/boost/config/compiler/gcc_xml.hpp +++ b/3party/boost/boost/config/compiler/gcc_xml.hpp @@ -1,6 +1,6 @@ -// (C) Copyright John Maddock 2006. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -18,7 +18,7 @@ // #if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(linux) && !defined(__linux) && !defined(__linux__) # define BOOST_HAS_THREADS -#endif +#endif // // gcc has "long long" @@ -44,7 +44,7 @@ # define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS # define BOOST_NO_CXX11_DELETED_FUNCTIONS # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST -# define BOOST_NO_CXX11_SCOPED_ENUMS +# define BOOST_NO_CXX11_SCOPED_ENUMS # define BOOST_NO_SFINAE_EXPR # define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS # define BOOST_NO_CXX11_LAMBDAS @@ -55,6 +55,10 @@ # define BOOST_NO_CXX11_NOEXCEPT # define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX # define BOOST_NO_CXX11_USER_DEFINED_LITERALS +# define BOOST_NO_CXX11_ALIGNAS +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# define BOOST_NO_CXX11_INLINE_NAMESPACES +# define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ diff --git a/3party/boost/boost/config/compiler/hp_acc.hpp b/3party/boost/boost/config/compiler/hp_acc.hpp index 12c791b356..fb63839a57 100644 --- a/3party/boost/boost/config/compiler/hp_acc.hpp +++ b/3party/boost/boost/config/compiler/hp_acc.hpp @@ -1,11 +1,11 @@ -// (C) Copyright John Maddock 2001 - 2003. -// (C) Copyright Jens Maurer 2001 - 2003. -// (C) Copyright Aleksey Gurtovoy 2002. -// (C) Copyright David Abrahams 2002 - 2003. -// (C) Copyright Toon Knapen 2003. +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright Jens Maurer 2001 - 2003. +// (C) Copyright Aleksey Gurtovoy 2002. +// (C) Copyright David Abrahams 2002 - 2003. +// (C) Copyright Toon Knapen 2003. // (C) Copyright Boris Gubenko 2006 - 2007. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -43,7 +43,7 @@ # define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS # define BOOST_NO_IS_ABSTRACT # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -#endif +#endif // optional features rather than defects: #if (__HP_aCC >= 33900) @@ -119,8 +119,12 @@ #define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS -/* +/* See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443436 */ diff --git a/3party/boost/boost/config/compiler/intel.hpp b/3party/boost/boost/config/compiler/intel.hpp index e94540a5ba..cbc9422f61 100644 --- a/3party/boost/boost/config/compiler/intel.hpp +++ b/3party/boost/boost/config/compiler/intel.hpp @@ -27,7 +27,7 @@ #endif // Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x' -#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && (__STDC_HOSTED__ && (BOOST_INTEL_CXX_VERSION <= 1200))) || defined(__GXX_EXPERIMENTAL_CPP0X__) +#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && (__STDC_HOSTED__ && (BOOST_INTEL_CXX_VERSION <= 1200))) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_INTEL_STDCXX0X #endif #if defined(_MSC_VER) && (_MSC_VER >= 1600) @@ -47,11 +47,6 @@ # define BOOST_INTEL_LINUX BOOST_INTEL #endif -#if (BOOST_INTEL_CXX_VERSION <= 500) && defined(_MSC_VER) -# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -# define BOOST_NO_TEMPLATE_TEMPLATES -#endif - #if (BOOST_INTEL_CXX_VERSION <= 600) # if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov) @@ -111,7 +106,7 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # endif #endif -#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1200) +#if (defined(__GNUC__) && (__GNUC__ < 4)) || (defined(_WIN32) && (BOOST_INTEL_CXX_VERSION <= 1200)) || (BOOST_INTEL_CXX_VERSION <= 1200) // GCC or VC emulation: #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif @@ -154,10 +149,18 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_HAS_NRVO #endif +// Branch prediction hints +// I'm not sure 8.0 was the first version to support these builtins, +// update the condition if the version is not accurate. (Andrey Semashev) +#if defined(__GNUC__) && BOOST_INTEL_CXX_VERSION >= 800 +#define BOOST_LIKELY(x) __builtin_expect(x, 1) +#define BOOST_UNLIKELY(x) __builtin_expect(x, 0) +#endif + // // versions check: -// we don't support Intel prior to version 5.0: -#if BOOST_INTEL_CXX_VERSION < 500 +// we don't support Intel prior to version 6.0: +#if BOOST_INTEL_CXX_VERSION < 600 # error "Compiler not supported or configured - please reconfigure" #endif @@ -173,10 +176,10 @@ template<> struct assert_intrinsic_wchar_t {}; // // An attempt to value-initialize a pointer-to-member may trigger an -// internal error on Intel <= 11.1 (last checked version), as was +// internal error on Intel <= 11.1 (last checked version), as was // reported by John Maddock, Intel support issue 589832, May 2010. // Moreover, according to test results from Huang-Vista-x86_32_intel, -// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some +// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some // cases when it should be value-initialized. // (Niels Dekker, LKEB, May 2010) // Apparently Intel 12.1 (compiler version number 9999 !!) has the same issue (compiler regression). @@ -221,10 +224,11 @@ template<> struct assert_intrinsic_wchar_t {}; # undef BOOST_NO_CXX11_DECLTYPE # undef BOOST_NO_CXX11_AUTO_DECLARATIONS # undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS +# undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES #endif // icl Version 12.1.0.233 Build 20110811 and possibly some other builds -// had an incorrect __INTEL_COMPILER value of 9999. Intel say this has been fixed. +// had an incorrect __INTEL_COMPILER value of 9999. Intel say this has been fixed. #if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION > 1200) # undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS # undef BOOST_NO_CXX11_NULLPTR @@ -234,8 +238,45 @@ template<> struct assert_intrinsic_wchar_t {}; # undef BOOST_NO_CXX11_VARIADIC_TEMPLATES // http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/ -// continues to list scoped enum support as "Partial" -//# undef BOOST_NO_CXX11_SCOPED_ENUMS +// continues to list scoped enum support as "Partial" +//# undef BOOST_NO_CXX11_SCOPED_ENUMS +#endif +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(_MSC_VER) +# undef BOOST_NO_CXX11_INLINE_NAMESPACES +# undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS +// This one generates internal compiler errors in multiprecision, disabled for now: +//# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +// This one generates errors when used with conditional exception specifications, for example in multiprecision: +//# undef BOOST_NO_CXX11_NOEXCEPT +# undef BOOST_NO_CXX11_RANGE_BASED_FOR +# undef BOOST_NO_CXX11_SCOPED_ENUMS +# undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +#endif +#if (BOOST_INTEL_CXX_VERSION >= 1310) +# undef BOOST_NO_SFINAE_EXPR +#endif +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1400) && !defined(_MSC_VER) +# undef BOOST_NO_CXX11_UNICODE_LITERALS +# undef BOOST_NO_CXX11_RAW_LITERALS +// This one generates errors when used with conditional exception specifications, for example in multiprecision: +//# undef BOOST_NO_CXX11_NOEXCEPT +// This breaks multiprecision: +//# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS +# undef BOOST_NO_CXX11_HDR_THREAD +# undef BOOST_NO_CXX11_CHAR32_T +# undef BOOST_NO_CXX11_CHAR16_T +# undef BOOST_NO_CXX11_REF_QUALIFIERS +#endif + +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION <= 1310) +# define BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +#endif + +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION == 1400) +// A regression in Intel's compiler means that seems to be broken in this release as well as : +# define BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_TUPLE #endif #if defined(_MSC_VER) && (_MSC_VER <= 1700) @@ -247,6 +288,9 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_CXX11_DELETED_FUNCTIONS # define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS # define BOOST_NO_CXX11_TEMPLATE_ALIASES +# if(BOOST_INTEL_CXX_VERSION < 1310) +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# endif #endif #if (BOOST_INTEL_CXX_VERSION < 1200) @@ -256,9 +300,17 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_FENV_H #endif +#if defined(_MSC_VER) && (_MSC_VER >= 1600) +# define BOOST_HAS_STDINT_H +#endif + +#if defined(__LP64__) && defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1310) +# define BOOST_HAS_INT128 +#endif + // // last known and checked version: -#if (BOOST_INTEL_CXX_VERSION > 1200) +#if (BOOST_INTEL_CXX_VERSION > 1310) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # elif defined(_MSC_VER) diff --git a/3party/boost/boost/config/compiler/metrowerks.hpp b/3party/boost/boost/config/compiler/metrowerks.hpp index 4ca8af8a46..c000215bb6 100644 --- a/3party/boost/boost/config/compiler/metrowerks.hpp +++ b/3party/boost/boost/config/compiler/metrowerks.hpp @@ -1,11 +1,11 @@ -// (C) Copyright John Maddock 2001. -// (C) Copyright Darin Adler 2001. -// (C) Copyright Peter Dimov 2001. -// (C) Copyright David Abrahams 2001 - 2002. -// (C) Copyright Beman Dawes 2001 - 2003. -// (C) Copyright Stefan Slapeta 2004. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// (C) Copyright John Maddock 2001. +// (C) Copyright Darin Adler 2001. +// (C) Copyright Peter Dimov 2001. +// (C) Copyright David Abrahams 2001 - 2002. +// (C) Copyright Beman Dawes 2001 - 2003. +// (C) Copyright Stefan Slapeta 2004. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -15,7 +15,7 @@ // locale support is disabled when linking with the dynamic runtime # ifdef _MSL_NO_LOCALE # define BOOST_NO_STD_LOCALE -# endif +# endif # if __MWERKS__ <= 0x2301 // 5.3 # define BOOST_NO_FUNCTION_TEMPLATE_ORDERING @@ -90,7 +90,7 @@ #if __MWERKS__ > 0x3206 && __option(rvalue_refs) # define BOOST_HAS_RVALUE_REFS #else -# define BOOST_NO_CXX11_RVALUE_REFERENCES +# define BOOST_NO_CXX11_RVALUE_REFERENCES #endif #define BOOST_NO_CXX11_AUTO_DECLARATIONS #define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS @@ -120,6 +120,10 @@ #define BOOST_NO_CXX11_VARIADIC_MACROS #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) diff --git a/3party/boost/boost/config/compiler/mpw.hpp b/3party/boost/boost/config/compiler/mpw.hpp index 7ef38efa66..7a4ffa1507 100644 --- a/3party/boost/boost/config/compiler/mpw.hpp +++ b/3party/boost/boost/config/compiler/mpw.hpp @@ -1,7 +1,7 @@ -// (C) Copyright John Maddock 2001 - 2002. -// (C) Copyright Aleksey Gurtovoy 2002. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// (C) Copyright John Maddock 2001 - 2002. +// (C) Copyright Aleksey Gurtovoy 2002. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -69,7 +69,10 @@ #define BOOST_NO_CXX11_VARIADIC_MACROS #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS - +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS // // versions check: // we don't support MPW prior to version 8.9: diff --git a/3party/boost/boost/config/compiler/nvcc.hpp b/3party/boost/boost/config/compiler/nvcc.hpp index 03203fb55b..bbe81f6ee5 100644 --- a/3party/boost/boost/config/compiler/nvcc.hpp +++ b/3party/boost/boost/config/compiler/nvcc.hpp @@ -14,15 +14,3 @@ // NVIDIA Specific support // BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device #define BOOST_GPU_ENABLED __host__ __device__ - -// Boost support macro for NVCC -// NVCC Basically behaves like some flavor of MSVC6 + some specific quirks -#ifdef __GNUC__ - -#include - -#elif defined(_MSC_VER) - -#include - -#endif diff --git a/3party/boost/boost/config/compiler/pathscale.hpp b/3party/boost/boost/config/compiler/pathscale.hpp index 07d14609c2..0625d7a1eb 100644 --- a/3party/boost/boost/config/compiler/pathscale.hpp +++ b/3party/boost/boost/config/compiler/pathscale.hpp @@ -1,7 +1,7 @@ // (C) Copyright Bryce Lelbach 2011 -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -77,5 +77,8 @@ # define BOOST_NO_CXX11_HDR_CODECVT # define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_USER_DEFINED_LITERALS +# define BOOST_NO_CXX11_ALIGNAS +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +# define BOOST_NO_CXX11_INLINE_NAMESPACES +# define BOOST_NO_CXX11_REF_QUALIFIERS #endif - diff --git a/3party/boost/boost/config/compiler/pgi.hpp b/3party/boost/boost/config/compiler/pgi.hpp index 64c0d753aa..5cf61fa948 100644 --- a/3party/boost/boost/config/compiler/pgi.hpp +++ b/3party/boost/boost/config/compiler/pgi.hpp @@ -41,6 +41,9 @@ #define BOOST_HAS_THREADS #define BOOST_HAS_NRVO #define BOOST_HAS_LONG_LONG +#if defined(linux) || defined(__linux) || defined(__linux__) +# define BOOST_HAS_STDINT_H +#endif // options --enable-test wants undefined #undef BOOST_NO_STDC_NAMESPACE @@ -112,6 +115,10 @@ #define BOOST_NO_CXX11_HDR_CHRONO #define BOOST_NO_CXX11_HDR_ARRAY #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS // // version check: diff --git a/3party/boost/boost/config/compiler/sunpro_cc.hpp b/3party/boost/boost/config/compiler/sunpro_cc.hpp index 88421ee402..f2c857629a 100644 --- a/3party/boost/boost/config/compiler/sunpro_cc.hpp +++ b/3party/boost/boost/config/compiler/sunpro_cc.hpp @@ -1,10 +1,10 @@ -// (C) Copyright John Maddock 2001. -// (C) Copyright Jens Maurer 2001 - 2003. -// (C) Copyright Peter Dimov 2002. -// (C) Copyright Aleksey Gurtovoy 2002 - 2003. -// (C) Copyright David Abrahams 2002. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// (C) Copyright John Maddock 2001. +// (C) Copyright Jens Maurer 2001 - 2003. +// (C) Copyright Peter Dimov 2002. +// (C) Copyright Aleksey Gurtovoy 2002 - 2003. +// (C) Copyright David Abrahams 2002. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -34,7 +34,7 @@ # define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION # endif -# if (__SUNPRO_CC <= 0x530) +# if (__SUNPRO_CC <= 0x530) // Requesting debug info (-g) with Boost.Python results // in an internal compiler error for "static const" // initialized in-class. @@ -57,7 +57,7 @@ # define BOOST_NO_INTEGRAL_INT64_T # endif -# if (__SUNPRO_CC < 0x570) +# if (__SUNPRO_CC < 0x570) # define BOOST_NO_TEMPLATE_TEMPLATES // see http://lists.boost.org/MailArchives/boost/msg47184.php // and http://lists.boost.org/MailArchives/boost/msg47220.php @@ -65,7 +65,7 @@ # define BOOST_NO_SFINAE # define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS # endif -# if (__SUNPRO_CC <= 0x580) +# if (__SUNPRO_CC <= 0x580) # define BOOST_NO_IS_ABSTRACT # endif @@ -128,6 +128,10 @@ #define BOOST_NO_CXX11_VARIADIC_MACROS #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS // // Version diff --git a/3party/boost/boost/config/compiler/vacpp.hpp b/3party/boost/boost/config/compiler/vacpp.hpp index 47b990315b..bb7d5f5065 100644 --- a/3party/boost/boost/config/compiler/vacpp.hpp +++ b/3party/boost/boost/config/compiler/vacpp.hpp @@ -1,10 +1,10 @@ -// (C) Copyright John Maddock 2001 - 2003. -// (C) Copyright Toon Knapen 2001 - 2003. -// (C) Copyright Lie-Quan Lee 2001. -// (C) Copyright Markus Schoepflin 2002 - 2003. -// (C) Copyright Beman Dawes 2002 - 2003. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright Toon Knapen 2001 - 2003. +// (C) Copyright Lie-Quan Lee 2001. +// (C) Copyright Markus Schoepflin 2002 - 2003. +// (C) Copyright Beman Dawes 2002 - 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -16,7 +16,7 @@ # define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS #endif -#if (__IBMCPP__ <= 502) +#if (__IBMCPP__ <= 502) // Actually the compiler supports inclass member initialization but it // requires a definition for the class member and it doesn't recognize // it as an integral constant expression when used as a template argument. @@ -30,9 +30,9 @@ #endif #if (__IBMCPP__ <= 1110) -// XL C++ V11.1 and earlier versions may not always value-initialize -// a temporary object T(), when T is a non-POD aggregate class type. -// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it +// XL C++ V11.1 and earlier versions may not always value-initialize +// a temporary object T(), when T is a non-POD aggregate class type. +// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it // high priority. -- Niels Dekker (LKEB), May 2010. # define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #endif @@ -126,6 +126,7 @@ #if ! __C99_MACRO_WITH_VA_ARGS # define BOOST_NO_CXX11_VARIADIC_MACROS #endif - - - +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES +#define BOOST_NO_CXX11_INLINE_NAMESPACES +#define BOOST_NO_CXX11_REF_QUALIFIERS diff --git a/3party/boost/boost/config/compiler/visualc.hpp b/3party/boost/boost/config/compiler/visualc.hpp index 83e8e3d79c..842f086515 100644 --- a/3party/boost/boost/config/compiler/visualc.hpp +++ b/3party/boost/boost/config/compiler/visualc.hpp @@ -1,11 +1,11 @@ -// (C) Copyright John Maddock 2001 - 2003. -// (C) Copyright Darin Adler 2001 - 2002. -// (C) Copyright Peter Dimov 2001. -// (C) Copyright Aleksey Gurtovoy 2002. -// (C) Copyright David Abrahams 2002 - 2003. -// (C) Copyright Beman Dawes 2002 - 2003. -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright Darin Adler 2001 - 2002. +// (C) Copyright Peter Dimov 2001. +// (C) Copyright Aleksey Gurtovoy 2002. +// (C) Copyright David Abrahams 2002 - 2003. +// (C) Copyright Beman Dawes 2002 - 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for most recent version. @@ -34,67 +34,20 @@ // Attempt to suppress VC6 warnings about the length of decorated names (obsolete): #pragma warning( disable : 4503 ) // warning: decorated name length exceeded +#define BOOST_HAS_PRAGMA_ONCE + // // versions check: -// we don't support Visual C++ prior to version 6: -#if _MSC_VER < 1200 +// we don't support Visual C++ prior to version 7.1: +#if _MSC_VER < 1310 # error "Compiler not supported or configured - please reconfigure" #endif -#if _MSC_VER < 1300 // 1200 == VC++ 6.0, 1200-1202 == eVC++4 -# pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# define BOOST_NO_VOID_RETURNS -# define BOOST_NO_EXCEPTION_STD_NAMESPACE - -# if _MSC_VER == 1202 -# define BOOST_NO_STD_TYPEINFO -# endif - +#if _MSC_FULL_VER < 180020827 +# define BOOST_NO_FENV_H #endif -/// Visual Studio has no fenv.h -#define BOOST_NO_FENV_H - -#if (_MSC_VER < 1310) // 130X == VC++ 7.0 - -# if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za -# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -# endif - -# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_NO_PRIVATE_IN_AGGREGATE -# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -# define BOOST_NO_INTEGRAL_INT64_T -# define BOOST_NO_DEDUCED_TYPENAME -# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE - -// VC++ 6/7 has member templates but they have numerous problems including -// cases of silent failure, so for safety we define: -# define BOOST_NO_MEMBER_TEMPLATES -// For VC++ experts wishing to attempt workarounds, we define: -# define BOOST_MSVC6_MEMBER_TEMPLATES - -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS -# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# define BOOST_NO_CV_VOID_SPECIALIZATIONS -# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING -# define BOOST_NO_USING_TEMPLATE -# define BOOST_NO_SWPRINTF -# define BOOST_NO_TEMPLATE_TEMPLATES -# define BOOST_NO_SFINAE -# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS -# define BOOST_NO_IS_ABSTRACT -# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS -// TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)? -# if (_MSC_VER >= 1300) -# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -# endif - -#endif - -#if _MSC_VER < 1400 +#if _MSC_VER < 1400 // although a conforming signature for swprint exists in VC7.1 // it appears not to actually work: # define BOOST_NO_SWPRINTF @@ -104,11 +57,6 @@ # define BOOST_NO_CXX11_VARIADIC_MACROS #endif -#if defined(UNDER_CE) -// Windows CE does not have a conforming signature for swprintf -# define BOOST_NO_SWPRINTF -#endif - #if _MSC_VER < 1500 // 140X == VC++ 8.0 # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS #endif @@ -119,9 +67,9 @@ #endif -// MSVC (including the latest checked version) has not yet completely +// MSVC (including the latest checked version) has not yet completely // implemented value-initialization, as is reported: -// "VC++ does not value-initialize members of derived classes without +// "VC++ does not value-initialize members of derived classes without // user-declared constructor", reported in 2009 by Sylvester Hesp: // https://connect.microsoft.com/VisualStudio/feedback/details/484295 // "Presence of copy constructor breaks member class initialization", @@ -138,29 +86,17 @@ # define BOOST_NO_INTRINSIC_WCHAR_T #endif -#if defined(_WIN32_WCE) || defined(UNDER_CE) -# define BOOST_NO_SWPRINTF -#endif - -// we have ThreadEx or GetSystemTimeAsFileTime unless we're running WindowsCE -#if !defined(_WIN32_WCE) && !defined(UNDER_CE) -# define BOOST_HAS_THREADEX -# define BOOST_HAS_GETSYSTEMTIMEASFILETIME -#endif - -// -// check for exception handling support: +// +// check for exception handling support: #if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS) -# define BOOST_NO_EXCEPTIONS -#endif +# define BOOST_NO_EXCEPTIONS +#endif // // __int64 support: // -#if (_MSC_VER >= 1200) -# define BOOST_HAS_MS_INT64 -#endif -#if (_MSC_VER >= 1310) && (defined(_MSC_EXTENSIONS) || (_MSC_VER >= 1400)) +#define BOOST_HAS_MS_INT64 +#if defined(_MSC_EXTENSIONS) || (_MSC_VER >= 1400) # define BOOST_HAS_LONG_LONG #else # define BOOST_NO_LONG_LONG @@ -169,7 +105,7 @@ # define BOOST_HAS_NRVO #endif // -// disable Win32 API's if compiler extentions are +// disable Win32 API's if compiler extensions are // turned off: // #if !defined(_MSC_EXTENSIONS) && !defined(BOOST_DISABLE_WIN32) @@ -210,38 +146,40 @@ # define BOOST_HAS_STDINT_H #endif -// C++ features supported by VC++ 11 (aka 2012) +// C++11 features supported by VC++ 11 (aka 2012) // #if _MSC_VER < 1700 # define BOOST_NO_CXX11_RANGE_BASED_FOR # define BOOST_NO_CXX11_SCOPED_ENUMS #endif // _MSC_VER < 1700 -// C++11 features supported by VC++ 11 (aka 2012) November 2012 CTP -// Because the CTP is unsupported, unrelease, and only alpha quality, -// it is only supported if BOOST_MSVC_ENABLE_2012_NOV_CTP is defined. +// C++11 features supported by VC++ 12 (aka 2013). // -#if _MSC_FULL_VER < 170051025 || !defined(BOOST_MSVC_ENABLE_2012_NOV_CTP) +#if _MSC_FULL_VER < 180020827 +# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS +# define BOOST_NO_CXX11_DELETED_FUNCTIONS # define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS # define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS # define BOOST_NO_CXX11_RAW_LITERALS +# define BOOST_NO_CXX11_TEMPLATE_ALIASES +# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES # define BOOST_NO_CXX11_VARIADIC_TEMPLATES # define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX +# define BOOST_NO_CXX11_DECLTYPE_N3276 #endif // C++11 features not supported by any versions #define BOOST_NO_CXX11_CHAR16_T #define BOOST_NO_CXX11_CHAR32_T #define BOOST_NO_CXX11_CONSTEXPR -#define BOOST_NO_CXX11_DECLTYPE_N3276 -#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS -#define BOOST_NO_CXX11_DELETED_FUNCTIONS #define BOOST_NO_CXX11_NOEXCEPT -#define BOOST_NO_CXX11_TEMPLATE_ALIASES +#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_SFINAE_EXPR #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_CXX11_USER_DEFINED_LITERALS +#define BOOST_NO_CXX11_ALIGNAS +#define BOOST_NO_CXX11_INLINE_NAMESPACES // // prefix and suffix headers: @@ -255,17 +193,13 @@ #ifndef BOOST_COMPILER // TODO: -// these things are mostly bogus. 1200 means version 12.0 of the compiler. The +// these things are mostly bogus. 1200 means version 12.0 of the compiler. The // artificial versions assigned to them only refer to the versions of some IDE // these compilers have been shipped with, and even that is not all of it. Some // were shipped with freely downloadable SDKs, others as crosscompilers in eVC. // IOW, you can't use these 'versions' in any sensible way. Sorry. # if defined(UNDER_CE) -# if _MSC_VER < 1200 - // Note: these are so far off, they are not really supported -# elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202 -# define BOOST_COMPILER_VERSION evc4.0 -# elif _MSC_VER < 1400 +# if _MSC_VER < 1400 // Note: I'm not aware of any CE compiler with version 13xx # if defined(BOOST_ASSERT_CONFIG) # error "Unknown EVC++ compiler version - please run the configure tests and report the results" @@ -280,6 +214,8 @@ # define BOOST_COMPILER_VERSION evc10 # elif _MSC_VER < 1800 # define BOOST_COMPILER_VERSION evc11 +# elif _MSC_VER < 1900 +# define BOOST_COMPILER_VERSION evc12 # else # if defined(BOOST_ASSERT_CONFIG) # error "Unknown EVC++ compiler version - please run the configure tests and report the results" @@ -288,11 +224,11 @@ # endif # endif # else -# if _MSC_VER < 1200 - // Note: these are so far off, they are not really supported +# if _MSC_VER < 1310 + // Note: Versions up to 7.0 aren't supported. # define BOOST_COMPILER_VERSION 5.0 # elif _MSC_VER < 1300 -# define BOOST_COMPILER_VERSION 6.0 +# define BOOST_COMPILER_VERSION 6.0 # elif _MSC_VER < 1310 # define BOOST_COMPILER_VERSION 7.0 # elif _MSC_VER < 1400 @@ -304,7 +240,9 @@ # elif _MSC_VER < 1700 # define BOOST_COMPILER_VERSION 10.0 # elif _MSC_VER < 1800 -# define BOOST_COMPILER_VERSION 11.0 +# define BOOST_COMPILER_VERSION 11.0 +# elif _MSC_VER < 1900 +# define BOOST_COMPILER_VERSION 12.0 # else # define BOOST_COMPILER_VERSION _MSC_VER # endif @@ -314,8 +252,8 @@ #endif // -// last known and checked version is 1700 (VC11, aka 2011): -#if (_MSC_VER > 1700) +// last known and checked version is 18.00.20827.3 (VC12 RC, aka 2013 RC): +#if (_MSC_VER > 1800 && _MSC_FULL_VER > 180020827) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else diff --git a/3party/boost/boost/config/platform/win32.hpp b/3party/boost/boost/config/platform/win32.hpp index 6ab59f4e91..2a91519e20 100644 --- a/3party/boost/boost/config/platform/win32.hpp +++ b/3party/boost/boost/config/platform/win32.hpp @@ -55,16 +55,23 @@ // all translation units (needed for shared_ptr etc). // -#ifdef _WIN32_WCE -# define BOOST_NO_ANSI_APIS -#else -# define BOOST_HAS_GETSYSTEMTIMEASFILETIME -#endif - #ifndef BOOST_HAS_PTHREADS # define BOOST_HAS_WINTHREADS #endif +// +// WinCE configuration: +// +#if defined(_WIN32_WCE) || defined(UNDER_CE) +# define BOOST_NO_ANSI_APIS +// Windows CE does not have a conforming signature for swprintf +# define BOOST_NO_SWPRINTF +#else +# define BOOST_HAS_GETSYSTEMTIMEASFILETIME +# define BOOST_HAS_THREADEX +# define BOOST_HAS_GETSYSTEMTIMEASFILETIME +#endif + #ifndef BOOST_DISABLE_WIN32 // WEK: Added #define BOOST_HAS_FTIME diff --git a/3party/boost/boost/config/select_compiler_config.hpp b/3party/boost/boost/config/select_compiler_config.hpp index 8683d65802..62053ba061 100644 --- a/3party/boost/boost/config/select_compiler_config.hpp +++ b/3party/boost/boost/config/select_compiler_config.hpp @@ -13,6 +13,12 @@ // locate which compiler we are using and define // BOOST_COMPILER_CONFIG as needed: +#if defined __CUDACC__ +// NVIDIA CUDA C++ compiler for GPU +# include "boost/config/compiler/nvcc.hpp" + +#endif + #if defined(__GCCXML__) // GCC-XML emulates other compilers, it has to appear first here! # define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc_xml.hpp" @@ -21,10 +27,6 @@ // EDG based Cray compiler: # define BOOST_COMPILER_CONFIG "boost/config/compiler/cray.hpp" -#elif defined __CUDACC__ -// NVIDIA CUDA C++ compiler for GPU -# define BOOST_COMPILER_CONFIG "boost/config/compiler/nvcc.hpp" - #elif defined __COMO__ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" @@ -110,3 +112,32 @@ # error "Unknown compiler - please configure (http://www.boost.org/libs/config/config.htm#configuring) and report the results to the main boost mailing list (http://www.boost.org/more/mailing_lists.htm#main)" #endif + +#if 0 +// +// This section allows dependency scanners to find all the headers we *might* include: +// +#include "boost/config/compiler/gcc_xml.hpp" +#include "boost/config/compiler/cray.hpp" +#include "boost/config/compiler/comeau.hpp" +#include "boost/config/compiler/pathscale.hpp" +#include "boost/config/compiler/intel.hpp" +#include "boost/config/compiler/clang.hpp" +#include "boost/config/compiler/digitalmars.hpp" +#include "boost/config/compiler/gcc.hpp" +#include "boost/config/compiler/kai.hpp" +#include "boost/config/compiler/sgi_mipspro.hpp" +#include "boost/config/compiler/compaq_cxx.hpp" +#include "boost/config/compiler/greenhills.hpp" +#include "boost/config/compiler/codegear.hpp" +#include "boost/config/compiler/borland.hpp" +#include "boost/config/compiler/metrowerks.hpp" +#include "boost/config/compiler/sunpro_cc.hpp" +#include "boost/config/compiler/hp_acc.hpp" +#include "boost/config/compiler/mpw.hpp" +#include "boost/config/compiler/vacpp.hpp" +#include "boost/config/compiler/pgi.hpp" +#include "boost/config/compiler/visualc.hpp" + +#endif + diff --git a/3party/boost/boost/config/select_platform_config.hpp b/3party/boost/boost/config/select_platform_config.hpp index 2af61d2d46..2dddc6a2f6 100644 --- a/3party/boost/boost/config/select_platform_config.hpp +++ b/3party/boost/boost/config/select_platform_config.hpp @@ -101,5 +101,29 @@ #endif +#if 0 +// +// This section allows dependency scanners to find all the files we *might* include: +// +# include "boost/config/platform/linux.hpp" +# include "boost/config/platform/bsd.hpp" +# include "boost/config/platform/solaris.hpp" +# include "boost/config/platform/irix.hpp" +# include "boost/config/platform/hpux.hpp" +# include "boost/config/platform/cygwin.hpp" +# include "boost/config/platform/win32.hpp" +# include "boost/config/platform/beos.hpp" +# include "boost/config/platform/macos.hpp" +# include "boost/config/platform/aix.hpp" +# include "boost/config/platform/amigaos.hpp" +# include "boost/config/platform/qnxnto.hpp" +# include "boost/config/platform/vxworks.hpp" +# include "boost/config/platform/symbian.hpp" +# include "boost/config/platform/cray.hpp" +# include "boost/config/platform/vms.hpp" +# include + +#endif + diff --git a/3party/boost/boost/config/select_stdlib_config.hpp b/3party/boost/boost/config/select_stdlib_config.hpp index 96ede00222..6ae860b027 100644 --- a/3party/boost/boost/config/select_stdlib_config.hpp +++ b/3party/boost/boost/config/select_stdlib_config.hpp @@ -81,5 +81,19 @@ #endif - +#if 0 +// +// This section allows dependency scanners to find all the files we *might* include: +// +# include "boost/config/stdlib/stlport.hpp" +# include "boost/config/stdlib/libcomo.hpp" +# include "boost/config/stdlib/roguewave.hpp" +# include "boost/config/stdlib/libcpp.hpp" +# include "boost/config/stdlib/libstdcpp3.hpp" +# include "boost/config/stdlib/sgi.hpp" +# include "boost/config/stdlib/msl.hpp" +# include "boost/config/stdlib/vacpp.hpp" +# include "boost/config/stdlib/modena.hpp" +# include "boost/config/stdlib/dinkumware.hpp" +#endif diff --git a/3party/boost/boost/config/stdlib/dinkumware.hpp b/3party/boost/boost/config/stdlib/dinkumware.hpp index cef6ff24f6..6fb6322acb 100644 --- a/3party/boost/boost/config/stdlib/dinkumware.hpp +++ b/3party/boost/boost/config/stdlib/dinkumware.hpp @@ -86,9 +86,18 @@ # define BOOST_NO_STD_LOCALE #endif +// Fix for VC++ 8.0 on up ( I do not have a previous version to test ) +// or clang-cl. If exceptions are off you must manually include the +// header before including the header. Admittedly +// trying to use Boost libraries or the standard C++ libraries without +// exception support is not suggested but currently clang-cl ( v 3.4 ) +// does not support exceptions and must be compiled with exceptions off. +#if !_HAS_EXCEPTIONS && ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER))) +#include +#endif #include #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) -# define BOOST_NO_STD_TYPEINFO +# define BOOST_NO_STD_TYPEINFO #endif // C++0x headers implemented in 520 (as shipped by Microsoft) @@ -110,7 +119,8 @@ # define BOOST_NO_CXX11_SMART_PTR #endif -#if (!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE) +#if ((!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)) \ + && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 610) # define BOOST_NO_CXX11_HDR_TUPLE #endif @@ -124,14 +134,22 @@ # define BOOST_NO_CXX11_HDR_MUTEX # define BOOST_NO_CXX11_HDR_RATIO # define BOOST_NO_CXX11_HDR_THREAD -# define BOOST_NO_CXX11_ALLOCATOR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR #endif +// C++0x headers implemented in 610 (as shipped by Microsoft) // -// C++0x headers not yet (fully) implemented: -// +#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610 # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_ALLOCATOR +// 540 has std::align but it is not a conforming implementation +# define BOOST_NO_CXX11_STD_ALIGN +#endif + +// 520..610 have std::addressof, but it doesn't support functions +// +# define BOOST_NO_CXX11_ADDRESSOF #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER @@ -144,12 +162,3 @@ #else # define BOOST_STDLIB "Dinkumware standard library version 1.x" #endif - - - - - - - - - diff --git a/3party/boost/boost/config/stdlib/libcomo.hpp b/3party/boost/boost/config/stdlib/libcomo.hpp index 29490f1b13..5aacfb2a7c 100644 --- a/3party/boost/boost/config/stdlib/libcomo.hpp +++ b/3party/boost/boost/config/stdlib/libcomo.hpp @@ -58,6 +58,9 @@ # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_STD_ALIGN +# define BOOST_NO_CXX11_ADDRESSOF // // Intrinsic type_traits support. diff --git a/3party/boost/boost/config/stdlib/libcpp.hpp b/3party/boost/boost/config/stdlib/libcpp.hpp index 3d574407ec..88184ef90f 100644 --- a/3party/boost/boost/config/stdlib/libcpp.hpp +++ b/3party/boost/boost/config/stdlib/libcpp.hpp @@ -23,6 +23,14 @@ # define BOOST_NO_CXX11_HDR_TUPLE #endif +// BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11 +// allocator model. The C++11 allocator model requires a conforming +// std::allocator_traits which is only possible with C++11 template +// aliases since members rebind_alloc and rebind_traits require it. +#if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES) +# define BOOST_NO_CXX11_ALLOCATOR +#endif + // // These appear to be unusable/incomplete so far: // @@ -30,6 +38,7 @@ # define BOOST_NO_CXX11_HDR_FUTURE # define BOOST_NO_CXX11_HDR_TYPE_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR +# define BOOST_NO_CXX11_HDR_ATOMIC // libc++ uses a non-standard messages_base #define BOOST_NO_STD_MESSAGES diff --git a/3party/boost/boost/config/stdlib/libstdcpp3.hpp b/3party/boost/boost/config/stdlib/libstdcpp3.hpp index 976ab76bae..2fd6ea7d53 100644 --- a/3party/boost/boost/config/stdlib/libstdcpp3.hpp +++ b/3party/boost/boost/config/stdlib/libstdcpp3.hpp @@ -107,7 +107,6 @@ // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_CXX11_HDR_ARRAY -# define BOOST_NO_CXX11_HDR_REGEX # define BOOST_NO_CXX11_HDR_TUPLE # define BOOST_NO_CXX11_HDR_UNORDERED_MAP # define BOOST_NO_CXX11_HDR_UNORDERED_SET @@ -146,21 +145,34 @@ // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_CXX11_HDR_TYPEINDEX +# define BOOST_NO_CXX11_ADDRESSOF #endif // C++0x features in GCC 4.7.0 and later // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__) -// Note that although existed prior to 4.7, "stead_clock" is spelled "monotonic_clock" +// Note that although existed prior to 4.7, "steady_clock" is spelled "monotonic_clock" // so 4.7.0 is the first truely conforming one. # define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_ALLOCATOR #endif +// C++0x features in GCC 4.7.0 and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +// Note that although existed prior to gcc 4.8 it was largely unimplemented for many types: +# define BOOST_NO_CXX11_HDR_ATOMIC +#endif +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +// Although is present and compilable against, the actual implementation is not functional +// even for the simplest patterns such as "\d" or "[0-9]". This is the case at least in gcc up to 4.8, inclusively. +# define BOOST_NO_CXX11_HDR_REGEX +#endif // C++0x headers not yet (fully!) implemented // # define BOOST_NO_CXX11_HDR_THREAD # define BOOST_NO_CXX11_HDR_TYPE_TRAITS # define BOOST_NO_CXX11_HDR_CODECVT # define BOOST_NO_CXX11_ATOMIC_SMART_PTR +# define BOOST_NO_CXX11_STD_ALIGN // --- end --- diff --git a/3party/boost/boost/config/stdlib/modena.hpp b/3party/boost/boost/config/stdlib/modena.hpp index b483b6e024..f2a83888c0 100644 --- a/3party/boost/boost/config/stdlib/modena.hpp +++ b/3party/boost/boost/config/stdlib/modena.hpp @@ -47,6 +47,9 @@ # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_STD_ALIGN +# define BOOST_NO_CXX11_ADDRESSOF #define BOOST_STDLIB "Modena C++ standard library" diff --git a/3party/boost/boost/config/stdlib/msl.hpp b/3party/boost/boost/config/stdlib/msl.hpp index 4f9a2da6ee..b8f43a1286 100644 --- a/3party/boost/boost/config/stdlib/msl.hpp +++ b/3party/boost/boost/config/stdlib/msl.hpp @@ -71,6 +71,9 @@ # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_STD_ALIGN +# define BOOST_NO_CXX11_ADDRESSOF #define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__) diff --git a/3party/boost/boost/config/stdlib/roguewave.hpp b/3party/boost/boost/config/stdlib/roguewave.hpp index cb80f57082..2b4e8636c5 100644 --- a/3party/boost/boost/config/stdlib/roguewave.hpp +++ b/3party/boost/boost/config/stdlib/roguewave.hpp @@ -183,4 +183,7 @@ # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_STD_ALIGN +# define BOOST_NO_CXX11_ADDRESSOF diff --git a/3party/boost/boost/config/stdlib/sgi.hpp b/3party/boost/boost/config/stdlib/sgi.hpp index ae9b6ad908..bda77c2275 100644 --- a/3party/boost/boost/config/stdlib/sgi.hpp +++ b/3party/boost/boost/config/stdlib/sgi.hpp @@ -141,6 +141,9 @@ # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_STD_ALIGN +# define BOOST_NO_CXX11_ADDRESSOF #define BOOST_STDLIB "SGI standard library" diff --git a/3party/boost/boost/config/stdlib/stlport.hpp b/3party/boost/boost/config/stdlib/stlport.hpp index bcc30b99e7..fd5d3a5a6c 100644 --- a/3party/boost/boost/config/stdlib/stlport.hpp +++ b/3party/boost/boost/config/stdlib/stlport.hpp @@ -231,6 +231,9 @@ namespace boost { using std::min; using std::max; } # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_STD_ALIGN +# define BOOST_NO_CXX11_ADDRESSOF #define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT) diff --git a/3party/boost/boost/config/stdlib/vacpp.hpp b/3party/boost/boost/config/stdlib/vacpp.hpp index 9d16946552..a58ec1c5e1 100644 --- a/3party/boost/boost/config/stdlib/vacpp.hpp +++ b/3party/boost/boost/config/stdlib/vacpp.hpp @@ -47,6 +47,9 @@ # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL +# define BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_STD_ALIGN +# define BOOST_NO_CXX11_ADDRESSOF #define BOOST_STDLIB "Visual Age default standard library" diff --git a/3party/boost/boost/config/suffix.hpp b/3party/boost/boost/config/suffix.hpp index 21591c9e6b..a3fda5252a 100644 --- a/3party/boost/boost/config/suffix.hpp +++ b/3party/boost/boost/config/suffix.hpp @@ -4,7 +4,7 @@ // Copyright (c) 2001-2003 John Maddock // Copyright (c) 2001 Darin Adler // Copyright (c) 2001 Peter Dimov -// Copyright (c) 2002 Bill Kempf +// Copyright (c) 2002 Bill Kempf // Copyright (c) 2002 Jens Maurer // Copyright (c) 2002-2003 David Abrahams // Copyright (c) 2003 Gennaro Prota @@ -146,7 +146,7 @@ # endif // -// Without partial specialization, partial +// Without partial specialization, partial // specialization with default args won't work either: // # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ @@ -503,69 +503,8 @@ namespace boost{ #endif // BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------// -// -// Some compilers have problems with function templates whose template -// parameters don't appear in the function parameter list (basically -// they just link one instantiation of the template in the final -// executable). These macros provide a uniform way to cope with the -// problem with no effects on the calling syntax. -// Example: -// -// #include -// #include -// #include -// -// template -// void f() { std::cout << n << ' '; } -// -// template -// void g() { std::cout << typeid(T).name() << ' '; } -// -// int main() { -// f<1>(); -// f<2>(); -// -// g(); -// g(); -// } -// -// With VC++ 6.0 the output is: -// -// 2 2 double double -// -// To fix it, write -// -// template -// void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... } -// -// template -// void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... } -// - - -#if defined(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS) && defined(__cplusplus) - -# include "boost/type.hpp" -# include "boost/non_type.hpp" - -# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) boost::type* = 0 -# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type* -# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type* = 0 -# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) boost::non_type* - -# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \ - , BOOST_EXPLICIT_TEMPLATE_TYPE(t) -# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \ - , BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) -# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \ - , BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) -# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \ - , BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) - -#else - -// no workaround needed: expand to nothing +// These macros are obsolete. Port away and remove. # define BOOST_EXPLICIT_TEMPLATE_TYPE(t) # define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) @@ -577,9 +516,6 @@ namespace boost{ # define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) # define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) - -#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS - // When BOOST_NO_STD_TYPEINFO is defined, we can just import // the global definition into std namespace: #if defined(BOOST_NO_STD_TYPEINFO) && defined(__cplusplus) @@ -632,7 +568,7 @@ namespace std{ using ::type_info; } // Set some default values GPU support // # ifndef BOOST_GPU_ENABLED -# define BOOST_GPU_ENABLED +# define BOOST_GPU_ENABLED # endif // BOOST_FORCEINLINE ---------------------------------------------// @@ -648,6 +584,99 @@ namespace std{ using ::type_info; } # endif #endif +// BOOST_NOINLINE ---------------------------------------------// +// Macro to use in place of 'inline' to prevent a function to be inlined +#if !defined(BOOST_NOINLINE) +# if defined(_MSC_VER) +# define BOOST_NOINLINE __declspec(noinline) +# elif defined(__GNUC__) && __GNUC__ > 3 + // Clang also defines __GNUC__ (as 4) +# if defined(__CUDACC__) + // nvcc doesn't always parse __noinline__, + // see: https://svn.boost.org/trac/boost/ticket/9392 +# define BOOST_NOINLINE __attribute__ ((noinline)) +# else +# define BOOST_NOINLINE __attribute__ ((__noinline__)) +# endif +# else +# define BOOST_NOINLINE +# endif +#endif + +// BOOST_NORETURN ---------------------------------------------// +// Macro to use before a function declaration/definition to designate +// the function as not returning normally (i.e. with a return statement +// or by leaving the function scope, if the function return type is void). +#if !defined(BOOST_NORETURN) +# if defined(_MSC_VER) +# define BOOST_NORETURN __declspec(noreturn) +# elif defined(__GNUC__) +# define BOOST_NORETURN __attribute__ ((__noreturn__)) +# else +# define BOOST_NO_NORETURN +# define BOOST_NORETURN +# endif +#endif + +// Branch prediction hints +// These macros are intended to wrap conditional expressions that yield true or false +// +// if (BOOST_LIKELY(var == 10)) +// { +// // the most probable code here +// } +// +#if !defined(BOOST_LIKELY) +# define BOOST_LIKELY(x) x +#endif +#if !defined(BOOST_UNLIKELY) +# define BOOST_UNLIKELY(x) x +#endif + +// Type and data alignment specification +// +#if !defined(BOOST_NO_CXX11_ALIGNAS) +# define BOOST_ALIGNMENT(x) alignas(x) +#elif defined(_MSC_VER) +# define BOOST_ALIGNMENT(x) __declspec(align(x)) +#elif defined(__GNUC__) +# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x))) +#else +# define BOOST_NO_ALIGNMENT +# define BOOST_ALIGNMENT(x) +#endif + +// Defaulted and deleted function declaration helpers +// These macros are intended to be inside a class definition. +// BOOST_DEFAULTED_FUNCTION accepts the function declaration and its +// body, which will be used if the compiler doesn't support defaulted functions. +// BOOST_DELETED_FUNCTION only accepts the function declaration. It +// will expand to a private function declaration, if the compiler doesn't support +// deleted functions. Because of this it is recommended to use BOOST_DELETED_FUNCTION +// in the end of the class definition. +// +// class my_class +// { +// public: +// // Default-constructible +// BOOST_DEFAULTED_FUNCTION(my_class(), {}) +// // Copying prohibited +// BOOST_DELETED_FUNCTION(my_class(my_class const&)) +// BOOST_DELETED_FUNCTION(my_class& operator= (my_class const&)) +// }; +// +#if !(defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS)) +# define BOOST_DEFAULTED_FUNCTION(fun, body) fun = default; +#else +# define BOOST_DEFAULTED_FUNCTION(fun, body) fun body +#endif + +#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) +# define BOOST_DELETED_FUNCTION(fun) fun = delete; +#else +# define BOOST_DELETED_FUNCTION(fun) private: fun; +#endif + // // Set BOOST_NO_DECLTYPE_N3276 when BOOST_NO_DECLTYPE is defined // @@ -696,7 +725,7 @@ namespace std{ using ::type_info; } # define BOOST_NO_0X_HDR_FUTURE #endif -// Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST +// Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST // instead of BOOST_NO_0X_HDR_INITIALIZER_LIST or BOOST_NO_INITIALIZER_LISTS #ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST # ifndef BOOST_NO_0X_HDR_INITIALIZER_LIST @@ -885,19 +914,19 @@ namespace std{ using ::type_info; } # define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression)) #endif // -// Helper macro BOOST_FALLTHROUGH -// Fallback definition of BOOST_FALLTHROUGH macro used to mark intended -// fall-through between case labels in a switch statement. We use a definition -// that requires a semicolon after it to avoid at least one type of misuse even -// on unsupported compilers. -// -#ifndef BOOST_FALLTHROUGH -# define BOOST_FALLTHROUGH ((void)0) -#endif +// Helper macro BOOST_FALLTHROUGH +// Fallback definition of BOOST_FALLTHROUGH macro used to mark intended +// fall-through between case labels in a switch statement. We use a definition +// that requires a semicolon after it to avoid at least one type of misuse even +// on unsupported compilers. +// +#ifndef BOOST_FALLTHROUGH +# define BOOST_FALLTHROUGH ((void)0) +#endif // // constexpr workarounds -// +// #if defined(BOOST_NO_CXX11_CONSTEXPR) #define BOOST_CONSTEXPR #define BOOST_CONSTEXPR_OR_CONST const @@ -929,5 +958,14 @@ namespace std{ using ::type_info; } #define BOOST_HAS_VARIADIC_TMPL #endif +// +// Finish off with checks for macros that are depricated / no longer supported, +// if any of these are set then it's very likely that much of Boost will no +// longer work. So stop with a #error for now, but give the user a chance +// to continue at their own risk if they really want to: +// +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_CONFIG_ALLOW_DEPRECATED) +# error "You are using a compiler which lacks features which are now a minimum requirement in order to use Boost, define BOOST_CONFIG_ALLOW_DEPRECATED if you want to continue at your own risk!!!" +#endif #endif diff --git a/3party/boost/boost/config/user.hpp b/3party/boost/boost/config/user.hpp index 5a4a9d4776..d226a2d1f4 100644 --- a/3party/boost/boost/config/user.hpp +++ b/3party/boost/boost/config/user.hpp @@ -85,8 +85,7 @@ // (this macro is used to turn on __declspec(dllimport) modifiers, so that // the compiler knows which symbols to look for in a dll rather than in a // static library). Note that there may be some libraries that can only -// be statically linked (Boost.Test for example) and others which may only -// be dynamically linked (Boost.Threads for example), in these cases this +// be linked in one way (statically or dynamically), in these cases this // macro has no effect. // #define BOOST_ALL_DYN_LINK @@ -97,9 +96,9 @@ // BOOST_REGEX_DYN_LINK etc (this macro is used to turn on __declspec(dllimport) // modifiers, so that the compiler knows which symbols to look for in a dll // rather than in a static library). -// Note that there may be some libraries that can only be statically linked -// (Boost.Test for example) and others which may only be dynamically linked -// (Boost.Threads for example), in these cases this macro is unsupported. +// Note that there may be some libraries that can only +// be linked in one way (statically or dynamically), +// in these cases this macro is unsupported. // #define BOOST_WHATEVER_DYN_LINK // BOOST_ALL_NO_LIB: Tells the config system not to automatically select diff --git a/3party/boost/boost/container/adaptive_pool.hpp b/3party/boost/boost/container/adaptive_pool.hpp new file mode 100644 index 0000000000..16ededb017 --- /dev/null +++ b/3party/boost/boost/container/adaptive_pool.hpp @@ -0,0 +1,364 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_ADAPTIVE_POOL_HPP +#define BOOST_CONTAINER_ADAPTIVE_POOL_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { +namespace container { + +//!An STL node allocator that uses a modified DLMalloc as memory +//!source. +//! +//!This node allocator shares a segregated storage between all instances +//!of adaptive_pool with equal sizeof(T). +//! +//!NodesPerBlock is the number of nodes allocated at once when the allocator +//!needs runs out of nodes. MaxFreeBlocks is the maximum number of totally free blocks +//!that the adaptive node pool will hold. The rest of the totally free blocks will be +//!deallocated to the memory manager. +//! +//!OverheadPercent is the (approximated) maximum size overhead (1-20%) of the allocator: +//!(memory usable for nodes / total memory allocated from the memory allocator) +#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED +template < class T + , std::size_t NodesPerBlock = ADP_nodes_per_block + , std::size_t MaxFreeBlocks = ADP_max_free_blocks + , std::size_t OverheadPercent = ADP_overhead_percent + > +#else +template < class T + , std::size_t NodesPerBlock + , std::size_t MaxFreeBlocks + , std::size_t OverheadPercent + , unsigned Version + > +#endif +class adaptive_pool +{ + //!If Version is 1, the allocator is a STL conforming allocator. If Version is 2, + //!the allocator offers advanced expand in place and burst allocation capabilities. + public: + typedef unsigned int allocation_type; + typedef adaptive_pool + self_t; + + static const std::size_t nodes_per_block = NodesPerBlock; + static const std::size_t max_free_blocks = MaxFreeBlocks; + static const std::size_t overhead_percent = OverheadPercent; + static const std::size_t real_nodes_per_block = NodesPerBlock; + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + BOOST_STATIC_ASSERT((Version <=2)); + #endif + + public: + //------- + typedef T value_type; + typedef T * pointer; + typedef const T * const_pointer; + typedef typename ::boost::container:: + container_detail::unvoid::type & reference; + typedef const typename ::boost::container:: + container_detail::unvoid::type & const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + typedef boost::container::container_detail:: + version_type version; + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + typedef boost::container::container_detail:: + basic_multiallocation_chain multiallocation_chain_void; + typedef boost::container::container_detail:: + transform_multiallocation_chain + multiallocation_chain; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + + //!Obtains adaptive_pool from + //!adaptive_pool + template + struct rebind + { + typedef adaptive_pool + < T2 + , NodesPerBlock + , MaxFreeBlocks + , OverheadPercent + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + , Version + #endif + > other; + }; + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + private: + //!Not assignable from related adaptive_pool + template + adaptive_pool& operator= + (const adaptive_pool&); + + //!Not assignable from other adaptive_pool + adaptive_pool& operator=(const adaptive_pool&); + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + + public: + //!Default constructor + adaptive_pool() BOOST_CONTAINER_NOEXCEPT + {} + + //!Copy constructor from other adaptive_pool. + adaptive_pool(const adaptive_pool &) BOOST_CONTAINER_NOEXCEPT + {} + + //!Copy constructor from related adaptive_pool. + template + adaptive_pool + (const adaptive_pool &) BOOST_CONTAINER_NOEXCEPT + {} + + //!Destructor + ~adaptive_pool() BOOST_CONTAINER_NOEXCEPT + {} + + //!Returns the number of elements that could be allocated. + //!Never throws + size_type max_size() const BOOST_CONTAINER_NOEXCEPT + { return size_type(-1)/sizeof(T); } + + //!Allocate memory for an array of count elements. + //!Throws std::bad_alloc if there is no enough memory + pointer allocate(size_type count, const void * = 0) + { + if(count > this->max_size()) + boost::container::throw_bad_alloc(); + + if(Version == 1 && count == 1){ + typedef typename container_detail::shared_adaptive_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + return pointer(static_cast(singleton_t::instance().allocate_node())); + } + else{ + return static_cast(boost_cont_malloc(count*sizeof(T))); + } + } + + //!Deallocate allocated memory. + //!Never throws + void deallocate(const pointer &ptr, size_type count) BOOST_CONTAINER_NOEXCEPT + { + (void)count; + if(Version == 1 && count == 1){ + typedef container_detail::shared_adaptive_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + singleton_t::instance().deallocate_node(ptr); + } + else{ + boost_cont_free(ptr); + } + } + + std::pair + allocation_command(allocation_type command, + size_type limit_size, + size_type preferred_size, + size_type &received_size, pointer reuse = pointer()) + { + std::pair ret = + this->priv_allocation_command(command, limit_size, preferred_size, received_size, reuse); + if(!ret.first && !(command & BOOST_CONTAINER_NOTHROW_ALLOCATION)) + boost::container::throw_bad_alloc(); + return ret; + } + + //!Returns maximum the number of objects the previously allocated memory + //!pointed by p can hold. + size_type size(pointer p) const BOOST_CONTAINER_NOEXCEPT + { return boost_cont_size(p); } + + //!Allocates just one object. Memory allocated with this function + //!must be deallocated only with deallocate_one(). + //!Throws bad_alloc if there is no enough memory + pointer allocate_one() + { + typedef container_detail::shared_adaptive_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + return (pointer)singleton_t::instance().allocate_node(); + } + + //!Allocates many elements of size == 1. + //!Elements must be individually deallocated with deallocate_one() + void allocate_individual(std::size_t num_elements, multiallocation_chain &chain) + { + typedef container_detail::shared_adaptive_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + singleton_t::instance().allocate_nodes(num_elements, static_cast(chain)); + //typename shared_pool_t::multiallocation_chain ch; + //singleton_t::instance().allocate_nodes(num_elements, ch); + //chain.incorporate_after + //(chain.before_begin(), (T*)&*ch.begin(), (T*)&*ch.last(), ch.size()); + } + + //!Deallocates memory previously allocated with allocate_one(). + //!You should never use deallocate_one to deallocate memory allocated + //!with other functions different from allocate_one(). Never throws + void deallocate_one(pointer p) BOOST_CONTAINER_NOEXCEPT + { + typedef container_detail::shared_adaptive_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + singleton_t::instance().deallocate_node(p); + } + + void deallocate_individual(multiallocation_chain &chain) BOOST_CONTAINER_NOEXCEPT + { + typedef container_detail::shared_adaptive_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + //typename shared_pool_t::multiallocation_chain ch(&*chain.begin(), &*chain.last(), chain.size()); + //singleton_t::instance().deallocate_nodes(ch); + singleton_t::instance().deallocate_nodes(chain); + } + + //!Allocates many elements of size elem_size. + //!Elements must be individually deallocated with deallocate() + void allocate_many(size_type elem_size, std::size_t n_elements, multiallocation_chain &chain) + { + BOOST_STATIC_ASSERT(( Version > 1 ));/* + boost_cont_memchain ch; + BOOST_CONTAINER_MEMCHAIN_INIT(&ch); + if(!boost_cont_multialloc_nodes(n_elements, elem_size*sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, &ch)){ + boost::container::throw_bad_alloc(); + } + chain.incorporate_after(chain.before_begin() + ,(T*)BOOST_CONTAINER_MEMCHAIN_FIRSTMEM(&ch) + ,(T*)BOOST_CONTAINER_MEMCHAIN_LASTMEM(&ch) + ,BOOST_CONTAINER_MEMCHAIN_SIZE(&ch) );*/ + if(!boost_cont_multialloc_nodes(n_elements, elem_size*sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, reinterpret_cast(&chain))){ + boost::container::throw_bad_alloc(); + } + } + + //!Allocates n_elements elements, each one of size elem_sizes[i] + //!Elements must be individually deallocated with deallocate() + void allocate_many(const size_type *elem_sizes, size_type n_elements, multiallocation_chain &chain) + { + BOOST_STATIC_ASSERT(( Version > 1 ));/* + boost_cont_memchain ch; + BOOST_CONTAINER_MEMCHAIN_INIT(&ch); + if(!boost_cont_multialloc_arrays(n_elements, elem_sizes, sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, &ch)){ + boost::container::throw_bad_alloc(); + } + chain.incorporate_after(chain.before_begin() + ,(T*)BOOST_CONTAINER_MEMCHAIN_FIRSTMEM(&ch) + ,(T*)BOOST_CONTAINER_MEMCHAIN_LASTMEM(&ch) + ,BOOST_CONTAINER_MEMCHAIN_SIZE(&ch) );*/ + if(!boost_cont_multialloc_arrays(n_elements, elem_sizes, sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, reinterpret_cast(&chain))){ + boost::container::throw_bad_alloc(); + } + } + + void deallocate_many(multiallocation_chain &chain) BOOST_CONTAINER_NOEXCEPT + {/* + boost_cont_memchain ch; + void *beg(&*chain.begin()), *last(&*chain.last()); + size_t size(chain.size()); + BOOST_CONTAINER_MEMCHAIN_INIT_FROM(&ch, beg, last, size); + boost_cont_multidealloc(&ch);*/ + boost_cont_multidealloc(reinterpret_cast(&chain)); + } + + //!Deallocates all free blocks of the pool + static void deallocate_free_blocks() BOOST_CONTAINER_NOEXCEPT + { + typedef container_detail::shared_adaptive_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + singleton_t::instance().deallocate_free_blocks(); + } + + //!Swaps allocators. Does not throw. If each allocator is placed in a + //!different memory segment, the result is undefined. + friend void swap(adaptive_pool &, adaptive_pool &) BOOST_CONTAINER_NOEXCEPT + {} + + //!An allocator always compares to true, as memory allocated with one + //!instance can be deallocated by another instance + friend bool operator==(const adaptive_pool &, const adaptive_pool &) BOOST_CONTAINER_NOEXCEPT + { return true; } + + //!An allocator always compares to false, as memory allocated with one + //!instance can be deallocated by another instance + friend bool operator!=(const adaptive_pool &, const adaptive_pool &) BOOST_CONTAINER_NOEXCEPT + { return false; } + + private: + std::pair priv_allocation_command + (allocation_type command, std::size_t limit_size + ,std::size_t preferred_size,std::size_t &received_size, void *reuse_ptr) + { + boost_cont_command_ret_t ret = {0 , 0}; + if(limit_size > this->max_size() || preferred_size > this->max_size()){ +// ret.first = 0; + return std::pair(pointer(), false); + } + std::size_t l_size = limit_size*sizeof(T); + std::size_t p_size = preferred_size*sizeof(T); + std::size_t r_size; + { + ret = boost_cont_allocation_command(command, sizeof(T), l_size, p_size, &r_size, reuse_ptr); + } + received_size = r_size/sizeof(T); + return std::pair(static_cast(ret.first), !!ret.second); + } +}; + +} //namespace container { +} //namespace boost { + +#include + +#endif //#ifndef BOOST_CONTAINER_ADAPTIVE_POOL_HPP diff --git a/3party/boost/boost/container/allocator.hpp b/3party/boost/boost/container/allocator.hpp new file mode 100644 index 0000000000..14d56452b6 --- /dev/null +++ b/3party/boost/boost/container/allocator.hpp @@ -0,0 +1,367 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_ALLOCATOR_HPP +#define BOOST_CONTAINER_ALLOCATOR_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { +namespace container { + +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + +template +class allocator +{ + typedef allocator self_t; + public: + typedef void value_type; + typedef void * pointer; + typedef const void* const_pointer; + typedef int & reference; + typedef const int & const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef boost::container::container_detail:: + version_type version; + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + typedef boost::container::container_detail:: + basic_multiallocation_chain multiallocation_chain; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + + //!Obtains an allocator that allocates + //!objects of type T2 + template + struct rebind + { + typedef allocator< T2 + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + , Version, AllocationDisableMask + #endif + > other; + }; + + //!Default constructor + //!Never throws + allocator() + {} + + //!Constructor from other allocator. + //!Never throws + allocator(const allocator &) + {} + + //!Constructor from related allocator. + //!Never throws + template + allocator(const allocator &) + {} +}; + +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + +//!\file +//! This class is an extended STL-compatible that offers advanced allocation mechanism +//!(in-place expansion, shrinking, burst-allocation...) +//! +//! This allocator is a wrapper around a modified DLmalloc. +#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED +template +#else +//! If Version is 1, the allocator is a STL conforming allocator. If Version is 2, +//! the allocator offers advanced expand in place and burst allocation capabilities. +// +//! AllocationDisableMask works only if Version is 2 and it can be an inclusive OR +//! of allocation types the user wants to disable. +template +#endif //#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED +class allocator +{ + typedef unsigned int allocation_type; + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + private: + + //Self type + typedef allocator self_t; + + //Not assignable from related allocator + template + allocator& operator=(const allocator&); + + //Not assignable from other allocator + allocator& operator=(const allocator&); + + static const unsigned int ForbiddenMask = + BOOST_CONTAINER_ALLOCATE_NEW | BOOST_CONTAINER_EXPAND_BWD | BOOST_CONTAINER_EXPAND_FWD ; + + //The mask can't disable all the allocation types + BOOST_STATIC_ASSERT(( (AllocationDisableMask & ForbiddenMask) != ForbiddenMask )); + + //The mask is only valid for version 2 allocators + BOOST_STATIC_ASSERT(( Version != 1 || (AllocationDisableMask == 0) )); + + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + + public: + typedef T value_type; + typedef T * pointer; + typedef const T * const_pointer; + typedef T & reference; + typedef const T & const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + typedef boost::container::container_detail:: + version_type version; + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + typedef boost::container::container_detail:: + basic_multiallocation_chain void_multiallocation_chain; + + typedef boost::container::container_detail:: + transform_multiallocation_chain + multiallocation_chain; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + + //!Obtains an allocator that allocates + //!objects of type T2 + template + struct rebind + { + typedef allocator other; + }; + + //!Default constructor + //!Never throws + allocator() BOOST_CONTAINER_NOEXCEPT + {} + + //!Constructor from other allocator. + //!Never throws + allocator(const allocator &) BOOST_CONTAINER_NOEXCEPT + {} + + //!Constructor from related allocator. + //!Never throws + template + allocator(const allocator &) BOOST_CONTAINER_NOEXCEPT + {} + + //!Allocates memory for an array of count elements. + //!Throws std::bad_alloc if there is no enough memory + //!If Version is 2, this allocated memory can only be deallocated + //!with deallocate() or (for Version == 2) deallocate_many() + pointer allocate(size_type count, const void * hint= 0) + { + (void)hint; + if(count > this->max_size()) + boost::container::throw_bad_alloc(); + void *ret = boost_cont_malloc(count*sizeof(T)); + if(!ret) + boost::container::throw_bad_alloc(); + return static_cast(ret); + } + + //!Deallocates previously allocated memory. + //!Never throws + void deallocate(pointer ptr, size_type) BOOST_CONTAINER_NOEXCEPT + { boost_cont_free(ptr); } + + //!Returns the maximum number of elements that could be allocated. + //!Never throws + size_type max_size() const BOOST_CONTAINER_NOEXCEPT + { return size_type(-1)/sizeof(T); } + + //!Swaps two allocators, does nothing + //!because this allocator is stateless + friend void swap(self_t &, self_t &) BOOST_CONTAINER_NOEXCEPT + {} + + //!An allocator always compares to true, as memory allocated with one + //!instance can be deallocated by another instance + friend bool operator==(const allocator &, const allocator &) BOOST_CONTAINER_NOEXCEPT + { return true; } + + //!An allocator always compares to false, as memory allocated with one + //!instance can be deallocated by another instance + friend bool operator!=(const allocator &, const allocator &) BOOST_CONTAINER_NOEXCEPT + { return false; } + + //!An advanced function that offers in-place expansion shrink to fit and new allocation + //!capabilities. Memory allocated with this function can only be deallocated with deallocate() + //!or deallocate_many(). + //!This function is available only with Version == 2 + std::pair + allocation_command(allocation_type command, + size_type limit_size, + size_type preferred_size, + size_type &received_size, pointer reuse = pointer()) + { + BOOST_STATIC_ASSERT(( Version > 1 )); + const allocation_type mask(AllocationDisableMask); + command &= ~mask; + std::pair ret = + priv_allocation_command(command, limit_size, preferred_size, received_size, reuse); + if(!ret.first && !(command & BOOST_CONTAINER_NOTHROW_ALLOCATION)) + boost::container::throw_bad_alloc(); + return ret; + } + + //!Returns maximum the number of objects the previously allocated memory + //!pointed by p can hold. + //!Memory must not have been allocated with + //!allocate_one or allocate_individual. + //!This function is available only with Version == 2 + size_type size(pointer p) const BOOST_CONTAINER_NOEXCEPT + { + BOOST_STATIC_ASSERT(( Version > 1 )); + return boost_cont_size(p); + } + + //!Allocates just one object. Memory allocated with this function + //!must be deallocated only with deallocate_one(). + //!Throws bad_alloc if there is no enough memory + //!This function is available only with Version == 2 + pointer allocate_one() + { + BOOST_STATIC_ASSERT(( Version > 1 )); + return this->allocate(1); + } + + //!Allocates many elements of size == 1. + //!Elements must be individually deallocated with deallocate_one() + //!This function is available only with Version == 2 + void allocate_individual(std::size_t num_elements, multiallocation_chain &chain) + { + BOOST_STATIC_ASSERT(( Version > 1 )); + this->allocate_many(1, num_elements, chain); + } + + //!Deallocates memory previously allocated with allocate_one(). + //!You should never use deallocate_one to deallocate memory allocated + //!with other functions different from allocate_one() or allocate_individual. + //Never throws + void deallocate_one(pointer p) BOOST_CONTAINER_NOEXCEPT + { + BOOST_STATIC_ASSERT(( Version > 1 )); + return this->deallocate(p, 1); + } + + //!Deallocates memory allocated with allocate_one() or allocate_individual(). + //!This function is available only with Version == 2 + void deallocate_individual(multiallocation_chain &chain) BOOST_CONTAINER_NOEXCEPT + { + BOOST_STATIC_ASSERT(( Version > 1 )); + return this->deallocate_many(chain); + } + + //!Allocates many elements of size elem_size. + //!Elements must be individually deallocated with deallocate() + //!This function is available only with Version == 2 + void allocate_many(size_type elem_size, std::size_t n_elements, multiallocation_chain &chain) + { + BOOST_STATIC_ASSERT(( Version > 1 ));/* + boost_cont_memchain ch; + BOOST_CONTAINER_MEMCHAIN_INIT(&ch); + if(!boost_cont_multialloc_nodes(n_elements, elem_size*sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, &ch)){ + boost::container::throw_bad_alloc(); + } + chain.incorporate_after(chain.before_begin() + ,(T*)BOOST_CONTAINER_MEMCHAIN_FIRSTMEM(&ch) + ,(T*)BOOST_CONTAINER_MEMCHAIN_LASTMEM(&ch) + ,BOOST_CONTAINER_MEMCHAIN_SIZE(&ch) );*/ + if(!boost_cont_multialloc_nodes(n_elements, elem_size*sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, reinterpret_cast(&chain))){ + boost::container::throw_bad_alloc(); + } + } + + //!Allocates n_elements elements, each one of size elem_sizes[i] + //!Elements must be individually deallocated with deallocate() + //!This function is available only with Version == 2 + void allocate_many(const size_type *elem_sizes, size_type n_elements, multiallocation_chain &chain) + { + BOOST_STATIC_ASSERT(( Version > 1 )); + boost_cont_memchain ch; + BOOST_CONTAINER_MEMCHAIN_INIT(&ch); + if(!boost_cont_multialloc_arrays(n_elements, elem_sizes, sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, &ch)){ + boost::container::throw_bad_alloc(); + } + chain.incorporate_after(chain.before_begin() + ,(T*)BOOST_CONTAINER_MEMCHAIN_FIRSTMEM(&ch) + ,(T*)BOOST_CONTAINER_MEMCHAIN_LASTMEM(&ch) + ,BOOST_CONTAINER_MEMCHAIN_SIZE(&ch) ); + /* + if(!boost_cont_multialloc_arrays(n_elements, elem_sizes, sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, reinterpret_cast(&chain))){ + boost::container::throw_bad_alloc(); + }*/ + } + + //!Deallocates several elements allocated by + //!allocate_many(), allocate(), or allocation_command(). + //!This function is available only with Version == 2 + void deallocate_many(multiallocation_chain &chain) BOOST_CONTAINER_NOEXCEPT + { + BOOST_STATIC_ASSERT(( Version > 1 )); + boost_cont_memchain ch; + void *beg(&*chain.begin()), *last(&*chain.last()); + size_t size(chain.size()); + BOOST_CONTAINER_MEMCHAIN_INIT_FROM(&ch, beg, last, size); + boost_cont_multidealloc(&ch); + //boost_cont_multidealloc(reinterpret_cast(&chain)); + } + + private: + + std::pair priv_allocation_command + (allocation_type command, std::size_t limit_size + ,std::size_t preferred_size,std::size_t &received_size, void *reuse_ptr) + { + boost_cont_command_ret_t ret = {0 , 0}; + if((limit_size > this->max_size()) | (preferred_size > this->max_size())){ + return std::pair(pointer(), false); + } + std::size_t l_size = limit_size*sizeof(T); + std::size_t p_size = preferred_size*sizeof(T); + std::size_t r_size; + { + ret = boost_cont_allocation_command(command, sizeof(T), l_size, p_size, &r_size, reuse_ptr); + } + received_size = r_size/sizeof(T); + return std::pair(static_cast(ret.first), !!ret.second); + } +}; + +} //namespace container { +} //namespace boost { + +#include + +#endif //BOOST_CONTAINER_ALLOCATOR_HPP + diff --git a/3party/boost/boost/container/allocator_traits.hpp b/3party/boost/boost/container/allocator_traits.hpp index 64e4352d40..4857212c74 100644 --- a/3party/boost/boost/container/allocator_traits.hpp +++ b/3party/boost/boost/container/allocator_traits.hpp @@ -6,7 +6,7 @@ // ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -17,12 +17,13 @@ #ifndef BOOST_CONTAINER_ALLOCATOR_ALLOCATOR_TRAITS_HPP #define BOOST_CONTAINER_ALLOCATOR_ALLOCATOR_TRAITS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif #include #include +#include #include #include #include @@ -37,10 +38,11 @@ #include #endif -///@cond - namespace boost { namespace container { + +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + namespace container_detail { //workaround needed for C++03 compilers with no construct() @@ -55,7 +57,7 @@ struct is_std_allocator< std::allocator > } //namespace container_detail { -///@endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! The class template allocator_traits supplies a uniform interface to all allocator types. //! This class is a C++03-compatible implementation of std::allocator_traits @@ -93,29 +95,29 @@ struct allocator_traits //! typedef see_documentation size_type; //! Alloc::propagate_on_container_copy_assignment if such a type exists, otherwise an integral_constant - //! type with internal constant static member `value` == false. + //! type with internal constant static member value == false. typedef see_documentation propagate_on_container_copy_assignment; //! Alloc::propagate_on_container_move_assignment if such a type exists, otherwise an integral_constant - //! type with internal constant static member `value` == false. + //! type with internal constant static member value == false. typedef see_documentation propagate_on_container_move_assignment; //! Alloc::propagate_on_container_swap if such a type exists, otherwise an integral_constant - //! type with internal constant static member `value` == false. + //! type with internal constant static member value == false. typedef see_documentation propagate_on_container_swap; //! Defines an allocator: Alloc::rebind::other if such a type exists; otherwise, Alloc //! if Alloc is a class template instantiation of the form Alloc, where Args is zero or //! more type arguments ; otherwise, the instantiation of rebind_alloc is ill-formed. //! - //! In C++03 compilers `rebind_alloc` is a struct derived from an allocator + //! In C++03 compilers rebind_alloc is a struct derived from an allocator //! deduced by previously detailed rules. template using rebind_alloc = see_documentation; - //! In C++03 compilers `rebind_traits` is a struct derived from - //! `allocator_traits`, where `OtherAlloc` is - //! the allocator deduced by rules explained in `rebind_alloc`. + //! In C++03 compilers rebind_traits is a struct derived from + //! allocator_traits, where OtherAlloc is + //! the allocator deduced by rules explained in rebind_alloc. template using rebind_traits = allocator_traits >; //! Non-standard extension: Portable allocator rebind for C++03 and C++11 compilers. - //! `type` is an allocator related to Alloc deduced deduced by rules explained in `rebind_alloc`. + //! type is an allocator related to Alloc deduced deduced by rules explained in rebind_alloc. template struct portable_rebind_alloc { typedef see_documentation type; }; @@ -205,19 +207,19 @@ struct allocator_traits { typedef typename boost::intrusive::detail::type_rebinder::type type; }; #endif //BOOST_CONTAINER_DOXYGEN_INVOKED - //! Returns: `a.allocate(n)` + //! Returns: a.allocate(n) //! static pointer allocate(Alloc &a, size_type n) { return a.allocate(n); } - //! Returns: `a.deallocate(p, n)` + //! Returns: a.deallocate(p, n) //! //! Throws: Nothing static void deallocate(Alloc &a, pointer p, size_type n) { a.deallocate(p, n); } - //! Effects: calls `a.allocate(n, p)` if that call is well-formed; - //! otherwise, invokes `a.allocate(n)` + //! Effects: calls a.allocate(n, p) if that call is well-formed; + //! otherwise, invokes a.allocate(n) static pointer allocate(Alloc &a, size_type n, const_void_pointer p) { const bool value = boost::container::container_detail:: @@ -227,10 +229,10 @@ struct allocator_traits return allocator_traits::priv_allocate(flag, a, n, p); } - //! Effects: calls `a.destroy(p)` if that call is well-formed; - //! otherwise, invokes `p->~T()`. + //! Effects: calls a.destroy(p) if that call is well-formed; + //! otherwise, invokes p->~T(). template - static void destroy(Alloc &a, T*p) + static void destroy(Alloc &a, T*p) BOOST_CONTAINER_NOEXCEPT { typedef T* destroy_pointer; const bool value = boost::container::container_detail:: @@ -240,9 +242,9 @@ struct allocator_traits allocator_traits::priv_destroy(flag, a, p); } - //! Returns: `a.max_size()` if that expression is well-formed; otherwise, - //! `numeric_limits::max()`. - static size_type max_size(const Alloc &a) + //! Returns: a.max_size() if that expression is well-formed; otherwise, + //! numeric_limits::max(). + static size_type max_size(const Alloc &a) BOOST_CONTAINER_NOEXCEPT { const bool value = boost::container::container_detail:: has_member_function_callable_with_max_size @@ -251,7 +253,7 @@ struct allocator_traits return allocator_traits::priv_max_size(flag, a); } - //! Returns: `a.select_on_container_copy_construction()` if that expression is well-formed; + //! Returns: a.select_on_container_copy_construction() if that expression is well-formed; //! otherwise, a. static #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -275,8 +277,8 @@ struct allocator_traits } #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: calls `a.construct(p, std::forward(args)...)` if that call is well-formed; - //! otherwise, invokes `::new (static_cast(p)) T(std::forward(args)...)` + //! Effects: calls a.construct(p, std::forward(args)...) if that call is well-formed; + //! otherwise, invokes ::new (static_cast(p)) T(std::forward(args)...) template static void construct(Alloc & a, T* p, BOOST_FWD_REF(Args)... args) { @@ -284,7 +286,7 @@ struct allocator_traits allocator_traits::priv_construct(flag, a, p, ::boost::forward(args)...); } #endif - ///@cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) private: static pointer priv_allocate(boost::true_type, Alloc &a, size_type n, const_void_pointer p) @@ -294,29 +296,29 @@ struct allocator_traits { return allocator_traits::allocate(a, n); } template - static void priv_destroy(boost::true_type, Alloc &a, T* p) + static void priv_destroy(boost::true_type, Alloc &a, T* p) BOOST_CONTAINER_NOEXCEPT { a.destroy(p); } template - static void priv_destroy(boost::false_type, Alloc &, T* p) + static void priv_destroy(boost::false_type, Alloc &, T* p) BOOST_CONTAINER_NOEXCEPT { p->~T(); (void)p; } - static size_type priv_max_size(boost::true_type, const Alloc &a) + static size_type priv_max_size(boost::true_type, const Alloc &a) BOOST_CONTAINER_NOEXCEPT { return a.max_size(); } - static size_type priv_max_size(boost::false_type, const Alloc &) + static size_type priv_max_size(boost::false_type, const Alloc &) BOOST_CONTAINER_NOEXCEPT { return (std::numeric_limits::max)(); } static Alloc priv_select_on_container_copy_construction(boost::true_type, const Alloc &a) { return a.select_on_container_copy_construction(); } - static const Alloc &priv_select_on_container_copy_construction(boost::false_type, const Alloc &a) + static const Alloc &priv_select_on_container_copy_construction(boost::false_type, const Alloc &a) BOOST_CONTAINER_NOEXCEPT { return a; } #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) template - static void priv_construct(boost::false_type, Alloc &a, T *p, BOOST_FWD_REF(Args) ...args) - { + static void priv_construct(boost::false_type, Alloc &a, T *p, BOOST_FWD_REF(Args) ...args) + { const bool value = boost::container::container_detail:: has_member_function_callable_with_construct < Alloc, T*, Args... >::value; @@ -351,7 +353,7 @@ struct allocator_traits // #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) #include BOOST_PP_LOCAL_ITERATE() - + private: #define BOOST_PP_LOCAL_MACRO(n) \ template \ @@ -387,9 +389,13 @@ struct allocator_traits #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) #include BOOST_PP_LOCAL_ITERATE() #endif // #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) + + template + static void priv_construct_dispatch2(boost::false_type, Alloc &, T *p, ::boost::container::default_init_t) + { ::new((void*)p) T; } #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - ///@endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; } //namespace container { diff --git a/3party/boost/boost/container/container_fwd.hpp b/3party/boost/boost/container/container_fwd.hpp index bdefd81e00..415de0f378 100644 --- a/3party/boost/boost/container/container_fwd.hpp +++ b/3party/boost/boost/container/container_fwd.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,15 +11,41 @@ #ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP #define BOOST_CONTAINER_CONTAINER_FWD_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif +//! \file +//! This header file forward declares the following containers: +//! - boost::container::vector +//! - boost::container::stable_vector +//! - boost::container::static_vector +//! - boost::container::slist +//! - boost::container::list +//! - boost::container::set +//! - boost::container::multiset +//! - boost::container::map +//! - boost::container::multimap +//! - boost::container::flat_set +//! - boost::container::flat_multiset +//! - boost::container::flat_map +//! - boost::container::flat_multimap +//! - boost::container::basic_string +//! - boost::container::string +//! - boost::container::wstring +//! +//! It forward declares the following allocators: +//! - boost::container::allocator +//! - boost::container::node_allocator +//! - boost::container::adaptive_pool +//! +//! And finally it defines the following types + ////////////////////////////////////////////////////////////////////////////// // Standard predeclarations ////////////////////////////////////////////////////////////////////////////// -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace boost{ namespace intrusive{ @@ -32,13 +58,14 @@ namespace bi = boost::intrusive; }}} +#include #include #include #include #include #include -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED ////////////////////////////////////////////////////////////////////////////// // Containers @@ -47,111 +74,185 @@ namespace bi = boost::intrusive; namespace boost { namespace container { -//vector class +//! Enumeration used to configure ordered associative containers +//! with a concrete tree implementation. +enum tree_type_enum +{ + red_black_tree, + avl_tree, + scapegoat_tree, + splay_tree +}; + +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + template > class vector; -//vector class template > class stable_vector; -//vector class +template +class static_vector; + template > class deque; -//list class template > class list; -//slist class template > class slist; -//set class +template +struct tree_opt; + +typedef tree_opt tree_assoc_defaults; + template - ,class Allocator = std::allocator > + ,class Allocator = std::allocator + ,class Options = tree_assoc_defaults > class set; -//multiset class template - ,class Allocator = std::allocator > + ,class Allocator = std::allocator + ,class Options = tree_assoc_defaults > class multiset; -//map class template - ,class Allocator = std::allocator > > + ,class Allocator = std::allocator > + ,class Options = tree_assoc_defaults > class map; -//multimap class template - ,class Allocator = std::allocator > > + ,class Allocator = std::allocator > + ,class Options = tree_assoc_defaults > class multimap; -//flat_set class template ,class Allocator = std::allocator > class flat_set; -//flat_multiset class template ,class Allocator = std::allocator > class flat_multiset; -//flat_map class template ,class Allocator = std::allocator > > class flat_map; -//flat_multimap class template ,class Allocator = std::allocator > > class flat_multimap; -//basic_string class template ,class Allocator = std::allocator > class basic_string; +typedef basic_string + + ,std::allocator > +string; + +typedef basic_string + + ,std::allocator > +wstring; + +static const std::size_t ADP_nodes_per_block = 256u; +static const std::size_t ADP_max_free_blocks = 2u; +static const std::size_t ADP_overhead_percent = 1u; +static const std::size_t ADP_only_alignment = 0u; + +template < class T + , std::size_t NodesPerBlock = ADP_nodes_per_block + , std::size_t MaxFreeBlocks = ADP_max_free_blocks + , std::size_t OverheadPercent = ADP_overhead_percent + , unsigned Version = 2 + > +class adaptive_pool; + +template < class T + , unsigned Version = 2 + , unsigned int AllocationDisableMask = 0> +class allocator; + +static const std::size_t NodeAlloc_nodes_per_block = 256u; + +template + < class T + , std::size_t NodesPerBlock = NodeAlloc_nodes_per_block + , std::size_t Version = 2> +class node_allocator; + +#else + +//! Default options for tree-based associative containers +//! - tree_type +//! - optimize_size +typedef implementation_defined tree_assoc_defaults; + +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + //! Type used to tag that the input range is //! guaranteed to be ordered struct ordered_range_t {}; +//! Value used to tag that the input range is +//! guaranteed to be ordered +static const ordered_range_t ordered_range = ordered_range_t(); + //! Type used to tag that the input range is //! guaranteed to be ordered and unique struct ordered_unique_range_t : public ordered_range_t {}; -//! Value used to tag that the input range is -//! guaranteed to be ordered -static const ordered_range_t ordered_range = ordered_range_t(); - //! Value used to tag that the input range is //! guaranteed to be ordered and unique static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t(); -/// @cond +//! Type used to tag that the inserted values +//! should be default initialized +struct default_init_t +{}; -namespace detail_really_deep_namespace { +//! Value used to tag that the inserted values +//! should be default initialized +static const default_init_t default_init = default_init_t(); +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + +//! Type used to tag that the inserted values +//! should be value initialized +struct value_init_t +{}; + +//! Value used to tag that the inserted values +//! should be value initialized +static const value_init_t value_init = value_init_t(); + +namespace container_detail_really_deep_namespace { //Otherwise, gcc issues a warning of previously defined //anonymous_instance and unique_instance @@ -161,12 +262,13 @@ struct dummy { (void)ordered_range; (void)ordered_unique_range; + (void)default_init; } }; } //detail_really_deep_namespace { -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }} //namespace boost { namespace container { diff --git a/3party/boost/boost/container/deque.hpp b/3party/boost/boost/container/deque.hpp index 5ff423d0aa..675dae6cf3 100644 --- a/3party/boost/boost/container/deque.hpp +++ b/3party/boost/boost/container/deque.hpp @@ -1,39 +1,17 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/container for documentation. // ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 1996,1997 -// Silicon Graphics Computer Systems, Inc. -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appear in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. Silicon Graphics makes no -// representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied warranty. -// -// -// Copyright (c) 1994 -// Hewlett-Packard Company -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appear in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. Hewlett-Packard Company makes no -// representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied warranty. #ifndef BOOST_CONTAINER_DEQUE_HPP #define BOOST_CONTAINER_DEQUE_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -67,19 +45,14 @@ namespace boost { namespace container { -/// @cond -#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED -template > -#else +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED template -#endif class deque; -template +template struct deque_value_traits { typedef T value_type; - typedef Allocator allocator_type; static const bool trivial_dctr = boost::has_trivial_destructor::value; static const bool trivial_dctr_after_move = ::boost::has_trivial_destructor_after_move::value; static const bool trivial_copy = has_trivial_copy::value; @@ -91,13 +64,211 @@ struct deque_value_traits // Note: this function is simply a kludge to work around several compilers' // bugs in handling constant expressions. -inline std::size_t deque_buf_size(std::size_t size) - { return size < 512 ? std::size_t(512 / size) : std::size_t(1); } +template +struct deque_buf_size +{ + static const std::size_t min_size = 512u; + static const std::size_t sizeof_t = sizeof(T); + static const std::size_t value = sizeof_t < min_size ? (min_size/sizeof_t) : std::size_t(1); +}; + +namespace container_detail { + +// Class invariants: +// For any nonsingular iterator i: +// i.node is the address of an element in the map array. The +// contents of i.node is a pointer to the beginning of a node. +// i.first == //(i.node) +// i.last == i.first + node_size +// i.cur is a pointer in the range [i.first, i.last). NOTE: +// the implication of this is that i.cur is always a dereferenceable +// pointer, even if i is a past-the-end iterator. +// Start and Finish are always nonsingular iterators. NOTE: this means +// that an empty deque must have one node, and that a deque +// with N elements, where N is the buffer size, must have two nodes. +// For every node other than start.node and finish.node, every element +// in the node is an initialized object. If start.node == finish.node, +// then [start.cur, finish.cur) are initialized objects, and +// the elements outside that range are uninitialized storage. Otherwise, +// [start.cur, start.last) and [finish.first, finish.cur) are initialized +// objects, and [start.first, start.cur) and [finish.cur, finish.last) +// are uninitialized storage. +// [map, map + map_size) is a valid, non-empty range. +// [start.node, finish.node] is a valid range contained within +// [map, map + map_size). +// Allocator pointer in the range [map, map + map_size) points to an allocated node +// if and only if the pointer is in the range [start.node, finish.node]. +template +class deque_iterator +{ + public: + typedef std::random_access_iterator_tag iterator_category; + typedef typename boost::intrusive::pointer_traits::element_type value_type; + typedef typename boost::intrusive::pointer_traits::difference_type difference_type; + typedef typename if_c + < IsConst + , typename boost::intrusive::pointer_traits::template + rebind_pointer::type + , Pointer + >::type pointer; + typedef typename if_c + < IsConst + , const value_type& + , value_type& + >::type reference; + + static std::size_t s_buffer_size() + { return deque_buf_size::value; } + + typedef Pointer val_alloc_ptr; + typedef typename boost::intrusive::pointer_traits:: + template rebind_pointer::type index_pointer; + + Pointer m_cur; + Pointer m_first; + Pointer m_last; + index_pointer m_node; + + public: + + Pointer get_cur() const { return m_cur; } + Pointer get_first() const { return m_first; } + Pointer get_last() const { return m_last; } + index_pointer get_node() const { return m_node; } + + deque_iterator(val_alloc_ptr x, index_pointer y) BOOST_CONTAINER_NOEXCEPT + : m_cur(x), m_first(*y), m_last(*y + s_buffer_size()), m_node(y) + {} + + deque_iterator() BOOST_CONTAINER_NOEXCEPT + : m_cur(), m_first(), m_last(), m_node() + {} + + deque_iterator(deque_iterator const& x) BOOST_CONTAINER_NOEXCEPT + : m_cur(x.get_cur()), m_first(x.get_first()), m_last(x.get_last()), m_node(x.get_node()) + {} + + deque_iterator(Pointer cur, Pointer first, Pointer last, index_pointer node) BOOST_CONTAINER_NOEXCEPT + : m_cur(cur), m_first(first), m_last(last), m_node(node) + {} + + deque_iterator unconst() const BOOST_CONTAINER_NOEXCEPT + { + return deque_iterator(this->get_cur(), this->get_first(), this->get_last(), this->get_node()); + } + + reference operator*() const BOOST_CONTAINER_NOEXCEPT + { return *this->m_cur; } + + pointer operator->() const BOOST_CONTAINER_NOEXCEPT + { return this->m_cur; } + + difference_type operator-(const deque_iterator& x) const BOOST_CONTAINER_NOEXCEPT + { + if(!this->m_cur && !x.m_cur){ + return 0; + } + return difference_type(this->s_buffer_size()) * (this->m_node - x.m_node - 1) + + (this->m_cur - this->m_first) + (x.m_last - x.m_cur); + } + + deque_iterator& operator++() BOOST_CONTAINER_NOEXCEPT + { + ++this->m_cur; + if (this->m_cur == this->m_last) { + this->priv_set_node(this->m_node + 1); + this->m_cur = this->m_first; + } + return *this; + } + + deque_iterator operator++(int) BOOST_CONTAINER_NOEXCEPT + { + deque_iterator tmp(*this); + ++*this; + return tmp; + } + + deque_iterator& operator--() BOOST_CONTAINER_NOEXCEPT + { + if (this->m_cur == this->m_first) { + this->priv_set_node(this->m_node - 1); + this->m_cur = this->m_last; + } + --this->m_cur; + return *this; + } + + deque_iterator operator--(int) BOOST_CONTAINER_NOEXCEPT + { + deque_iterator tmp(*this); + --*this; + return tmp; + } + + deque_iterator& operator+=(difference_type n) BOOST_CONTAINER_NOEXCEPT + { + difference_type offset = n + (this->m_cur - this->m_first); + if (offset >= 0 && offset < difference_type(this->s_buffer_size())) + this->m_cur += n; + else { + difference_type node_offset = + offset > 0 ? offset / difference_type(this->s_buffer_size()) + : -difference_type((-offset - 1) / this->s_buffer_size()) - 1; + this->priv_set_node(this->m_node + node_offset); + this->m_cur = this->m_first + + (offset - node_offset * difference_type(this->s_buffer_size())); + } + return *this; + } + + deque_iterator operator+(difference_type n) const BOOST_CONTAINER_NOEXCEPT + { deque_iterator tmp(*this); return tmp += n; } + + deque_iterator& operator-=(difference_type n) BOOST_CONTAINER_NOEXCEPT + { return *this += -n; } + + deque_iterator operator-(difference_type n) const BOOST_CONTAINER_NOEXCEPT + { deque_iterator tmp(*this); return tmp -= n; } + + reference operator[](difference_type n) const BOOST_CONTAINER_NOEXCEPT + { return *(*this + n); } + + friend bool operator==(const deque_iterator& l, const deque_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_cur == r.m_cur; } + + friend bool operator!=(const deque_iterator& l, const deque_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_cur != r.m_cur; } + + friend bool operator<(const deque_iterator& l, const deque_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return (l.m_node == r.m_node) ? (l.m_cur < r.m_cur) : (l.m_node < r.m_node); } + + friend bool operator>(const deque_iterator& l, const deque_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return r < l; } + + friend bool operator<=(const deque_iterator& l, const deque_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return !(r < l); } + + friend bool operator>=(const deque_iterator& l, const deque_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return !(l < r); } + + void priv_set_node(index_pointer new_node) BOOST_CONTAINER_NOEXCEPT + { + this->m_node = new_node; + this->m_first = *new_node; + this->m_last = this->m_first + this->s_buffer_size(); + } + + friend deque_iterator operator+(difference_type n, deque_iterator x) BOOST_CONTAINER_NOEXCEPT + { return x += n; } +}; + +} //namespace container_detail { // Deque base class. It has two purposes. First, its constructor // and destructor allocate (but don't initialize) storage. This makes // exception safety easier. -template +template class deque_base { BOOST_COPYABLE_AND_MOVABLE(deque_base) @@ -124,257 +295,26 @@ class deque_base protected: - typedef deque_value_traits traits_t; - typedef ptr_alloc_t map_allocator_type; + typedef deque_value_traits traits_t; + typedef ptr_alloc_t map_allocator_type; - static size_type s_buffer_size() { return deque_buf_size(sizeof(T)); } + static size_type s_buffer_size() BOOST_CONTAINER_NOEXCEPT + { return deque_buf_size::value; } val_alloc_ptr priv_allocate_node() { return this->alloc().allocate(s_buffer_size()); } - void priv_deallocate_node(val_alloc_ptr p) + void priv_deallocate_node(val_alloc_ptr p) BOOST_CONTAINER_NOEXCEPT { this->alloc().deallocate(p, s_buffer_size()); } ptr_alloc_ptr priv_allocate_map(size_type n) { return this->ptr_alloc().allocate(n); } - void priv_deallocate_map(ptr_alloc_ptr p, size_type n) + void priv_deallocate_map(ptr_alloc_ptr p, size_type n) BOOST_CONTAINER_NOEXCEPT { this->ptr_alloc().deallocate(p, n); } - public: - // Class invariants: - // For any nonsingular iterator i: - // i.node is the address of an element in the map array. The - // contents of i.node is a pointer to the beginning of a node. - // i.first == //(i.node) - // i.last == i.first + node_size - // i.cur is a pointer in the range [i.first, i.last). NOTE: - // the implication of this is that i.cur is always a dereferenceable - // pointer, even if i is a past-the-end iterator. - // Start and Finish are always nonsingular iterators. NOTE: this means - // that an empty deque must have one node, and that a deque - // with N elements, where N is the buffer size, must have two nodes. - // For every node other than start.node and finish.node, every element - // in the node is an initialized object. If start.node == finish.node, - // then [start.cur, finish.cur) are initialized objects, and - // the elements outside that range are uninitialized storage. Otherwise, - // [start.cur, start.last) and [finish.first, finish.cur) are initialized - // objects, and [start.first, start.cur) and [finish.cur, finish.last) - // are uninitialized storage. - // [map, map + map_size) is a valid, non-empty range. - // [start.node, finish.node] is a valid range contained within - // [map, map + map_size). - // Allocator pointer in the range [map, map + map_size) points to an allocated node - // if and only if the pointer is in the range [start.node, finish.node]. - class const_iterator - : public std::iterator - { - public: - static size_type s_buffer_size() { return deque_base::s_buffer_size(); } - - typedef std::random_access_iterator_tag iterator_category; - typedef val_alloc_val value_type; - typedef val_alloc_cptr pointer; - typedef val_alloc_cref reference; - typedef val_alloc_diff difference_type; - - typedef ptr_alloc_ptr index_pointer; - typedef const_iterator self_t; - - friend class deque; - friend class deque_base; - - protected: - val_alloc_ptr m_cur; - val_alloc_ptr m_first; - val_alloc_ptr m_last; - index_pointer m_node; - - public: - const_iterator(val_alloc_ptr x, index_pointer y) - : m_cur(x), m_first(*y), - m_last(*y + s_buffer_size()), m_node(y) {} - - const_iterator() : m_cur(0), m_first(0), m_last(0), m_node(0) {} - - const_iterator(const const_iterator& x) - : m_cur(x.m_cur), m_first(x.m_first), - m_last(x.m_last), m_node(x.m_node) {} - - reference operator*() const - { return *this->m_cur; } - - pointer operator->() const - { return this->m_cur; } - - difference_type operator-(const self_t& x) const - { - if(!this->m_cur && !x.m_cur){ - return 0; - } - return difference_type(this->s_buffer_size()) * (this->m_node - x.m_node - 1) + - (this->m_cur - this->m_first) + (x.m_last - x.m_cur); - } - - self_t& operator++() - { - ++this->m_cur; - if (this->m_cur == this->m_last) { - this->priv_set_node(this->m_node + 1); - this->m_cur = this->m_first; - } - return *this; - } - - self_t operator++(int) - { - self_t tmp = *this; - ++*this; - return tmp; - } - - self_t& operator--() - { - if (this->m_cur == this->m_first) { - this->priv_set_node(this->m_node - 1); - this->m_cur = this->m_last; - } - --this->m_cur; - return *this; - } - - self_t operator--(int) - { - self_t tmp = *this; - --*this; - return tmp; - } - - self_t& operator+=(difference_type n) - { - difference_type offset = n + (this->m_cur - this->m_first); - if (offset >= 0 && offset < difference_type(this->s_buffer_size())) - this->m_cur += n; - else { - difference_type node_offset = - offset > 0 ? offset / difference_type(this->s_buffer_size()) - : -difference_type((-offset - 1) / this->s_buffer_size()) - 1; - this->priv_set_node(this->m_node + node_offset); - this->m_cur = this->m_first + - (offset - node_offset * difference_type(this->s_buffer_size())); - } - return *this; - } - - self_t operator+(difference_type n) const - { self_t tmp = *this; return tmp += n; } - - self_t& operator-=(difference_type n) - { return *this += -n; } - - self_t operator-(difference_type n) const - { self_t tmp = *this; return tmp -= n; } - - reference operator[](difference_type n) const - { return *(*this + n); } - - bool operator==(const self_t& x) const - { return this->m_cur == x.m_cur; } - - bool operator!=(const self_t& x) const - { return !(*this == x); } - - bool operator<(const self_t& x) const - { - return (this->m_node == x.m_node) ? - (this->m_cur < x.m_cur) : (this->m_node < x.m_node); - } - - bool operator>(const self_t& x) const - { return x < *this; } - - bool operator<=(const self_t& x) const - { return !(x < *this); } - - bool operator>=(const self_t& x) const - { return !(*this < x); } - - void priv_set_node(index_pointer new_node) - { - this->m_node = new_node; - this->m_first = *new_node; - this->m_last = this->m_first + this->s_buffer_size(); - } - - friend const_iterator operator+(difference_type n, const const_iterator& x) - { return x + n; } - }; - - //Deque iterator - class iterator : public const_iterator - { - public: - typedef std::random_access_iterator_tag iterator_category; - typedef val_alloc_val value_type; - typedef val_alloc_ptr pointer; - typedef val_alloc_ref reference; - typedef val_alloc_diff difference_type; - typedef ptr_alloc_ptr index_pointer; - typedef const_iterator self_t; - - friend class deque; - friend class deque_base; - - private: - explicit iterator(const const_iterator& x) : const_iterator(x){} - - public: - //Constructors - iterator(val_alloc_ptr x, index_pointer y) : const_iterator(x, y){} - iterator() : const_iterator(){} - //iterator(const const_iterator &cit) : const_iterator(cit){} - iterator(const iterator& x) : const_iterator(x){} - - //Pointer like operators - reference operator*() const { return *this->m_cur; } - pointer operator->() const { return this->m_cur; } - - reference operator[](difference_type n) const { return *(*this + n); } - - //Increment / Decrement - iterator& operator++() - { this->const_iterator::operator++(); return *this; } - - iterator operator++(int) - { iterator tmp = *this; ++*this; return tmp; } - - iterator& operator--() - { this->const_iterator::operator--(); return *this; } - - iterator operator--(int) - { iterator tmp = *this; --*this; return tmp; } - - // Arithmetic - iterator& operator+=(difference_type off) - { this->const_iterator::operator+=(off); return *this; } - - iterator operator+(difference_type off) const - { return iterator(this->const_iterator::operator+(off)); } - - friend iterator operator+(difference_type off, const iterator& right) - { return iterator(off+static_cast(right)); } - - iterator& operator-=(difference_type off) - { this->const_iterator::operator-=(off); return *this; } - - iterator operator-(difference_type off) const - { return iterator(this->const_iterator::operator-(off)); } - - difference_type operator-(const const_iterator& right) const - { return static_cast(*this) - right; } - }; + typedef container_detail::deque_iterator iterator; + typedef container_detail::deque_iterator const_iterator; deque_base(size_type num_elements, const allocator_type& a) : members_(a) @@ -403,10 +343,10 @@ class deque_base private: deque_base(const deque_base&); - + protected: - void swap_members(deque_base &x) + void swap_members(deque_base &x) BOOST_CONTAINER_NOEXCEPT { std::swap(this->members_.m_start, x.members_.m_start); std::swap(this->members_.m_finish, x.members_.m_finish); @@ -424,7 +364,7 @@ class deque_base ptr_alloc_ptr nstart = this->members_.m_map + (this->members_.m_map_size - num_nodes) / 2; ptr_alloc_ptr nfinish = nstart + num_nodes; - + BOOST_TRY { this->priv_create_nodes(nstart, nfinish); } @@ -458,13 +398,13 @@ class deque_base BOOST_CATCH_END } - void priv_destroy_nodes(ptr_alloc_ptr nstart, ptr_alloc_ptr nfinish) + void priv_destroy_nodes(ptr_alloc_ptr nstart, ptr_alloc_ptr nfinish) BOOST_CONTAINER_NOEXCEPT { for (ptr_alloc_ptr n = nstart; n < nfinish; ++n) this->priv_deallocate_node(*n); } - void priv_clear_map() + void priv_clear_map() BOOST_CONTAINER_NOEXCEPT { if (this->members_.m_map) { this->priv_destroy_nodes(this->members_.m_start.m_node, this->members_.m_finish.m_node + 1); @@ -509,33 +449,36 @@ class deque_base iterator m_finish; } members_; - ptr_alloc_t &ptr_alloc() - { return members_; } - - const ptr_alloc_t &ptr_alloc() const + ptr_alloc_t &ptr_alloc() BOOST_CONTAINER_NOEXCEPT { return members_; } - allocator_type &alloc() + const ptr_alloc_t &ptr_alloc() const BOOST_CONTAINER_NOEXCEPT { return members_; } - - const allocator_type &alloc() const + + allocator_type &alloc() BOOST_CONTAINER_NOEXCEPT + { return members_; } + + const allocator_type &alloc() const BOOST_CONTAINER_NOEXCEPT { return members_; } }; -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED -//! Deque class -//! #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED +//! A double-ended queue is a sequence that supports random access to elements, constant time insertion +//! and removal of elements at the end of the sequence, and linear time insertion and removal of elements in the middle. +//! +//! \tparam T The type of object that is stored in the deque +//! \tparam Allocator The allocator used for all internal memory management template > #else template #endif -class deque : protected deque_base +class deque : protected deque_base { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: - typedef deque_base Base; - /// @endcond + typedef deque_base Base; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: @@ -559,7 +502,7 @@ class deque : protected deque_base typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator) reverse_iterator; typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator) const_reverse_iterator; - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: // Internal typedefs BOOST_COPYABLE_AND_MOVABLE(deque) @@ -568,7 +511,7 @@ class deque : protected deque_base { return Base::s_buffer_size(); } typedef allocator_traits allocator_traits_type; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -596,25 +539,42 @@ class deque : protected deque_base {} //! Effects: Constructs a deque that will use a copy of allocator a - //! and inserts n default contructed values. + //! and inserts n value initialized values. //! - //! Throws: If allocator_type's default constructor or copy constructor - //! throws or T's default or copy constructor throws. + //! Throws: If allocator_type's default constructor + //! throws or T's value initialization throws. //! //! Complexity: Linear to n. explicit deque(size_type n) : Base(n, allocator_type()) { - container_detail::insert_default_constructed_n_proxy proxy(this->alloc()); - proxy.uninitialized_copy_n_and_update(this->begin(), n); + container_detail::insert_value_initialized_n_proxy proxy; + proxy.uninitialized_copy_n_and_update(this->alloc(), this->begin(), n); + //deque_base will deallocate in case of exception... + } + + //! Effects: Constructs a deque that will use a copy of allocator a + //! and inserts n default initialized values. + //! + //! Throws: If allocator_type's default constructor + //! throws or T's default initialization or copy constructor throws. + //! + //! Complexity: Linear to n. + //! + //! Note: Non-standard extension + deque(size_type n, default_init_t) + : Base(n, allocator_type()) + { + container_detail::insert_default_initialized_n_proxy proxy; + proxy.uninitialized_copy_n_and_update(this->alloc(), this->begin(), n); //deque_base will deallocate in case of exception... } //! Effects: Constructs a deque that will use a copy of allocator a //! and inserts n copies of value. //! - //! Throws: If allocator_type's default constructor or copy constructor - //! throws or T's default or copy constructor throws. + //! Throws: If allocator_type's default constructor + //! throws or T's copy constructor throws. //! //! Complexity: Linear to n. deque(size_type n, const value_type& value, @@ -625,8 +585,8 @@ class deque : protected deque_base //! Effects: Constructs a deque that will use a copy of allocator a //! and inserts a copy of the range [first, last) in the deque. //! - //! Throws: If allocator_type's default constructor or copy constructor - //! throws or T's constructor taking an dereferenced InIt throws. + //! Throws: If allocator_type's default constructor + //! throws or T's constructor taking a dereferenced InIt throws. //! //! Complexity: Linear to the range [first, last). template @@ -744,36 +704,39 @@ class deque : protected deque_base return *this; } - //! Effects: Move assignment. All mx's values are transferred to *this. + //! Effects: Move assignment. All x's values are transferred to *this. //! - //! Postcondition: x.empty(). *this contains a the elements x had - //! before the function. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or value_type's move constructor throws) //! - //! Throws: If allocator_type's copy constructor throws. - //! - //! Complexity: Linear. + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. deque& operator= (BOOST_RV_REF(deque) x) + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) { - if (&x != this){ - allocator_type &this_alloc = this->alloc(); - allocator_type &x_alloc = x.alloc(); - //If allocators are equal we can just swap pointers - if(this_alloc == x_alloc){ - //Destroy objects but retain memory in case x reuses it in the future - this->clear(); - this->swap_members(x); - //Move allocator if needed - container_detail::bool_ flag; - container_detail::move_alloc(this_alloc, x_alloc, flag); - container_detail::move_alloc(this->ptr_alloc(), x.ptr_alloc(), flag); - } - //If unequal allocators, then do a one by one move - else{ - typedef typename std::iterator_traits::iterator_category ItCat; - this->assign( boost::make_move_iterator(x.begin()) - , boost::make_move_iterator(x.end())); - } + BOOST_ASSERT(this != &x); + allocator_type &this_alloc = this->alloc(); + allocator_type &x_alloc = x.alloc(); + const bool propagate_alloc = allocator_traits_type:: + propagate_on_container_move_assignment::value; + container_detail::bool_ flag; + const bool allocators_equal = this_alloc == x_alloc; (void)allocators_equal; + //Resources can be transferred if both allocators are + //going to be equal after this function (either propagated or already equal) + if(propagate_alloc || allocators_equal){ + //Destroy objects but retain memory in case x reuses it in the future + this->clear(); + //Move allocator if needed + container_detail::move_alloc(this_alloc, x_alloc, flag); + container_detail::move_alloc(this->ptr_alloc(), x.ptr_alloc(), flag); + //Nothrow swap + this->swap_members(x); + } + //Else do a one by one move + else{ + this->assign( boost::make_move_iterator(x.begin()) + , boost::make_move_iterator(x.end())); } return *this; } @@ -1006,9 +969,9 @@ class deque : protected deque_base { return allocator_traits_type::max_size(this->alloc()); } //! Effects: Inserts or erases elements at the end such that - //! the size becomes n. New elements are default constructed. + //! the size becomes n. New elements are value initialized. //! - //! Throws: If memory allocation throws, or T's copy constructor throws. + //! Throws: If memory allocation throws, or T's constructor throws. //! //! Complexity: Linear to the difference between size() and new_size. void resize(size_type new_size) @@ -1018,7 +981,27 @@ class deque : protected deque_base this->priv_erase_last_n(len - new_size); else{ const size_type n = new_size - this->size(); - container_detail::insert_default_constructed_n_proxy proxy(this->alloc()); + container_detail::insert_value_initialized_n_proxy proxy; + priv_insert_back_aux_impl(n, proxy); + } + } + + //! Effects: Inserts or erases elements at the end such that + //! the size becomes n. New elements are default initialized. + //! + //! Throws: If memory allocation throws, or T's constructor throws. + //! + //! Complexity: Linear to the difference between size() and new_size. + //! + //! Note: Non-standard extension + void resize(size_type new_size, default_init_t) + { + const size_type len = size(); + if (new_size < len) + this->priv_erase_last_n(len - new_size); + else{ + const size_type n = new_size - this->size(); + container_detail::insert_default_initialized_n_proxy proxy; priv_insert_back_aux_impl(n, proxy); } } @@ -1175,7 +1158,7 @@ class deque : protected deque_base } else{ typedef container_detail::insert_non_movable_emplace_proxy type; - this->priv_insert_front_aux_impl(1, type(this->alloc(), boost::forward(args)...)); + this->priv_insert_front_aux_impl(1, type(boost::forward(args)...)); } } @@ -1197,7 +1180,7 @@ class deque : protected deque_base } else{ typedef container_detail::insert_non_movable_emplace_proxy type; - this->priv_insert_back_aux_impl(1, type(this->alloc(), boost::forward(args)...)); + this->priv_insert_back_aux_impl(1, type(boost::forward(args)...)); } } @@ -1223,7 +1206,7 @@ class deque : protected deque_base } else{ typedef container_detail::insert_emplace_proxy type; - return this->priv_insert_aux_impl(p, 1, type(this->alloc(), boost::forward(args)...)); + return this->priv_insert_aux_impl(p, 1, type(boost::forward(args)...)); } } @@ -1242,10 +1225,10 @@ class deque : protected deque_base priv_push_front_simple_commit(); \ } \ else{ \ - container_detail::BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, n) \ - proxy \ - (this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \ - priv_insert_front_aux_impl(1, proxy); \ + typedef container_detail::BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, n) \ + type; \ + priv_insert_front_aux_impl \ + (1, type(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \ } \ } \ \ @@ -1260,10 +1243,10 @@ class deque : protected deque_base priv_push_back_simple_commit(); \ } \ else{ \ - container_detail::BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, n) \ - proxy \ - (this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \ - priv_insert_back_aux_impl(1, proxy); \ + typedef container_detail::BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, n) \ + type; \ + priv_insert_back_aux_impl \ + (1, type(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \ } \ } \ \ @@ -1280,10 +1263,10 @@ class deque : protected deque_base return (this->end()-1); \ } \ else{ \ - container_detail::BOOST_PP_CAT(insert_emplace_proxy_arg, n) \ - proxy \ - (this->alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \ - return this->priv_insert_aux_impl(p, 1, proxy); \ + typedef container_detail::BOOST_PP_CAT(insert_emplace_proxy_arg, n) \ + type; \ + return this->priv_insert_aux_impl \ + (p, 1, type(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \ } \ } \ //! @@ -1358,7 +1341,7 @@ class deque : protected deque_base //! Linear time otherwise. iterator insert(const_iterator position, T &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator, const_iterator) #endif //! Requires: pos must be a valid iterator of *this. @@ -1397,7 +1380,7 @@ class deque : protected deque_base ) { size_type n = 0; - iterator it(pos); + iterator it(pos.unconst()); for(;first != last; ++first, ++n){ it = this->emplace(it, *first); ++it; @@ -1417,7 +1400,7 @@ class deque : protected deque_base #endif ) { - container_detail::insert_range_proxy proxy(this->alloc(), first); + container_detail::insert_range_proxy proxy(first); return priv_insert_aux_impl(p, (size_type)std::distance(first, last), proxy); } #endif @@ -1468,15 +1451,15 @@ class deque : protected deque_base //! Constant if pos is the first or the last element. iterator erase(const_iterator pos) BOOST_CONTAINER_NOEXCEPT { - const_iterator next = pos; + iterator next = pos.unconst(); ++next; size_type index = pos - this->members_.m_start; if (index < (this->size()/2)) { - boost::move_backward(begin(), iterator(pos), iterator(next)); + boost::move_backward(this->begin(), pos.unconst(), next); pop_front(); } else { - boost::move(iterator(next), end(), iterator(pos)); + boost::move(next, this->end(), pos.unconst()); pop_back(); } return this->members_.m_start + index; @@ -1500,7 +1483,7 @@ class deque : protected deque_base const size_type n = static_cast(last - first); const size_type elems_before = static_cast(first - this->members_.m_start); if (elems_before < (this->size() - n) - elems_before) { - boost::move_backward(begin(), iterator(first), iterator(last)); + boost::move_backward(begin(), first.unconst(), last.unconst()); iterator new_start = this->members_.m_start + n; if(!Base::traits_t::trivial_dctr_after_move) this->priv_destroy_range(this->members_.m_start, new_start); @@ -1508,7 +1491,7 @@ class deque : protected deque_base this->members_.m_start = new_start; } else { - boost::move(iterator(last), end(), iterator(first)); + boost::move(last.unconst(), end(), first.unconst()); iterator new_finish = this->members_.m_finish - n; if(!Base::traits_t::trivial_dctr_after_move) this->priv_destroy_range(new_finish, this->members_.m_finish); @@ -1557,7 +1540,49 @@ class deque : protected deque_base this->members_.m_finish = this->members_.m_start; } - /// @cond + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const deque& x, const deque& y) + { return x.size() == y.size() && std::equal(x.begin(), x.end(), y.begin()); } + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const deque& x, const deque& y) + { return !(x == y); } + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const deque& x, const deque& y) + { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const deque& x, const deque& y) + { return y < x; } + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const deque& x, const deque& y) + { return !(y < x); } + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const deque& x, const deque& y) + { return !(x < y); } + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(deque& x, deque& y) + { x.swap(y); } + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: void priv_erase_last_n(size_type n) @@ -1590,7 +1615,8 @@ class deque : protected deque_base } else { return priv_insert_aux_impl - (position, (size_type)1, container_detail::get_insert_value_proxy(this->alloc(), ::boost::forward(x))); + ( position, (size_type)1 + , container_detail::get_insert_value_proxy(::boost::forward(x))); } } @@ -1604,7 +1630,8 @@ class deque : protected deque_base } else{ priv_insert_aux_impl - (this->cbegin(), (size_type)1, container_detail::get_insert_value_proxy(this->alloc(), ::boost::forward(x))); + ( this->cbegin(), (size_type)1 + , container_detail::get_insert_value_proxy(::boost::forward(x))); } } @@ -1618,8 +1645,8 @@ class deque : protected deque_base } else{ priv_insert_aux_impl - (this->cend(), (size_type)1, container_detail::get_insert_value_proxy(this->alloc(), ::boost::forward(x))); - container_detail::insert_copy_proxy proxy(this->alloc(), x); + ( this->cend(), (size_type)1 + , container_detail::get_insert_value_proxy(::boost::forward(x))); } } @@ -1656,7 +1683,7 @@ class deque : protected deque_base for(;p != p2; ++p){ allocator_traits_type::destroy ( this->alloc() - , container_detail::to_raw_pointer(&*p) + , container_detail::to_raw_pointer(container_detail::iterator_to_pointer(p)) ); } } @@ -1666,15 +1693,15 @@ class deque : protected deque_base for(;p != p2; ++p){ allocator_traits_type::destroy ( this->alloc() - , container_detail::to_raw_pointer(&*p) + , container_detail::to_raw_pointer(container_detail::iterator_to_pointer(p)) ); } } template - iterator priv_insert_aux_impl(const_iterator p, size_type n, InsertProxy interf) + iterator priv_insert_aux_impl(const_iterator p, size_type n, InsertProxy proxy) { - iterator pos(p); + iterator pos(p.unconst()); const size_type pos_n = p - this->cbegin(); if(!this->members_.m_map){ this->priv_initialize_map(0); @@ -1687,7 +1714,7 @@ class deque : protected deque_base const iterator new_start = this->priv_reserve_elements_at_front(n); const iterator old_start = this->members_.m_start; if(!elemsbefore){ - interf.uninitialized_copy_n_and_update(new_start, n); + proxy.uninitialized_copy_n_and_update(this->alloc(), new_start, n); this->members_.m_start = new_start; } else{ @@ -1698,17 +1725,17 @@ class deque : protected deque_base (this->alloc(), this->members_.m_start, start_n, new_start); this->members_.m_start = new_start; boost::move(start_n, pos, old_start); - interf.copy_n_and_update(pos - n, n); + proxy.copy_n_and_update(this->alloc(), pos - n, n); } else { const size_type mid_count = n - elemsbefore; const iterator mid_start = old_start - mid_count; - interf.uninitialized_copy_n_and_update(mid_start, mid_count); + proxy.uninitialized_copy_n_and_update(this->alloc(), mid_start, mid_count); this->members_.m_start = mid_start; ::boost::container::uninitialized_move_alloc (this->alloc(), old_start, pos, new_start); this->members_.m_start = new_start; - interf.copy_n_and_update(old_start, elemsbefore); + proxy.copy_n_and_update(this->alloc(), old_start, elemsbefore); } } } @@ -1717,7 +1744,7 @@ class deque : protected deque_base const iterator old_finish = this->members_.m_finish; const size_type elemsafter = length - elemsbefore; if(!elemsafter){ - interf.uninitialized_copy_n_and_update(old_finish, n); + proxy.uninitialized_copy_n_and_update(this->alloc(), old_finish, n); this->members_.m_finish = new_finish; } else{ @@ -1728,15 +1755,15 @@ class deque : protected deque_base (this->alloc(), finish_n, old_finish, old_finish); this->members_.m_finish = new_finish; boost::move_backward(pos, finish_n, old_finish); - interf.copy_n_and_update(pos, n); + proxy.copy_n_and_update(this->alloc(), pos, n); } else { const size_type raw_gap = n - elemsafter; ::boost::container::uninitialized_move_alloc (this->alloc(), pos, old_finish, old_finish + raw_gap); BOOST_TRY{ - interf.copy_n_and_update(pos, elemsafter); - interf.uninitialized_copy_n_and_update(old_finish, raw_gap); + proxy.copy_n_and_update(this->alloc(), pos, elemsafter); + proxy.uninitialized_copy_n_and_update(this->alloc(), old_finish, raw_gap); } BOOST_CATCH(...){ this->priv_destroy_range(old_finish, old_finish + elemsafter); @@ -1751,7 +1778,7 @@ class deque : protected deque_base } template - iterator priv_insert_back_aux_impl(size_type n, InsertProxy interf) + iterator priv_insert_back_aux_impl(size_type n, InsertProxy proxy) { if(!this->members_.m_map){ this->priv_initialize_map(0); @@ -1759,20 +1786,20 @@ class deque : protected deque_base iterator new_finish = this->priv_reserve_elements_at_back(n); iterator old_finish = this->members_.m_finish; - interf.uninitialized_copy_n_and_update(old_finish, n); + proxy.uninitialized_copy_n_and_update(this->alloc(), old_finish, n); this->members_.m_finish = new_finish; return iterator(this->members_.m_finish - n); } template - iterator priv_insert_front_aux_impl(size_type n, InsertProxy interf) + iterator priv_insert_front_aux_impl(size_type n, InsertProxy proxy) { if(!this->members_.m_map){ this->priv_initialize_map(0); } iterator new_start = this->priv_reserve_elements_at_front(n); - interf.uninitialized_copy_n_and_update(new_start, n); + proxy.uninitialized_copy_n_and_update(this->alloc(), new_start, n); this->members_.m_start = new_start; return new_start; } @@ -1845,7 +1872,7 @@ class deque : protected deque_base } // Called only if this->members_.m_finish.m_cur == this->members_.m_finish.m_first. - void priv_pop_back_aux() + void priv_pop_back_aux() BOOST_CONTAINER_NOEXCEPT { this->priv_deallocate_node(this->members_.m_finish.m_first); this->members_.m_finish.priv_set_node(this->members_.m_finish.m_node - 1); @@ -1860,7 +1887,7 @@ class deque : protected deque_base // if the deque has at least one element (a precondition for this member // function), and if this->members_.m_start.m_cur == this->members_.m_start.m_last, then the deque // must have at least two nodes. - void priv_pop_front_aux() + void priv_pop_front_aux() BOOST_CONTAINER_NOEXCEPT { allocator_traits_type::destroy ( this->alloc() @@ -1869,7 +1896,7 @@ class deque : protected deque_base this->priv_deallocate_node(this->members_.m_start.m_first); this->members_.m_start.priv_set_node(this->members_.m_start.m_node + 1); this->members_.m_start.m_cur = this->members_.m_start.m_first; - } + } iterator priv_reserve_elements_at_front(size_type n) { @@ -1889,7 +1916,7 @@ class deque : protected deque_base } BOOST_CATCH(...) { for (size_type j = 1; j < i; ++j) - this->priv_deallocate_node(*(this->members_.m_start.m_node - j)); + this->priv_deallocate_node(*(this->members_.m_start.m_node - j)); BOOST_RETHROW } BOOST_CATCH_END @@ -1914,7 +1941,7 @@ class deque : protected deque_base } BOOST_CATCH(...) { for (size_type j = 1; j < i; ++j) - this->priv_deallocate_node(*(this->members_.m_finish.m_node + j)); + this->priv_deallocate_node(*(this->members_.m_finish.m_node + j)); BOOST_RETHROW } BOOST_CATCH_END @@ -1954,45 +1981,12 @@ class deque : protected deque_base this->members_.m_start.priv_set_node(new_nstart); this->members_.m_finish.priv_set_node(new_nstart + old_num_nodes - 1); } - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -// Nonmember functions. -template -inline bool operator==(const deque& x, const deque& y) -{ - return x.size() == y.size() && equal(x.begin(), x.end(), y.begin()); -} - -template -inline bool operator<(const deque& x, const deque& y) -{ - return lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); -} - -template -inline bool operator!=(const deque& x, const deque& y) - { return !(x == y); } - -template -inline bool operator>(const deque& x, const deque& y) - { return y < x; } - -template -inline bool operator>=(const deque& x, const deque& y) - { return !(x < y); } - -template -inline bool operator<=(const deque& x, const deque& y) - { return !(y < x); } - -template -inline void swap(deque& x, deque& y) -{ x.swap(y); } - }} -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace boost { @@ -2005,7 +1999,7 @@ struct has_trivial_destructor_after_move > } -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #include diff --git a/3party/boost/boost/container/detail/adaptive_node_pool.hpp b/3party/boost/boost/container/detail/adaptive_node_pool.hpp new file mode 100644 index 0000000000..f776b51e67 --- /dev/null +++ b/3party/boost/boost/container/detail/adaptive_node_pool.hpp @@ -0,0 +1,162 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_DETAIL_ADAPTIVE_NODE_POOL_HPP +#define BOOST_CONTAINER_DETAIL_ADAPTIVE_NODE_POOL_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { +namespace container { +namespace container_detail { + +template +struct select_private_adaptive_node_pool_impl +{ + typedef boost::container::container_detail:: + private_adaptive_node_pool_impl + < fake_segment_manager + , unsigned(AlignOnly)*::boost::container::adaptive_pool_flag::align_only + | ::boost::container::adaptive_pool_flag::size_ordered | ::boost::container::adaptive_pool_flag::address_ordered + > type; +}; + +//!Pooled memory allocator using an smart adaptive pool. Includes +//!a reference count but the class does not delete itself, this is +//!responsibility of user classes. Node size (NodeSize) and the number of +//!nodes allocated per block (NodesPerBlock) are known at compile time. +template< std::size_t NodeSize + , std::size_t NodesPerBlock + , std::size_t MaxFreeBlocks + , std::size_t OverheadPercent + > +class private_adaptive_node_pool + : public select_private_adaptive_node_pool_impl<(OverheadPercent == 0)>::type +{ + typedef typename select_private_adaptive_node_pool_impl::type base_t; + //Non-copyable + private_adaptive_node_pool(const private_adaptive_node_pool &); + private_adaptive_node_pool &operator=(const private_adaptive_node_pool &); + + public: + typedef typename base_t::multiallocation_chain multiallocation_chain; + static const std::size_t nodes_per_block = NodesPerBlock; + + //!Constructor. Never throws + private_adaptive_node_pool() + : base_t(0 + , NodeSize + , NodesPerBlock + , MaxFreeBlocks + , (unsigned char)OverheadPercent) + {} +}; + +//!Pooled memory allocator using adaptive pool. Includes +//!a reference count but the class does not delete itself, this is +//!responsibility of user classes. Node size (NodeSize) and the number of +//!nodes allocated per block (NodesPerBlock) are known at compile time +template< std::size_t NodeSize + , std::size_t NodesPerBlock + , std::size_t MaxFreeBlocks + , std::size_t OverheadPercent + > +class shared_adaptive_node_pool + : public private_adaptive_node_pool + +{ + private: + typedef private_adaptive_node_pool + private_node_allocator_t; + public: + typedef typename private_node_allocator_t::multiallocation_chain multiallocation_chain; + + //!Constructor. Never throws + shared_adaptive_node_pool() + : private_node_allocator_t(){} + + //!Destructor. Deallocates all allocated blocks. Never throws + ~shared_adaptive_node_pool() + {} + + //!Allocates array of count elements. Can throw std::bad_alloc + void *allocate_node() + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + return private_node_allocator_t::allocate_node(); + } + + //!Deallocates an array pointed by ptr. Never throws + void deallocate_node(void *ptr) + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + private_node_allocator_t::deallocate_node(ptr); + } + + //!Allocates a singly linked list of n nodes ending in null pointer. + //!can throw std::bad_alloc + void allocate_nodes(const std::size_t n, multiallocation_chain &chain) + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + return private_node_allocator_t::allocate_nodes(n, chain); + } + + void deallocate_nodes(multiallocation_chain &chain) + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + private_node_allocator_t::deallocate_nodes(chain); + } + + //!Deallocates all the free blocks of memory. Never throws + void deallocate_free_blocks() + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + private_node_allocator_t::deallocate_free_blocks(); + } + + private: + default_mutex mutex_; +}; + +} //namespace container_detail { +} //namespace container { +} //namespace boost { + +#include + +#endif //#ifndef BOOST_CONTAINER_DETAIL_ADAPTIVE_NODE_POOL_HPP diff --git a/3party/boost/boost/container/detail/adaptive_node_pool_impl.hpp b/3party/boost/boost/container/detail/adaptive_node_pool_impl.hpp index 8b673cf4b7..b7261bf197 100644 --- a/3party/boost/boost/container/detail/adaptive_node_pool_impl.hpp +++ b/3party/boost/boost/container/detail/adaptive_node_pool_impl.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,13 +11,14 @@ #ifndef BOOST_CONTAINER_DETAIL_ADAPTIVE_NODE_POOL_IMPL_HPP #define BOOST_CONTAINER_DETAIL_ADAPTIVE_NODE_POOL_IMPL_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" -#include +#include #include + +#include #include #include #include @@ -481,7 +482,7 @@ class private_adaptive_node_pool_impl free_nodes_iterator itf(nodes.begin()), itbf(itbb); size_type splice_node_count = size_type(-1); while(itf != ite){ - void *pElem = container_detail::to_raw_pointer(&*itf); + void *pElem = container_detail::to_raw_pointer(container_detail::iterator_to_pointer(itf)); block_info_t &block_info = *this->priv_block_from_node(pElem); BOOST_ASSERT(block_info.free_nodes.size() < m_real_num_node); ++splice_node_count; @@ -638,7 +639,7 @@ class private_adaptive_node_pool_impl { //We iterate through the block tree to free the memory const_block_iterator it(m_block_container.begin()); - + if(it != itend){ for(++it; it != itend; ++it){ const_block_iterator prev(it); diff --git a/3party/boost/boost/container/detail/advanced_insert_int.hpp b/3party/boost/boost/container/detail/advanced_insert_int.hpp index 86e2628bd5..b9eb074fdd 100644 --- a/3party/boost/boost/container/detail/advanced_insert_int.hpp +++ b/3party/boost/boost/container/detail/advanced_insert_int.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,12 +11,13 @@ #ifndef BOOST_CONTAINER_ADVANCED_INSERT_INT_HPP #define BOOST_CONTAINER_ADVANCED_INSERT_INT_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include + #include #include #include @@ -33,22 +34,21 @@ struct move_insert_range_proxy typedef typename allocator_traits::size_type size_type; typedef typename allocator_traits::value_type value_type; - move_insert_range_proxy(A& a, FwdIt first) - : a_(a), first_(first) + explicit move_insert_range_proxy(FwdIt first) + : first_(first) {} - void uninitialized_copy_n_and_update(Iterator p, size_type n) + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) { this->first_ = ::boost::container::uninitialized_move_alloc_n_source - (this->a_, this->first_, n, p); + (a, this->first_, n, p); } - void copy_n_and_update(Iterator p, size_type n) + void copy_n_and_update(A &, Iterator p, size_type n) { this->first_ = ::boost::container::move_n_source(this->first_, n, p); } - A &a_; FwdIt first_; }; @@ -59,21 +59,20 @@ struct insert_range_proxy typedef typename allocator_traits::size_type size_type; typedef typename allocator_traits::value_type value_type; - insert_range_proxy(A& a, FwdIt first) - : a_(a), first_(first) + explicit insert_range_proxy(FwdIt first) + : first_(first) {} - void uninitialized_copy_n_and_update(Iterator p, size_type n) + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) { - this->first_ = ::boost::container::uninitialized_copy_alloc_n_source(this->a_, this->first_, n, p); + this->first_ = ::boost::container::uninitialized_copy_alloc_n_source(a, this->first_, n, p); } - void copy_n_and_update(Iterator p, size_type n) + void copy_n_and_update(A &, Iterator p, size_type n) { this->first_ = ::boost::container::copy_n_source(this->first_, n, p); } - A &a_; FwdIt first_; }; @@ -84,42 +83,45 @@ struct insert_n_copies_proxy typedef typename allocator_traits::size_type size_type; typedef typename allocator_traits::value_type value_type; - insert_n_copies_proxy(A& a, const value_type &v) - : a_(a), v_(v) + explicit insert_n_copies_proxy(const value_type &v) + : v_(v) {} - void uninitialized_copy_n_and_update(Iterator p, size_type n) const - { boost::container::uninitialized_fill_alloc_n(this->a_, v_, n, p); } + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) const + { boost::container::uninitialized_fill_alloc_n(a, v_, n, p); } - void copy_n_and_update(Iterator p, size_type n) const + void copy_n_and_update(A &, Iterator p, size_type n) const { std::fill_n(p, n, v_); } - A &a_; const value_type &v_; }; template -struct insert_default_constructed_n_proxy +struct insert_value_initialized_n_proxy { typedef ::boost::container::allocator_traits alloc_traits; typedef typename allocator_traits::size_type size_type; typedef typename allocator_traits::value_type value_type; + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) const + { boost::container::uninitialized_value_init_alloc_n(a, n, p); } - explicit insert_default_constructed_n_proxy(A &a) - : a_(a) - {} + void copy_n_and_update(A &, Iterator, size_type) const + { BOOST_ASSERT(false); } +}; - void uninitialized_copy_n_and_update(Iterator p, size_type n) const - { boost::container::uninitialized_default_alloc_n(this->a_, n, p); } +template +struct insert_default_initialized_n_proxy +{ + typedef ::boost::container::allocator_traits alloc_traits; + typedef typename allocator_traits::size_type size_type; + typedef typename allocator_traits::value_type value_type; - void copy_n_and_update(Iterator, size_type) const - { - BOOST_ASSERT(false); - } + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) const + { boost::container::uninitialized_default_init_alloc_n(a, n, p); } - private: - A &a_; + void copy_n_and_update(A &, Iterator, size_type) const + { BOOST_ASSERT(false); } }; template @@ -129,26 +131,22 @@ struct insert_copy_proxy typedef typename alloc_traits::size_type size_type; typedef typename alloc_traits::value_type value_type; - insert_copy_proxy(A& a, const value_type &v) - : a_(a), v_(v) + explicit insert_copy_proxy(const value_type &v) + : v_(v) {} - void uninitialized_copy_n_and_update(Iterator p, size_type n) const + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) const { BOOST_ASSERT(n == 1); (void)n; - alloc_traits::construct( this->a_ - , container_detail::to_raw_pointer(&*p) - , v_ - ); + alloc_traits::construct( a, iterator_to_raw_pointer(p), v_); } - void copy_n_and_update(Iterator p, size_type n) const + void copy_n_and_update(A &, Iterator p, size_type n) const { BOOST_ASSERT(n == 1); (void)n; *p =v_; } - A &a_; const value_type &v_; }; @@ -160,39 +158,35 @@ struct insert_move_proxy typedef typename alloc_traits::size_type size_type; typedef typename alloc_traits::value_type value_type; - insert_move_proxy(A& a, value_type &v) - : a_(a), v_(v) + explicit insert_move_proxy(value_type &v) + : v_(v) {} - void uninitialized_copy_n_and_update(Iterator p, size_type n) const + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) const { BOOST_ASSERT(n == 1); (void)n; - alloc_traits::construct( this->a_ - , container_detail::to_raw_pointer(&*p) - , ::boost::move(v_) - ); + alloc_traits::construct( a, iterator_to_raw_pointer(p), ::boost::move(v_) ); } - void copy_n_and_update(Iterator p, size_type n) const + void copy_n_and_update(A &, Iterator p, size_type n) const { BOOST_ASSERT(n == 1); (void)n; *p = ::boost::move(v_); } - A &a_; value_type &v_; }; template -insert_move_proxy get_insert_value_proxy(A& a, BOOST_RV_REF(typename std::iterator_traits::value_type) v) +insert_move_proxy get_insert_value_proxy(BOOST_RV_REF(typename std::iterator_traits::value_type) v) { - return insert_move_proxy(a, v); + return insert_move_proxy(v); } template -insert_copy_proxy get_insert_value_proxy(A& a, const typename std::iterator_traits::value_type &v) +insert_copy_proxy get_insert_value_proxy(const typename std::iterator_traits::value_type &v) { - return insert_copy_proxy(a, v); + return insert_copy_proxy(v); } }}} //namespace boost { namespace container { namespace container_detail { @@ -217,26 +211,22 @@ struct insert_non_movable_emplace_proxy typedef typename build_number_seq::type index_tuple_t; - explicit insert_non_movable_emplace_proxy(A &a, Args&&... args) - : a_(a), args_(args...) + explicit insert_non_movable_emplace_proxy(Args&&... args) + : args_(args...) {} - void uninitialized_copy_n_and_update(Iterator p, size_type n) - { this->priv_uninitialized_copy_some_and_update(index_tuple_t(), p, n); } + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) + { this->priv_uninitialized_copy_some_and_update(a, index_tuple_t(), p, n); } private: template - void priv_uninitialized_copy_some_and_update(const index_tuple&, Iterator p, size_type n) + void priv_uninitialized_copy_some_and_update(A &a, const index_tuple&, Iterator p, size_type n) { BOOST_ASSERT(n == 1); (void)n; - alloc_traits::construct( this->a_ - , container_detail::to_raw_pointer(&*p) - , ::boost::forward(get(this->args_))... - ); + alloc_traits::construct( a, iterator_to_raw_pointer(p), ::boost::forward(get(this->args_))... ); } protected: - A &a_; tuple args_; }; @@ -250,32 +240,32 @@ struct insert_emplace_proxy typedef typename base_t::size_type size_type; typedef typename base_t::index_tuple_t index_tuple_t; - explicit insert_emplace_proxy(A &a, Args&&... args) - : base_t(a, ::boost::forward(args)...) + explicit insert_emplace_proxy(Args&&... args) + : base_t(::boost::forward(args)...) {} - void copy_n_and_update(Iterator p, size_type n) - { this->priv_copy_some_and_update(index_tuple_t(), p, n); } + void copy_n_and_update(A &a, Iterator p, size_type n) + { this->priv_copy_some_and_update(a, index_tuple_t(), p, n); } private: template - void priv_copy_some_and_update(const index_tuple&, Iterator p, size_type n) + void priv_copy_some_and_update(A &a, const index_tuple&, Iterator p, size_type n) { BOOST_ASSERT(n ==1); (void)n; aligned_storage::value> v; value_type *vp = static_cast(static_cast(&v)); - alloc_traits::construct(this->a_, vp, + alloc_traits::construct(a, vp, ::boost::forward(get(this->args_))...); BOOST_TRY{ *p = ::boost::move(*vp); } BOOST_CATCH(...){ - alloc_traits::destroy(this->a_, vp); + alloc_traits::destroy(a, vp); BOOST_RETHROW } BOOST_CATCH_END - alloc_traits::destroy(this->a_, vp); + alloc_traits::destroy(a, vp); } }; @@ -298,27 +288,24 @@ struct BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, N) typedef typename alloc_traits::size_type size_type; \ typedef typename alloc_traits::value_type value_type; \ \ - BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, N) \ - ( A &a BOOST_PP_ENUM_TRAILING(N, BOOST_CONTAINER_PP_PARAM_LIST, _) ) \ - : a_(a) \ - BOOST_PP_ENUM_TRAILING(N, BOOST_CONTAINER_PP_PARAM_INIT, _) \ + explicit BOOST_PP_CAT(insert_non_movable_emplace_proxy_arg, N) \ + ( BOOST_PP_ENUM(N, BOOST_CONTAINER_PP_PARAM_LIST, _) ) \ + BOOST_PP_EXPR_IF(N, :) BOOST_PP_ENUM(N, BOOST_CONTAINER_PP_PARAM_INIT, _) \ {} \ \ - void uninitialized_copy_n_and_update(Iterator p, size_type n) \ + void uninitialized_copy_n_and_update(A &a, Iterator p, size_type n) \ { \ BOOST_ASSERT(n == 1); (void)n; \ alloc_traits::construct \ - ( this->a_ \ - , container_detail::to_raw_pointer(&*p) \ + ( a, iterator_to_raw_pointer(p) \ BOOST_PP_ENUM_TRAILING(N, BOOST_CONTAINER_PP_MEMBER_FORWARD, _) \ ); \ } \ \ - void copy_n_and_update(Iterator, size_type) \ + void copy_n_and_update(A &, Iterator, size_type) \ { BOOST_ASSERT(false); } \ \ protected: \ - A &a_; \ BOOST_PP_REPEAT(N, BOOST_CONTAINER_PP_PARAM_DEFINE, _) \ }; \ \ @@ -333,27 +320,27 @@ struct BOOST_PP_CAT(insert_emplace_proxy_arg, N) typedef typename base_t::size_type size_type; \ typedef boost::container::allocator_traits alloc_traits; \ \ - BOOST_PP_CAT(insert_emplace_proxy_arg, N) \ - ( A &a BOOST_PP_ENUM_TRAILING(N, BOOST_CONTAINER_PP_PARAM_LIST, _) ) \ - : base_t(a BOOST_PP_ENUM_TRAILING(N, BOOST_CONTAINER_PP_PARAM_FORWARD, _) ) \ + explicit BOOST_PP_CAT(insert_emplace_proxy_arg, N) \ + ( BOOST_PP_ENUM(N, BOOST_CONTAINER_PP_PARAM_LIST, _) ) \ + : base_t(BOOST_PP_ENUM(N, BOOST_CONTAINER_PP_PARAM_FORWARD, _) ) \ {} \ \ - void copy_n_and_update(Iterator p, size_type n) \ + void copy_n_and_update(A &a, Iterator p, size_type n) \ { \ BOOST_ASSERT(n == 1); (void)n; \ aligned_storage::value> v; \ value_type *vp = static_cast(static_cast(&v)); \ - alloc_traits::construct(this->a_, vp \ + alloc_traits::construct(a, vp \ BOOST_PP_ENUM_TRAILING(N, BOOST_CONTAINER_PP_MEMBER_FORWARD, _)); \ BOOST_TRY{ \ *p = ::boost::move(*vp); \ } \ BOOST_CATCH(...){ \ - alloc_traits::destroy(this->a_, vp); \ + alloc_traits::destroy(a, vp); \ BOOST_RETHROW \ } \ BOOST_CATCH_END \ - alloc_traits::destroy(this->a_, vp); \ + alloc_traits::destroy(a, vp); \ } \ }; \ //! diff --git a/3party/boost/boost/container/detail/algorithms.hpp b/3party/boost/boost/container/detail/algorithms.hpp index 824e44b90d..9358995127 100644 --- a/3party/boost/boost/container/detail/algorithms.hpp +++ b/3party/boost/boost/container/detail/algorithms.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -13,11 +13,11 @@ #ifndef BOOST_CONTAINER_DETAIL_ALGORITHMS_HPP #define BOOST_CONTAINER_DETAIL_ALGORITHMS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include #include @@ -35,13 +35,13 @@ namespace boost { namespace container { template -struct is_default_construct_iterator +struct is_value_init_construct_iterator { static const bool value = false; }; template -struct is_default_construct_iterator > +struct is_value_init_construct_iterator > { static const bool value = true; }; @@ -64,11 +64,17 @@ inline void construct_in_place(A &a, T* dest, InpIt source) //#endif template -inline void construct_in_place(A &a, T *dest, default_construct_iterator) +inline void construct_in_place(A &a, T *dest, value_init_construct_iterator) { boost::container::allocator_traits::construct(a, dest); } +template +inline void construct_in_place(A &a, T *dest, default_init_construct_iterator) +{ + boost::container::allocator_traits::construct(a, dest, default_init); +} + template inline void construct_in_place(A &a, T *dest, emplace_iterator ei) { diff --git a/3party/boost/boost/container/detail/alloc_lib.h b/3party/boost/boost/container/detail/alloc_lib.h new file mode 100644 index 0000000000..4802d9d814 --- /dev/null +++ b/3party/boost/boost/container/detail/alloc_lib.h @@ -0,0 +1,326 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// +#ifndef BOOST_CONTAINER_ALLOC_LIB_EXT_H +#define BOOST_CONTAINER_ALLOC_LIB_EXT_H + +#include + +#ifdef _MSC_VER +#pragma warning (push) +#pragma warning (disable : 4127) + +/* + we need to import/export our code only if the user has specifically + asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost + libraries to be dynamically linked, or BOOST_CONTAINER_DYN_LINK + if they want just this one to be dynamically liked: +*/ +#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_CONTAINER_DYN_LINK) + +/* export if this is our own source, otherwise import: */ +#ifdef BOOST_CONTAINER_SOURCE +# define BOOST_CONTAINER_DECL __declspec(dllexport) +#else +# define BOOST_CONTAINER_DECL __declspec(dllimport) +#endif /* BOOST_CONTAINER_SOURCE */ +#endif /* DYN_LINK */ +#endif /* _MSC_VER */ + +/* if BOOST_CONTAINER_DECL isn't defined yet define it now: */ +#ifndef BOOST_CONTAINER_DECL +#define BOOST_CONTAINER_DECL +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*!An forward iterator to traverse the elements of a memory chain container.*/ +typedef struct multialloc_node_impl +{ + struct multialloc_node_impl *next_node_ptr; +} boost_cont_memchain_node; + + +/*!An forward iterator to traverse the elements of a memory chain container.*/ +typedef struct multialloc_it_impl +{ + boost_cont_memchain_node *node_ptr; +} boost_cont_memchain_it; + +/*!Memory chain: A container holding memory portions allocated by boost_cont_multialloc_nodes + and boost_cont_multialloc_arrays functions.*/ +typedef struct boost_cont_memchain_impl +{ + size_t num_mem; + boost_cont_memchain_node root_node; + boost_cont_memchain_node *last_node_ptr; +} boost_cont_memchain; + +/*!Advances the iterator one position so that it points to the next element in the memory chain*/ +#define BOOST_CONTAINER_MEMIT_NEXT(IT) (IT.node_ptr = IT.node_ptr->next_node_ptr) + +/*!Returns the address of the memory chain currently pointed by the iterator*/ +#define BOOST_CONTAINER_MEMIT_ADDR(IT) ((void*)IT.node_ptr) + +/*!Initializer for an iterator pointing to the position before the first element*/ +#define BOOST_CONTAINER_MEMCHAIN_BEFORE_BEGIN_IT(PMEMCHAIN) { &((PMEMCHAIN)->root_node) } + +/*!Initializer for an iterator pointing to the first element*/ +#define BOOST_CONTAINER_MEMCHAIN_BEGIN_IT(PMEMCHAIN) {(PMEMCHAIN)->root_node.next_node_ptr } + +/*!Initializer for an iterator pointing to the last element*/ +#define BOOST_CONTAINER_MEMCHAIN_LAST_IT(PMEMCHAIN) {(PMEMCHAIN)->last_node_ptr } + +/*!Initializer for an iterator pointing to one past the last element (end iterator)*/ +#define BOOST_CONTAINER_MEMCHAIN_END_IT(PMEMCHAIN) {(boost_cont_memchain_node *)0 } + +/*!True if IT is the end iterator, false otherwise*/ +#define BOOST_CONTAINER_MEMCHAIN_IS_END_IT(PMEMCHAIN, IT) (!(IT).node_ptr) + +/*!The address of the first memory portion hold by the memory chain*/ +#define BOOST_CONTAINER_MEMCHAIN_FIRSTMEM(PMEMCHAIN)((void*)((PMEMCHAIN)->root_node.next_node_ptr)) + +/*!The address of the last memory portion hold by the memory chain*/ +#define BOOST_CONTAINER_MEMCHAIN_LASTMEM(PMEMCHAIN) ((void*)((PMEMCHAIN)->last_node_ptr)) + +/*!The number of memory portions hold by the memory chain*/ +#define BOOST_CONTAINER_MEMCHAIN_SIZE(PMEMCHAIN) ((PMEMCHAIN)->num_mem) + +/*!Initializes the memory chain from the first memory portion, the last memory + portion and number of portions obtained from another memory chain*/ +#define BOOST_CONTAINER_MEMCHAIN_INIT_FROM(PMEMCHAIN, FIRST, LAST, NUM)\ + (PMEMCHAIN)->last_node_ptr = (boost_cont_memchain_node *)(LAST), \ + (PMEMCHAIN)->root_node.next_node_ptr = (boost_cont_memchain_node *)(FIRST), \ + (PMEMCHAIN)->num_mem = (NUM);\ +/**/ + +/*!Default initializes a memory chain. Postconditions: begin iterator is end iterator, + the number of portions is zero.*/ +#define BOOST_CONTAINER_MEMCHAIN_INIT(PMEMCHAIN)\ + ((PMEMCHAIN)->root_node.next_node_ptr = 0, (PMEMCHAIN)->last_node_ptr = &((PMEMCHAIN)->root_node), (PMEMCHAIN)->num_mem = 0)\ +/**/ + +/*!True if the memory chain is empty (holds no memory portions*/ +#define BOOST_CONTAINER_MEMCHAIN_EMPTY(PMEMCHAIN)\ + ((PMEMCHAIN)->num_mem == 0)\ +/**/ + +/*!Inserts a new memory portions in the front of the chain*/ +#define BOOST_CONTAINER_MEMCHAIN_PUSH_BACK(PMEMCHAIN, MEM)\ + do{\ + boost_cont_memchain *____chain____ = (PMEMCHAIN);\ + boost_cont_memchain_node *____tmp_mem____ = (boost_cont_memchain_node *)(MEM);\ + ____chain____->last_node_ptr->next_node_ptr = ____tmp_mem____;\ + ____tmp_mem____->next_node_ptr = 0;\ + ____chain____->last_node_ptr = ____tmp_mem____;\ + ++____chain____->num_mem;\ + }while(0)\ +/**/ + +/*!Inserts a new memory portions in the back of the chain*/ +#define BOOST_CONTAINER_MEMCHAIN_PUSH_FRONT(PMEMCHAIN, MEM)\ + do{\ + boost_cont_memchain *____chain____ = (PMEMCHAIN);\ + boost_cont_memchain_node *____tmp_mem____ = (boost_cont_memchain_node *)(MEM);\ + boost_cont_memchain *____root____ = &((PMEMCHAIN)->root_node);\ + if(!____chain____->root_node.next_node_ptr){\ + ____chain____->last_node_ptr = ____tmp_mem____;\ + }\ + boost_cont_memchain_node *____old_first____ = ____root____->next_node_ptr;\ + ____tmp_mem____->next_node_ptr = ____old_first____;\ + ____root____->next_node_ptr = ____tmp_mem____;\ + ++____chain____->num_mem;\ + }while(0)\ +/**/ + +/*!Erases the memory portion after the portion pointed by BEFORE_IT from the memory chain*/ +/*!Precondition: BEFORE_IT must be a valid iterator of the memory chain and it can't be the end iterator*/ +#define BOOST_CONTAINER_MEMCHAIN_ERASE_AFTER(PMEMCHAIN, BEFORE_IT)\ + do{\ + boost_cont_memchain *____chain____ = (PMEMCHAIN);\ + boost_cont_memchain_node *____prev_node____ = (BEFORE_IT).node_ptr;\ + boost_cont_memchain_node *____erase_node____ = ____prev_node____->next_node_ptr;\ + if(____chain____->last_node_ptr == ____erase_node____){\ + ____chain____->last_node_ptr = &____chain____->root_node;\ + }\ + ____prev_node____->next_node_ptr = ____erase_node____->next_node_ptr;\ + --____chain____->num_mem;\ + }while(0)\ +/**/ + +/*!Erases the first portion from the memory chain. + Precondition: the memory chain must not be empty*/ +#define BOOST_CONTAINER_MEMCHAIN_POP_FRONT(PMEMCHAIN)\ + do{\ + boost_cont_memchain *____chain____ = (PMEMCHAIN);\ + boost_cont_memchain_node *____prev_node____ = &____chain____->root_node;\ + boost_cont_memchain_node *____erase_node____ = ____prev_node____->next_node_ptr;\ + if(____chain____->last_node_ptr == ____erase_node____){\ + ____chain____->last_node_ptr = &____chain____->root_node;\ + }\ + ____prev_node____->next_node_ptr = ____erase_node____->next_node_ptr;\ + --____chain____->num_mem;\ + }while(0)\ +/**/ + +/*!Joins two memory chains inserting the portions of the second chain at the back of the first chain*/ +/* +#define BOOST_CONTAINER_MEMCHAIN_SPLICE_BACK(PMEMCHAIN, PMEMCHAIN2)\ + do{\ + boost_cont_memchain *____chain____ = (PMEMCHAIN);\ + boost_cont_memchain *____chain2____ = (PMEMCHAIN2);\ + if(!____chain2____->root_node.next_node_ptr){\ + break;\ + }\ + else if(!____chain____->first_mem){\ + ____chain____->first_mem = ____chain2____->first_mem;\ + ____chain____->last_node_ptr = ____chain2____->last_node_ptr;\ + ____chain____->num_mem = ____chain2____->num_mem;\ + BOOST_CONTAINER_MEMCHAIN_INIT(*____chain2____);\ + }\ + else{\ + ____chain____->last_node_ptr->next_node_ptr = ____chain2____->first_mem;\ + ____chain____->last_node_ptr = ____chain2____->last_node_ptr;\ + ____chain____->num_mem += ____chain2____->num_mem;\ + }\ + }while(0)\*/ +/**/ + +/*!Joins two memory chains inserting the portions of the second chain at the back of the first chain*/ +#define BOOST_CONTAINER_MEMCHAIN_INCORPORATE_AFTER(PMEMCHAIN, BEFORE_IT, FIRST, BEFORELAST, NUM)\ + do{\ + boost_cont_memchain *____chain____ = (PMEMCHAIN);\ + boost_cont_memchain_node *____pnode____ = (BEFORE_IT).node_ptr;\ + boost_cont_memchain_node *____next____ = ____pnode____->next_node_ptr;\ + boost_cont_memchain_node *____first____ = (boost_cont_memchain_node *)(FIRST);\ + boost_cont_memchain_node *____blast____ = (boost_cont_memchain_node *)(BEFORELAST);\ + size_t ____num____ = (NUM);\ + if(!____num____){\ + break;\ + }\ + if(____pnode____ == ____chain____->last_node_ptr){\ + ____chain____->last_node_ptr = ____blast____;\ + }\ + ____pnode____->next_node_ptr = ____first____;\ + ____blast____->next_node_ptr = ____next____;\ + ____chain____->num_mem += ____num____;\ + }while(0)\ +/**/ + +BOOST_CONTAINER_DECL size_t boost_cont_size(const void *p); + +BOOST_CONTAINER_DECL void* boost_cont_malloc(size_t bytes); + +BOOST_CONTAINER_DECL void boost_cont_free(void* mem); + +BOOST_CONTAINER_DECL void* boost_cont_memalign(size_t bytes, size_t alignment); + +/*!Indicates the all elements allocated by boost_cont_multialloc_nodes or boost_cont_multialloc_arrays + must be contiguous.*/ +#define DL_MULTIALLOC_ALL_CONTIGUOUS ((size_t)(-1)) + +/*!Indicates the number of contiguous elements allocated by boost_cont_multialloc_nodes or boost_cont_multialloc_arrays + should be selected by those functions.*/ +#define DL_MULTIALLOC_DEFAULT_CONTIGUOUS ((size_t)(0)) + +BOOST_CONTAINER_DECL int boost_cont_multialloc_nodes + (size_t n_elements, size_t elem_size, size_t contiguous_elements, boost_cont_memchain *pchain); + +BOOST_CONTAINER_DECL int boost_cont_multialloc_arrays + (size_t n_elements, const size_t *sizes, size_t sizeof_element, size_t contiguous_elements, boost_cont_memchain *pchain); + +BOOST_CONTAINER_DECL void boost_cont_multidealloc(boost_cont_memchain *pchain); + +BOOST_CONTAINER_DECL size_t boost_cont_footprint(); + +BOOST_CONTAINER_DECL size_t boost_cont_allocated_memory(); + +BOOST_CONTAINER_DECL size_t boost_cont_chunksize(const void *p); + +BOOST_CONTAINER_DECL int boost_cont_all_deallocated(); + +typedef struct boost_cont_malloc_stats_impl +{ + size_t max_system_bytes; + size_t system_bytes; + size_t in_use_bytes; +} boost_cont_malloc_stats_t; + +BOOST_CONTAINER_DECL boost_cont_malloc_stats_t boost_cont_malloc_stats(); + +BOOST_CONTAINER_DECL size_t boost_cont_in_use_memory(); + +BOOST_CONTAINER_DECL int boost_cont_trim(size_t pad); + +BOOST_CONTAINER_DECL int boost_cont_mallopt + (int parameter_number, int parameter_value); + +BOOST_CONTAINER_DECL int boost_cont_grow + (void* oldmem, size_t minbytes, size_t maxbytes, size_t *received); + +BOOST_CONTAINER_DECL int boost_cont_shrink + (void* oldmem, size_t minbytes, size_t maxbytes, size_t *received, int do_commit); + +BOOST_CONTAINER_DECL void* boost_cont_alloc + (size_t minbytes, size_t preferred_bytes, size_t *received_bytes); + +BOOST_CONTAINER_DECL int boost_cont_malloc_check(); + +typedef unsigned int allocation_type; + +enum +{ + // constants for allocation commands + BOOST_CONTAINER_ALLOCATE_NEW = 0X01, + BOOST_CONTAINER_EXPAND_FWD = 0X02, + BOOST_CONTAINER_EXPAND_BWD = 0X04, + BOOST_CONTAINER_SHRINK_IN_PLACE = 0X08, + BOOST_CONTAINER_NOTHROW_ALLOCATION = 0X10, +// BOOST_CONTAINER_ZERO_MEMORY = 0X20, + BOOST_CONTAINER_TRY_SHRINK_IN_PLACE = 0X40, + BOOST_CONTAINER_EXPAND_BOTH = BOOST_CONTAINER_EXPAND_FWD | BOOST_CONTAINER_EXPAND_BWD, + BOOST_CONTAINER_EXPAND_OR_NEW = BOOST_CONTAINER_ALLOCATE_NEW | BOOST_CONTAINER_EXPAND_BOTH +}; + +//#define BOOST_CONTAINERDLMALLOC__FOOTERS +#ifndef BOOST_CONTAINERDLMALLOC__FOOTERS +enum { BOOST_CONTAINER_ALLOCATION_PAYLOAD = sizeof(size_t) }; +#else +enum { BOOST_CONTAINER_ALLOCATION_PAYLOAD = sizeof(size_t)*2 }; +#endif + +typedef struct boost_cont_command_ret_impl +{ + void *first; + int second; +}boost_cont_command_ret_t; + +BOOST_CONTAINER_DECL boost_cont_command_ret_t boost_cont_allocation_command + ( allocation_type command + , size_t sizeof_object + , size_t limit_objects + , size_t preferred_objects + , size_t *received_objects + , void *reuse_ptr + ); + +BOOST_CONTAINER_DECL int boost_cont_mallopt(int param_number, int value); + +#ifdef __cplusplus +} //extern "C" { +#endif + +#ifdef _MSC_VER +#pragma warning (pop) +#endif + + +#endif //#define BOOST_CONTAINERDLMALLOC__EXT_H diff --git a/3party/boost/boost/container/detail/alloc_lib_auto_link.hpp b/3party/boost/boost/container/detail/alloc_lib_auto_link.hpp new file mode 100644 index 0000000000..e424890f13 --- /dev/null +++ b/3party/boost/boost/container/detail/alloc_lib_auto_link.hpp @@ -0,0 +1,16 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// +#ifndef BOOST_CONTAINER_DETAIL_BOOST_CONT_EXT_AUTO_LINK_HPP +#define BOOST_CONTAINER_DETAIL_BOOST_CONT_EXT_AUTO_LINK_HPP + +#include +#include + +#endif //#ifndef BOOST_CONTAINER_DETAIL_BOOST_CONT_EXT_AUTO_LINK_HPP diff --git a/3party/boost/boost/container/detail/allocation_type.hpp b/3party/boost/boost/container/detail/allocation_type.hpp index 1ebf20ed70..65d543ad50 100644 --- a/3party/boost/boost/container/detail/allocation_type.hpp +++ b/3party/boost/boost/container/detail/allocation_type.hpp @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,19 +11,19 @@ #ifndef BOOST_CONTAINER_ALLOCATION_TYPE_HPP #define BOOST_CONTAINER_ALLOCATION_TYPE_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include namespace boost { namespace container { -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED enum allocation_type_v -{ +{ // constants for allocation commands allocate_new_v = 0x01, expand_fwd_v = 0x02, @@ -37,7 +37,7 @@ enum allocation_type_v }; typedef int allocation_type; -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED static const allocation_type allocate_new = (allocation_type)allocate_new_v; static const allocation_type expand_fwd = (allocation_type)expand_fwd_v; static const allocation_type expand_bwd = (allocation_type)expand_bwd_v; diff --git a/3party/boost/boost/container/detail/allocator_version_traits.hpp b/3party/boost/boost/container/detail/allocator_version_traits.hpp index 4cef676adf..d4567da0d7 100644 --- a/3party/boost/boost/container/detail/allocator_version_traits.hpp +++ b/3party/boost/boost/container/detail/allocator_version_traits.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2012-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2012-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,12 +11,13 @@ #ifndef BOOST_CONTAINER_DETAIL_ALLOCATOR_VERSION_TRAITS_HPP #define BOOST_CONTAINER_DETAIL_ALLOCATOR_VERSION_TRAITS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif #include #include + #include //allocator_traits #include #include //multiallocation_chain @@ -92,8 +93,12 @@ struct allocator_version_traits static void deallocate_individual(Allocator &a, multiallocation_chain &holder) { - while(!holder.empty()){ - a.deallocate(holder.pop_front(), 1); + size_type n = holder.size(); + typename multiallocation_chain::iterator it = holder.begin(); + while(n--){ + pointer p = boost::intrusive::pointer_traits::pointer_to(*it); + ++it; + a.deallocate(p, 1); } } diff --git a/3party/boost/boost/container/detail/auto_link.hpp b/3party/boost/boost/container/detail/auto_link.hpp new file mode 100644 index 0000000000..2e4733363d --- /dev/null +++ b/3party/boost/boost/container/detail/auto_link.hpp @@ -0,0 +1,38 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// +#ifndef BOOST_CONTAINER_DETAIL_AUTO_LINK_HPP_INCLUDED +#define BOOST_CONTAINER_DETAIL_AUTO_LINK_HPP_INCLUDED + +#if defined(_MSC_VER) +# pragma once +#endif + +// +// Automatically link to the correct build variant where possible. +// +#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_CONTAINER_NO_LIB) && !defined(BOOST_CONTAINER_SOURCE) +// +// Set the name of our library, this will get undef'ed by auto_link.hpp +// once it's done with it: +// +#define BOOST_LIB_NAME boost_container +// +// If we're importing code from a dll, then tell auto_link.hpp about it: +// +#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_CONTAINER_DYN_LINK) +# define BOOST_DYN_LINK +#endif +// +// And include the header that does the work: +// +#include +#endif // auto-linking disabled + +#endif //#ifndef BOOST_CONTAINER_DETAIL_AUTO_LINK_HPP_INCLUDED diff --git a/3party/boost/boost/container/detail/config_begin.hpp b/3party/boost/boost/container/detail/config_begin.hpp index 83c2cfe40c..6c54befcc7 100644 --- a/3party/boost/boost/container/detail/config_begin.hpp +++ b/3party/boost/boost/container/detail/config_begin.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -18,6 +18,10 @@ #define BOOST_CONTAINER_DETAIL_CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_DEPRECATE #endif + #ifndef _SCL_SECURE_NO_WARNINGS + #define BOOST_CONTAINER_DETAIL_SCL_SECURE_NO_WARNINGS + #define _SCL_SECURE_NO_WARNINGS + #endif #pragma warning (push) #pragma warning (disable : 4702) // unreachable code #pragma warning (disable : 4706) // assignment within conditional expression @@ -46,4 +50,5 @@ #pragma warning (disable : 4673) // throwing '' the following types will not be considered at the catch site #pragma warning (disable : 4671) // the copy constructor is inaccessible #pragma warning (disable : 4584) // X is already a base-class of Y + #pragma warning (disable : 4510) // default constructor could not be generated #endif //BOOST_MSVC diff --git a/3party/boost/boost/container/detail/config_end.hpp b/3party/boost/boost/container/detail/config_end.hpp index 34513718cc..7217019b85 100644 --- a/3party/boost/boost/container/detail/config_end.hpp +++ b/3party/boost/boost/container/detail/config_end.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -13,5 +13,9 @@ #undef BOOST_CONTAINER_DETAIL_CRT_SECURE_NO_DEPRECATE #undef _CRT_SECURE_NO_DEPRECATE #endif + #ifdef BOOST_CONTAINER_DETAIL_SCL_SECURE_NO_WARNINGS + #undef BOOST_CONTAINER_DETAIL_SCL_SECURE_NO_WARNINGS + #undef _SCL_SECURE_NO_WARNINGS + #endif #endif diff --git a/3party/boost/boost/container/detail/destroyers.hpp b/3party/boost/boost/container/detail/destroyers.hpp index f9bfd867ae..064589584c 100644 --- a/3party/boost/boost/container/detail/destroyers.hpp +++ b/3party/boost/boost/container/detail/destroyers.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -13,12 +13,13 @@ #ifndef BOOST_CONTAINER_DESTROYERS_HPP #define BOOST_CONTAINER_DESTROYERS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include + #include #include #include @@ -68,6 +69,9 @@ struct scoped_deallocator pointer get() const { return m_ptr; } + void set(const pointer &p) + { m_ptr = p; } + void release() { m_ptr = 0; } }; @@ -87,6 +91,9 @@ struct null_scoped_deallocator pointer get() const { return pointer(); } + + void set(const pointer &) + {} }; //!A deleter for scoped_ptr that deallocates the memory @@ -191,7 +198,7 @@ struct scoped_destructor_n void shrink_forward(size_type inc) { m_n -= inc; m_p += inc; } - + ~scoped_destructor_n() { if(!m_p) return; @@ -225,6 +232,9 @@ struct null_scoped_destructor_n void increment_size_backwards(size_type) {} + void shrink_forward(size_type) + {} + void release() {} }; @@ -249,6 +259,11 @@ class scoped_destructor void release() { pv_ = 0; } + + void set(value_type *ptr) { pv_ = ptr; } + + value_type *get() const { return pv_; } + private: value_type *pv_; A &a_; diff --git a/3party/boost/boost/container/detail/flat_tree.hpp b/3party/boost/boost/container/detail/flat_tree.hpp index 90f0352836..7ccf33ca9d 100644 --- a/3party/boost/boost/container/detail/flat_tree.hpp +++ b/3party/boost/boost/container/detail/flat_tree.hpp @@ -1,6 +1,6 @@ //////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,11 +11,11 @@ #ifndef BOOST_CONTAINER_FLAT_TREE_HPP #define BOOST_CONTAINER_FLAT_TREE_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include #include @@ -51,7 +51,7 @@ class flat_tree_value_compare typedef Value first_argument_type; typedef Value second_argument_type; typedef bool return_type; - public: + public: flat_tree_value_compare() : Compare() {} @@ -68,7 +68,7 @@ class flat_tree_value_compare const Compare &get_comp() const { return *this; } - + Compare &get_comp() { return *this; } }; @@ -85,9 +85,9 @@ struct get_flat_tree_iterators rebind_pointer::type const_iterator; #else //BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER typedef typename container_detail:: - vector_iterator iterator; + vec_iterator iterator; typedef typename container_detail:: - vector_const_iterator const_iterator; + vec_iterator const_iterator; #endif //BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; @@ -115,7 +115,7 @@ class flat_tree : value_compare(), m_vect() {} - Data(const Data &d) + explicit Data(const Data &d) : value_compare(static_cast(d)), m_vect(d.m_vect) {} @@ -131,15 +131,18 @@ class flat_tree : value_compare(boost::move(static_cast(d))), m_vect(boost::move(d.m_vect), a) {} - Data(const Compare &comp) + explicit Data(const Compare &comp) : value_compare(comp), m_vect() {} - Data(const Compare &comp, - const allocator_t &alloc) + Data(const Compare &comp, const allocator_t &alloc) : value_compare(comp), m_vect(alloc) {} + explicit Data(const allocator_t &alloc) + : value_compare(), m_vect(alloc) + {} + Data& operator=(BOOST_COPY_ASSIGN_REF(Data) d) { this->value_compare::operator=(d); @@ -203,6 +206,10 @@ class flat_tree : m_data(comp, a) { } + explicit flat_tree(const allocator_type& a) + : m_data(a) + { } + flat_tree(const flat_tree& x) : m_data(x.m_data) { } @@ -233,16 +240,24 @@ class flat_tree , const allocator_type& a = allocator_type()) : m_data(comp, a) { + //Use cend() as hint to achieve linear time for + //ordered ranges as required by the standard + //for the constructor + //Call end() every iteration as reallocation might have invalidated iterators if(unique_insertion){ - this->insert_unique(first, last); + for ( ; first != last; ++first){ + this->insert_unique(this->cend(), *first); + } } else{ - this->insert_equal(first, last); + for ( ; first != last; ++first){ + this->insert_equal(this->cend(), *first); + } } } ~flat_tree() - { } + {} flat_tree& operator=(BOOST_COPY_ASSIGN_REF(flat_tree) x) { m_data = x.m_data; return *this; } @@ -250,11 +265,14 @@ class flat_tree flat_tree& operator=(BOOST_RV_REF(flat_tree) mx) { m_data = boost::move(mx.m_data); return *this; } - public: + public: // accessors: Compare key_comp() const { return this->m_data.get_comp(); } + value_compare value_comp() const + { return this->m_data; } + allocator_type get_allocator() const { return this->m_data.m_vect.get_allocator(); } @@ -316,21 +334,21 @@ class flat_tree // insert/erase std::pair insert_unique(const value_type& val) { + std::pair ret; insert_commit_data data; - std::pair ret = this->priv_insert_unique_prepare(val, data); - if(ret.second){ - ret.first = this->priv_insert_commit(data, val); - } + ret.second = this->priv_insert_unique_prepare(val, data); + ret.first = ret.second ? this->priv_insert_commit(data, val) + : iterator(vector_iterator_get_ptr(data.position)); return ret; } std::pair insert_unique(BOOST_RV_REF(value_type) val) { + std::pair ret; insert_commit_data data; - std::pair ret = this->priv_insert_unique_prepare(val, data); - if(ret.second){ - ret.first = this->priv_insert_commit(data, boost::move(val)); - } + ret.second = this->priv_insert_unique_prepare(val, data); + ret.first = ret.second ? this->priv_insert_commit(data, boost::move(val)) + : iterator(vector_iterator_get_ptr(data.position)); return ret; } @@ -350,22 +368,20 @@ class flat_tree iterator insert_unique(const_iterator pos, const value_type& val) { + std::pair ret; insert_commit_data data; - std::pair ret = this->priv_insert_unique_prepare(pos, val, data); - if(ret.second){ - ret.first = this->priv_insert_commit(data, val); - } - return ret.first; + return this->priv_insert_unique_prepare(pos, val, data) + ? this->priv_insert_commit(data, val) + : iterator(vector_iterator_get_ptr(data.position)); } - iterator insert_unique(const_iterator pos, BOOST_RV_REF(value_type) mval) + iterator insert_unique(const_iterator pos, BOOST_RV_REF(value_type) val) { + std::pair ret; insert_commit_data data; - std::pair ret = this->priv_insert_unique_prepare(pos, mval, data); - if(ret.second){ - ret.first = this->priv_insert_commit(data, boost::move(mval)); - } - return ret.first; + return this->priv_insert_unique_prepare(pos, val, data) + ? this->priv_insert_commit(data, boost::move(val)) + : iterator(vector_iterator_get_ptr(data.position)); } iterator insert_equal(const_iterator pos, const value_type& val) @@ -384,7 +400,11 @@ class flat_tree template void insert_unique(InIt first, InIt last) - { this->priv_insert_unique_loop(first, last); } + { + for ( ; first != last; ++first){ + this->insert_unique(*first); + } + } template void insert_equal(InIt first, InIt last @@ -456,21 +476,36 @@ class flat_tree const const_iterator b(this->cbegin()); const_iterator pos(b); //Loop in burst sizes - while(len){ - const size_type burst = len < BurstSize ? len : BurstSize; + bool back_insert = false; + while(len && !back_insert){ + size_type burst = len < BurstSize ? len : BurstSize; const const_iterator ce(this->cend()); - len -= burst; for(size_type i = 0; i != burst; ++i){ - //Get the insertion position for each key - pos = const_cast(*this).priv_upper_bound(pos, ce, KeyOfValue()(*first)); - positions[i] = static_cast(pos - b); - ++first; + //Get the insertion position for each key, use std::iterator_traits::value_type + //because it can be different from container::value_type + //(e.g. conversion between std::pair -> boost::container::pair + const typename std::iterator_traits::value_type & val = *first; + pos = const_cast(*this).priv_upper_bound(pos, ce, KeyOfValue()(val)); + if(pos == this->cend()){ //this element and the remaining should be back inserted + burst = i; + back_insert = true; + break; + } + else{ + positions[i] = static_cast(pos - b); + ++first; + --len; + } } //Insert all in a single step in the precalculated positions this->m_data.m_vect.insert_ordered_at(burst, positions + burst, first); - //Next search position updated + //Next search position updated, iterator still valid because we've preserved the vector pos += burst; } + if(first != last){ + //The remaining range should be back inserted + this->m_data.m_vect.insert(this->m_data.m_vect.cend(), len, first, last); + } } template @@ -482,7 +517,13 @@ class flat_tree >::type * = 0 #endif ) - { this->priv_insert_unique_loop_hint(first, last); } + { + const_iterator pos(this->cend()); + for ( ; first != last; ++first){ + pos = this->insert_unique(pos, *first); + ++pos; + } + } template void insert_unique(ordered_unique_range_t, BidirIt first, BidirIt last @@ -503,37 +544,50 @@ class flat_tree this->reserve(this->size()+len); const const_iterator b(this->cbegin()); const_iterator pos(b); - const value_compare &value_comp = this->m_data; + const value_compare &val_cmp = this->m_data; skips[0u] = 0u; //Loop in burst sizes - while(len){ + bool back_insert = false; + while(len && !back_insert){ const size_type burst = len < BurstSize ? len : BurstSize; size_type unique_burst = 0u; const const_iterator ce(this->cend()); while(unique_burst < burst && len > 0){ - //Get the insertion position for each key - const value_type & val = *first++; - --len; + //Get the insertion position for each key, use std::iterator_traits::value_type + //because it can be different from container::value_type + //(e.g. conversion between std::pair -> boost::container::pair + const typename std::iterator_traits::value_type & val = *first; pos = const_cast(*this).priv_lower_bound(pos, ce, KeyOfValue()(val)); //Check if already present - if(pos != ce && !value_comp(val, *pos)){ - if(unique_burst > 0){ - ++skips[unique_burst-1]; + if (pos != ce){ + ++first; + --len; + if(!val_cmp(val, *pos)){ + if(unique_burst > 0){ + ++skips[unique_burst-1]; + } + continue; } - continue; + //If not present, calculate position + positions[unique_burst] = static_cast(pos - b); + skips[unique_burst++] = 0u; + } + else{ //this element and the remaining should be back inserted + back_insert = true; + break; } - - //If not present, calculate position - positions[unique_burst] = static_cast(pos - b); - skips[unique_burst++] = 0u; } if(unique_burst){ //Insert all in a single step in the precalculated positions this->m_data.m_vect.insert_ordered_at(unique_burst, positions + unique_burst, skips + unique_burst, first); - //Next search position updated + //Next search position updated, iterator still valid because we've preserved the vector pos += unique_burst; } } + if(first != last){ + //The remaining range should be back inserted + this->m_data.m_vect.insert(this->m_data.m_vect.cend(), len, first, last); + } } #ifdef BOOST_CONTAINER_PERFECT_FORWARDING @@ -546,13 +600,7 @@ class flat_tree stored_allocator_type &a = this->get_stored_allocator(); stored_allocator_traits::construct(a, &val, ::boost::forward(args)... ); value_destructor d(a, val); - insert_commit_data data; - std::pair ret = - this->priv_insert_unique_prepare(val, data); - if(ret.second){ - ret.first = this->priv_insert_commit(data, boost::move(val)); - } - return ret; + return this->insert_unique(::boost::move(val)); } template @@ -563,12 +611,7 @@ class flat_tree stored_allocator_type &a = this->get_stored_allocator(); stored_allocator_traits::construct(a, &val, ::boost::forward(args)... ); value_destructor d(a, val); - insert_commit_data data; - std::pair ret = this->priv_insert_unique_prepare(hint, val, data); - if(ret.second){ - ret.first = this->priv_insert_commit(data, boost::move(val)); - } - return ret.first; + return this->insert_unique(hint, ::boost::move(val)); } template @@ -579,9 +622,7 @@ class flat_tree stored_allocator_type &a = this->get_stored_allocator(); stored_allocator_traits::construct(a, &val, ::boost::forward(args)... ); value_destructor d(a, val); - iterator i = this->upper_bound(KeyOfValue()(val)); - i = this->m_data.m_vect.insert(i, boost::move(val)); - return i; + return this->insert_equal(::boost::move(val)); } template @@ -592,10 +633,7 @@ class flat_tree stored_allocator_type &a = this->get_stored_allocator(); stored_allocator_traits::construct(a, &val, ::boost::forward(args)... ); value_destructor d(a, val); - insert_commit_data data; - this->priv_insert_equal_prepare(hint, val, data); - iterator i = this->priv_insert_commit(data, boost::move(val)); - return i; + return this->insert_equal(hint, ::boost::move(val)); } #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING @@ -611,12 +649,7 @@ class flat_tree stored_allocator_traits::construct(a, &val \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) ); \ value_destructor d(a, val); \ - insert_commit_data data; \ - std::pair ret = this->priv_insert_unique_prepare(val, data); \ - if(ret.second){ \ - ret.first = this->priv_insert_commit(data, boost::move(val)); \ - } \ - return ret; \ + return this->insert_unique(::boost::move(val)); \ } \ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ @@ -628,13 +661,8 @@ class flat_tree stored_allocator_type &a = this->get_stored_allocator(); \ stored_allocator_traits::construct(a, &val \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) ); \ - value_destructor d(a, val); \ - insert_commit_data data; \ - std::pair ret = this->priv_insert_unique_prepare(hint, val, data); \ - if(ret.second){ \ - ret.first = this->priv_insert_commit(data, boost::move(val)); \ - } \ - return ret.first; \ + value_destructor d(a, val); \ + return this->insert_unique(hint, ::boost::move(val)); \ } \ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ @@ -646,9 +674,7 @@ class flat_tree stored_allocator_traits::construct(a, &val \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) ); \ value_destructor d(a, val); \ - iterator i = this->upper_bound(KeyOfValue()(val)); \ - i = this->m_data.m_vect.insert(i, boost::move(val)); \ - return i; \ + return this->insert_equal(::boost::move(val)); \ } \ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ @@ -661,12 +687,8 @@ class flat_tree stored_allocator_traits::construct(a, &val \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _) ); \ value_destructor d(a, val); \ - insert_commit_data data; \ - this->priv_insert_equal_prepare(hint, val, data); \ - iterator i = this->priv_insert_commit(data, boost::move(val)); \ - return i; \ + return this->insert_equal(hint, ::boost::move(val)); \ } \ - //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) #include BOOST_PP_LOCAL_ITERATE() @@ -704,26 +726,26 @@ class flat_tree // set operations: iterator find(const key_type& k) { - const Compare &key_cmp = this->m_data.get_comp(); iterator i = this->lower_bound(k); - - if (i != this->end() && key_cmp(k, KeyOfValue()(*i))){ - i = this->end(); + iterator end_it = this->end(); + if (i != end_it && this->m_data.get_comp()(k, KeyOfValue()(*i))){ + i = end_it; } return i; } const_iterator find(const key_type& k) const { - const Compare &key_cmp = this->m_data.get_comp(); const_iterator i = this->lower_bound(k); - if (i != this->end() && key_cmp(k, KeyOfValue()(*i))){ - i = this->end(); + const_iterator end_it = this->cend(); + if (i != end_it && this->m_data.get_comp()(k, KeyOfValue()(*i))){ + i = end_it; } return i; } + // set operations: size_type count(const key_type& k) const { std::pair p = this->equal_range(k); @@ -735,26 +757,58 @@ class flat_tree { return this->priv_lower_bound(this->begin(), this->end(), k); } const_iterator lower_bound(const key_type& k) const - { return this->priv_lower_bound(this->begin(), this->end(), k); } + { return this->priv_lower_bound(this->cbegin(), this->cend(), k); } iterator upper_bound(const key_type& k) { return this->priv_upper_bound(this->begin(), this->end(), k); } const_iterator upper_bound(const key_type& k) const - { return this->priv_upper_bound(this->begin(), this->end(), k); } + { return this->priv_upper_bound(this->cbegin(), this->cend(), k); } std::pair equal_range(const key_type& k) { return this->priv_equal_range(this->begin(), this->end(), k); } std::pair equal_range(const key_type& k) const - { return this->priv_equal_range(this->begin(), this->end(), k); } + { return this->priv_equal_range(this->cbegin(), this->cend(), k); } - size_type capacity() const + std::pair lower_bound_range(const key_type& k) + { return this->priv_lower_bound_range(this->begin(), this->end(), k); } + + std::pair lower_bound_range(const key_type& k) const + { return this->priv_lower_bound_range(this->cbegin(), this->cend(), k); } + + size_type capacity() const { return this->m_data.m_vect.capacity(); } - void reserve(size_type cnt) + void reserve(size_type cnt) { this->m_data.m_vect.reserve(cnt); } + friend bool operator==(const flat_tree& x, const flat_tree& y) + { + return x.size() == y.size() && std::equal(x.begin(), x.end(), y.begin()); + } + + friend bool operator<(const flat_tree& x, const flat_tree& y) + { + return std::lexicographical_compare(x.begin(), x.end(), + y.begin(), y.end()); + } + + friend bool operator!=(const flat_tree& x, const flat_tree& y) + { return !(x == y); } + + friend bool operator>(const flat_tree& x, const flat_tree& y) + { return y < x; } + + friend bool operator<=(const flat_tree& x, const flat_tree& y) + { return !(y < x); } + + friend bool operator>=(const flat_tree& x, const flat_tree& y) + { return !(x < y); } + + friend void swap(flat_tree& x, flat_tree& y) + { x.swap(y); } + private: struct insert_commit_data { @@ -774,10 +828,10 @@ class flat_tree // insert val before upper_bound(val) // else // insert val before lower_bound(val) - const value_compare &value_comp = this->m_data; + const value_compare &val_cmp = this->m_data; - if(pos == this->cend() || !value_comp(*pos, val)){ - if (pos == this->cbegin() || !value_comp(val, pos[-1])){ + if(pos == this->cend() || !val_cmp(*pos, val)){ + if (pos == this->cbegin() || !val_cmp(val, pos[-1])){ data.position = pos; } else{ @@ -791,21 +845,19 @@ class flat_tree } } - std::pair priv_insert_unique_prepare + bool priv_insert_unique_prepare (const_iterator b, const_iterator e, const value_type& val, insert_commit_data &commit_data) { - const value_compare &value_comp = this->m_data; + const value_compare &val_cmp = this->m_data; commit_data.position = this->priv_lower_bound(b, e, KeyOfValue()(val)); - return std::pair - ( iterator(vector_iterator_get_ptr(commit_data.position)) - , commit_data.position == e || value_comp(val, *commit_data.position)); + return commit_data.position == e || val_cmp(val, *commit_data.position); } - std::pair priv_insert_unique_prepare + bool priv_insert_unique_prepare (const value_type& val, insert_commit_data &commit_data) - { return this->priv_insert_unique_prepare(this->begin(), this->end(), val, commit_data); } + { return this->priv_insert_unique_prepare(this->cbegin(), this->cend(), val, commit_data); } - std::pair priv_insert_unique_prepare + bool priv_insert_unique_prepare (const_iterator pos, const value_type& val, insert_commit_data &commit_data) { //N1780. Props to Howard Hinnant! @@ -819,37 +871,32 @@ class flat_tree // insert val after pos //else // insert val before lower_bound(val) - const value_compare &value_comp = this->m_data; - - if(pos == this->cend() || value_comp(val, *pos)){ - if(pos != this->cbegin() && !value_comp(val, pos[-1])){ - if(value_comp(pos[-1], val)){ - commit_data.position = pos; - return std::pair(iterator(vector_iterator_get_ptr(pos)), true); - } - else{ - return std::pair(iterator(vector_iterator_get_ptr(pos)), false); - } + const value_compare &val_cmp = this->m_data; + const const_iterator cend_it = this->cend(); + if(pos == cend_it || val_cmp(val, *pos)){ //Check if val should go before end + const const_iterator cbeg = this->cbegin(); + commit_data.position = pos; + if(pos == cbeg){ //If container is empty then insert it in the beginning + return true; + } + const_iterator prev(pos); + --prev; + if(val_cmp(*prev, val)){ //If previous element was less, then it should go between prev and pos + return true; + } + else if(!val_cmp(val, *prev)){ //If previous was equal then insertion should fail + commit_data.position = prev; + return false; + } + else{ //Previous was bigger so insertion hint was pointless, dispatch to hintless insertion + //but reduce the search between beg and prev as prev is bigger than val + return this->priv_insert_unique_prepare(cbeg, prev, val, commit_data); } - return this->priv_insert_unique_prepare(this->cbegin(), pos, val, commit_data); } - - // Works, but increases code complexity - //Next check - //else if (value_comp(*pos, val) && !value_comp(pos[1], val)){ - // if(value_comp(val, pos[1])){ - // commit_data.position = pos+1; - // return std::pair(pos+1, true); - // } - // else{ - // return std::pair(pos+1, false); - // } - //} else{ - //[... pos ... val ... ] //The hint is before the insertion position, so insert it - //in the remaining range - return this->priv_insert_unique_prepare(pos, this->end(), val, commit_data); + //in the remaining range [pos, end) + return this->priv_insert_unique_prepare(pos, cend_it, val, commit_data); } } @@ -863,50 +910,50 @@ class flat_tree } template - RanIt priv_lower_bound(RanIt first, RanIt last, + RanIt priv_lower_bound(RanIt first, const RanIt last, const key_type & key) const { const Compare &key_cmp = this->m_data.get_comp(); KeyOfValue key_extract; - difference_type len = last - first, half; + size_type len = static_cast(last - first); RanIt middle; - while (len > 0) { - half = len >> 1; + while (len) { + size_type step = len >> 1; middle = first; - middle += half; + middle += step; if (key_cmp(key_extract(*middle), key)) { - ++middle; - first = middle; - len = len - half - 1; + first = ++middle; + len -= step + 1; + } + else{ + len = step; } - else - len = half; } return first; } template - RanIt priv_upper_bound(RanIt first, RanIt last, + RanIt priv_upper_bound(RanIt first, const RanIt last, const key_type & key) const { const Compare &key_cmp = this->m_data.get_comp(); KeyOfValue key_extract; - difference_type len = last - first, half; + size_type len = static_cast(last - first); RanIt middle; - while (len > 0) { - half = len >> 1; + while (len) { + size_type step = len >> 1; middle = first; - middle += half; + middle += step; if (key_cmp(key, key_extract(*middle))) { - len = half; + len = step; } else{ first = ++middle; - len = len - half - 1; + len -= step + 1; } } return first; @@ -918,32 +965,45 @@ class flat_tree { const Compare &key_cmp = this->m_data.get_comp(); KeyOfValue key_extract; - difference_type len = last - first, half; - RanIt middle, left, right; + size_type len = static_cast(last - first); + RanIt middle; - while (len > 0) { - half = len >> 1; + while (len) { + size_type step = len >> 1; middle = first; - middle += half; + middle += step; if (key_cmp(key_extract(*middle), key)){ - first = middle; - ++first; - len = len - half - 1; + first = ++middle; + len -= step + 1; } else if (key_cmp(key, key_extract(*middle))){ - len = half; + len = step; } else { - left = this->priv_lower_bound(first, middle, key); - first += len; - right = this->priv_upper_bound(++middle, first, key); - return std::pair(left, right); + //Middle is equal to key + last = first; + last += len; + return std::pair + ( this->priv_lower_bound(first, middle, key) + , this->priv_upper_bound(++middle, last, key)); } } return std::pair(first, first); } + template + std::pair priv_lower_bound_range(RanIt first, RanIt last, const key_type& k) const + { + const Compare &key_cmp = this->m_data.get_comp(); + KeyOfValue key_extract; + RanIt lb(this->priv_lower_bound(first, last, k)), ub(lb); + if(lb != last && static_cast(!key_cmp(k, key_extract(*lb)))){ + ++ub; + } + return std::pair(lb, ub); + } + template void priv_insert_equal_loop(InIt first, InIt last) { @@ -957,84 +1017,14 @@ class flat_tree { const_iterator pos(this->cend()); for ( ; first != last; ++first){ + //If ordered, then try hint version + //to achieve constant-time complexity per insertion pos = this->insert_equal(pos, *first); - } - } - - template - void priv_insert_unique_loop(InIt first, InIt last) - { - for ( ; first != last; ++first){ - this->insert_unique(*first); - } - } - - template - void priv_insert_unique_loop_ordered(InIt first, InIt last) - { - const_iterator pos(this->cend()); - for ( ; first != last; ++first){ - pos = this->insert_unique(pos, *first); + ++pos; } } }; -template -inline bool -operator==(const flat_tree& x, - const flat_tree& y) -{ - return x.size() == y.size() && - std::equal(x.begin(), x.end(), y.begin()); -} - -template -inline bool -operator<(const flat_tree& x, - const flat_tree& y) -{ - return std::lexicographical_compare(x.begin(), x.end(), - y.begin(), y.end()); -} - -template -inline bool -operator!=(const flat_tree& x, - const flat_tree& y) - { return !(x == y); } - -template -inline bool -operator>(const flat_tree& x, - const flat_tree& y) - { return y < x; } - -template -inline bool -operator<=(const flat_tree& x, - const flat_tree& y) - { return !(y < x); } - -template -inline bool -operator>=(const flat_tree& x, - const flat_tree& y) - { return !(x < y); } - - -template -inline void -swap(flat_tree& x, - flat_tree& y) - { x.swap(y); } - } //namespace container_detail { } //namespace container { diff --git a/3party/boost/boost/container/detail/function_detector.hpp b/3party/boost/boost/container/detail/function_detector.hpp index 5a5f6fd77d..1fe6731a6c 100644 --- a/3party/boost/boost/container/detail/function_detector.hpp +++ b/3party/boost/boost/container/detail/function_detector.hpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2009-2012. +// (C) Copyright Ion Gaztanaga 2009-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at diff --git a/3party/boost/boost/container/detail/hash_table.hpp b/3party/boost/boost/container/detail/hash_table.hpp new file mode 100644 index 0000000000..da7bb536e4 --- /dev/null +++ b/3party/boost/boost/container/detail/hash_table.hpp @@ -0,0 +1,383 @@ +/* +template , class Pred = equal_to, + class Alloc = allocator > +class hash_set +{ +public: + // types + typedef Value key_type; + typedef key_type value_type; + typedef Hash hasher; + typedef Pred key_equal; + typedef Alloc allocator_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef typename allocator_traits::pointer pointer; + typedef typename allocator_traits::const_pointer const_pointer; + typedef typename allocator_traits::size_type size_type; + typedef typename allocator_traits::difference_type difference_type; + + typedef /unspecified/ iterator; + typedef /unspecified/ const_iterator; + typedef /unspecified/ local_iterator; + typedef /unspecified/ const_local_iterator; + + hash_set() + noexcept( + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value); + explicit hash_set(size_type n, const hasher& hf = hasher(), + const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + template + hash_set(InputIterator f, InputIterator l, + size_type n = 0, const hasher& hf = hasher(), + const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + explicit hash_set(const allocator_type&); + hash_set(const hash_set&); + hash_set(const hash_set&, const Allocator&); + hash_set(hash_set&&) + noexcept( + is_nothrow_move_constructible::value && + is_nothrow_move_constructible::value && + is_nothrow_move_constructible::value); + hash_set(hash_set&&, const Allocator&); + hash_set(initializer_list, size_type n = 0, + const hasher& hf = hasher(), const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + ~hash_set(); + hash_set& operator=(const hash_set&); + hash_set& operator=(hash_set&&) + noexcept( + allocator_type::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value); + hash_set& operator=(initializer_list); + + allocator_type get_allocator() const noexcept; + + bool empty() const noexcept; + size_type size() const noexcept; + size_type max_size() const noexcept; + + iterator begin() noexcept; + iterator end() noexcept; + const_iterator begin() const noexcept; + const_iterator end() const noexcept; + const_iterator cbegin() const noexcept; + const_iterator cend() const noexcept; + + template + pair emplace(Args&&... args); + template + iterator emplace_hint(const_iterator position, Args&&... args); + pair insert(const value_type& obj); + pair insert(value_type&& obj); + iterator insert(const_iterator hint, const value_type& obj); + iterator insert(const_iterator hint, value_type&& obj); + template + void insert(InputIterator first, InputIterator last); + void insert(initializer_list); + + iterator erase(const_iterator position); + size_type erase(const key_type& k); + iterator erase(const_iterator first, const_iterator last); + void clear() noexcept; + + void swap(hash_set&) + noexcept( + (!allocator_type::propagate_on_container_swap::value || + __is_nothrow_swappable::value) && + __is_nothrow_swappable::value && + __is_nothrow_swappable::value); + + hasher hash_function() const; + key_equal key_eq() const; + + iterator find(const key_type& k); + const_iterator find(const key_type& k) const; + size_type count(const key_type& k) const; + pair equal_range(const key_type& k); + pair equal_range(const key_type& k) const; + + size_type bucket_count() const noexcept; + size_type max_bucket_count() const noexcept; + + size_type bucket_size(size_type n) const; + size_type bucket(const key_type& k) const; + + local_iterator begin(size_type n); + local_iterator end(size_type n); + const_local_iterator begin(size_type n) const; + const_local_iterator end(size_type n) const; + const_local_iterator cbegin(size_type n) const; + const_local_iterator cend(size_type n) const; + + float load_factor() const noexcept; + float max_load_factor() const noexcept; + void max_load_factor(float z); + void rehash(size_type n); + void reserve(size_type n); +}; + +template , class Pred = equal_to, + class Alloc = allocator > > +class hash_map +{ +public: + // types + typedef Key key_type; + typedef T mapped_type; + typedef Hash hasher; + typedef Pred key_equal; + typedef Alloc allocator_type; + typedef pair value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef typename allocator_traits::pointer pointer; + typedef typename allocator_traits::const_pointer const_pointer; + typedef typename allocator_traits::size_type size_type; + typedef typename allocator_traits::difference_type difference_type; + + typedef /unspecified/ iterator; + typedef /unspecified/ const_iterator; + typedef /unspecified/ local_iterator; + typedef /unspecified/ const_local_iterator; + + hash_map() + noexcept( + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value); + explicit hash_map(size_type n, const hasher& hf = hasher(), + const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + template + hash_map(InputIterator f, InputIterator l, + size_type n = 0, const hasher& hf = hasher(), + const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + explicit hash_map(const allocator_type&); + hash_map(const hash_map&); + hash_map(const hash_map&, const Allocator&); + hash_map(hash_map&&) + noexcept( + is_nothrow_move_constructible::value && + is_nothrow_move_constructible::value && + is_nothrow_move_constructible::value); + hash_map(hash_map&&, const Allocator&); + hash_map(initializer_list, size_type n = 0, + const hasher& hf = hasher(), const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + ~hash_map(); + hash_map& operator=(const hash_map&); + hash_map& operator=(hash_map&&) + noexcept( + allocator_type::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value); + hash_map& operator=(initializer_list); + + allocator_type get_allocator() const noexcept; + + bool empty() const noexcept; + size_type size() const noexcept; + size_type max_size() const noexcept; + + iterator begin() noexcept; + iterator end() noexcept; + const_iterator begin() const noexcept; + const_iterator end() const noexcept; + const_iterator cbegin() const noexcept; + const_iterator cend() const noexcept; + + template + pair emplace(Args&&... args); + template + iterator emplace_hint(const_iterator position, Args&&... args); + pair insert(const value_type& obj); + template + pair insert(P&& obj); + iterator insert(const_iterator hint, const value_type& obj); + template + iterator insert(const_iterator hint, P&& obj); + template + void insert(InputIterator first, InputIterator last); + void insert(initializer_list); + + iterator erase(const_iterator position); + size_type erase(const key_type& k); + iterator erase(const_iterator first, const_iterator last); + void clear() noexcept; + + void swap(hash_map&) + noexcept( + (!allocator_type::propagate_on_container_swap::value || + __is_nothrow_swappable::value) && + __is_nothrow_swappable::value && + __is_nothrow_swappable::value); + + hasher hash_function() const; + key_equal key_eq() const; + + iterator find(const key_type& k); + const_iterator find(const key_type& k) const; + size_type count(const key_type& k) const; + pair equal_range(const key_type& k); + pair equal_range(const key_type& k) const; + + mapped_type& operator[](const key_type& k); + mapped_type& operator[](key_type&& k); + + mapped_type& at(const key_type& k); + const mapped_type& at(const key_type& k) const; + + size_type bucket_count() const noexcept; + size_type max_bucket_count() const noexcept; + + size_type bucket_size(size_type n) const; + size_type bucket(const key_type& k) const; + + local_iterator begin(size_type n); + local_iterator end(size_type n); + const_local_iterator begin(size_type n) const; + const_local_iterator end(size_type n) const; + const_local_iterator cbegin(size_type n) const; + const_local_iterator cend(size_type n) const; + + float load_factor() const noexcept; + float max_load_factor() const noexcept; + void max_load_factor(float z); + void rehash(size_type n); + void reserve(size_type n); +}; + +*/ + +template , class Pred = equal_to, + class Alloc = allocator > +class hash_table +{ +public: + // types + typedef Value key_type; + typedef key_type value_type; + typedef Hash hasher; + typedef Pred key_equal; + typedef Alloc allocator_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef typename allocator_traits::pointer pointer; + typedef typename allocator_traits::const_pointer const_pointer; + typedef typename allocator_traits::size_type size_type; + typedef typename allocator_traits::difference_type difference_type; + + typedef /unspecified/ iterator; + typedef /unspecified/ const_iterator; + typedef /unspecified/ local_iterator; + typedef /unspecified/ const_local_iterator; + + hash_set() + noexcept( + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value && + is_nothrow_default_constructible::value); + explicit hash_set(size_type n, const hasher& hf = hasher(), + const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + template + hash_set(InputIterator f, InputIterator l, + size_type n = 0, const hasher& hf = hasher(), + const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + explicit hash_set(const allocator_type&); + hash_set(const hash_set&); + hash_set(const hash_set&, const Allocator&); + hash_set(hash_set&&) + noexcept( + is_nothrow_move_constructible::value && + is_nothrow_move_constructible::value && + is_nothrow_move_constructible::value); + hash_set(hash_set&&, const Allocator&); + hash_set(initializer_list, size_type n = 0, + const hasher& hf = hasher(), const key_equal& eql = key_equal(), + const allocator_type& a = allocator_type()); + ~hash_set(); + hash_set& operator=(const hash_set&); + hash_set& operator=(hash_set&&) + noexcept( + allocator_type::propagate_on_container_move_assignment::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value && + is_nothrow_move_assignable::value); + hash_set& operator=(initializer_list); + + allocator_type get_allocator() const noexcept; + + bool empty() const noexcept; + size_type size() const noexcept; + size_type max_size() const noexcept; + + iterator begin() noexcept; + iterator end() noexcept; + const_iterator begin() const noexcept; + const_iterator end() const noexcept; + const_iterator cbegin() const noexcept; + const_iterator cend() const noexcept; + + template + pair emplace(Args&&... args); + template + iterator emplace_hint(const_iterator position, Args&&... args); + pair insert(const value_type& obj); + pair insert(value_type&& obj); + iterator insert(const_iterator hint, const value_type& obj); + iterator insert(const_iterator hint, value_type&& obj); + template + void insert(InputIterator first, InputIterator last); + void insert(initializer_list); + + iterator erase(const_iterator position); + size_type erase(const key_type& k); + iterator erase(const_iterator first, const_iterator last); + void clear() noexcept; + + void swap(hash_set&) + noexcept( + (!allocator_type::propagate_on_container_swap::value || + __is_nothrow_swappable::value) && + __is_nothrow_swappable::value && + __is_nothrow_swappable::value); + + hasher hash_function() const; + key_equal key_eq() const; + + iterator find(const key_type& k); + const_iterator find(const key_type& k) const; + size_type count(const key_type& k) const; + pair equal_range(const key_type& k); + pair equal_range(const key_type& k) const; + + size_type bucket_count() const noexcept; + size_type max_bucket_count() const noexcept; + + size_type bucket_size(size_type n) const; + size_type bucket(const key_type& k) const; + + local_iterator begin(size_type n); + local_iterator end(size_type n); + const_local_iterator begin(size_type n) const; + const_local_iterator end(size_type n) const; + const_local_iterator cbegin(size_type n) const; + const_local_iterator cend(size_type n) const; + + float load_factor() const noexcept; + float max_load_factor() const noexcept; + void max_load_factor(float z); + void rehash(size_type n); + void reserve(size_type n); +}; diff --git a/3party/boost/boost/container/detail/iterators.hpp b/3party/boost/boost/container/detail/iterators.hpp index bba7205885..ffc7236422 100644 --- a/3party/boost/boost/container/detail/iterators.hpp +++ b/3party/boost/boost/container/detail/iterators.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // (C) Copyright Gennaro Prota 2003 - 2004. // // Distributed under the Boost Software License, Version 1.0. @@ -14,15 +14,16 @@ #ifndef BOOST_CONTAINER_DETAIL_ITERATORS_HPP #define BOOST_CONTAINER_DETAIL_ITERATORS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include #include #include #include +#include #ifdef BOOST_CONTAINER_PERFECT_FORWARDING #include @@ -52,7 +53,7 @@ class constant_iterator constant_iterator& operator++() { increment(); return *this; } - + constant_iterator operator++(int) { constant_iterator result (*this); @@ -62,7 +63,7 @@ class constant_iterator constant_iterator& operator--() { decrement(); return *this; } - + constant_iterator operator--(int) { constant_iterator result (*this); @@ -147,79 +148,79 @@ class constant_iterator }; template -class default_construct_iterator +class value_init_construct_iterator : public std::iterator { - typedef default_construct_iterator this_type; + typedef value_init_construct_iterator this_type; public: - explicit default_construct_iterator(Difference range_size) + explicit value_init_construct_iterator(Difference range_size) : m_num(range_size){} //Constructors - default_construct_iterator() + value_init_construct_iterator() : m_num(0){} - default_construct_iterator& operator++() + value_init_construct_iterator& operator++() { increment(); return *this; } - - default_construct_iterator operator++(int) + + value_init_construct_iterator operator++(int) { - default_construct_iterator result (*this); + value_init_construct_iterator result (*this); increment(); return result; } - default_construct_iterator& operator--() + value_init_construct_iterator& operator--() { decrement(); return *this; } - - default_construct_iterator operator--(int) + + value_init_construct_iterator operator--(int) { - default_construct_iterator result (*this); + value_init_construct_iterator result (*this); decrement(); return result; } - friend bool operator== (const default_construct_iterator& i, const default_construct_iterator& i2) + friend bool operator== (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return i.equal(i2); } - friend bool operator!= (const default_construct_iterator& i, const default_construct_iterator& i2) + friend bool operator!= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return !(i == i2); } - friend bool operator< (const default_construct_iterator& i, const default_construct_iterator& i2) + friend bool operator< (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return i.less(i2); } - friend bool operator> (const default_construct_iterator& i, const default_construct_iterator& i2) + friend bool operator> (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return i2 < i; } - friend bool operator<= (const default_construct_iterator& i, const default_construct_iterator& i2) + friend bool operator<= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return !(i > i2); } - friend bool operator>= (const default_construct_iterator& i, const default_construct_iterator& i2) + friend bool operator>= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return !(i < i2); } - friend Difference operator- (const default_construct_iterator& i, const default_construct_iterator& i2) + friend Difference operator- (const value_init_construct_iterator& i, const value_init_construct_iterator& i2) { return i2.distance_to(i); } //Arithmetic - default_construct_iterator& operator+=(Difference off) + value_init_construct_iterator& operator+=(Difference off) { this->advance(off); return *this; } - default_construct_iterator operator+(Difference off) const + value_init_construct_iterator operator+(Difference off) const { - default_construct_iterator other(*this); + value_init_construct_iterator other(*this); other.advance(off); return other; } - friend default_construct_iterator operator+(Difference off, const default_construct_iterator& right) + friend value_init_construct_iterator operator+(Difference off, const value_init_construct_iterator& right) { return right + off; } - default_construct_iterator& operator-=(Difference off) + value_init_construct_iterator& operator-=(Difference off) { this->advance(-off); return *this; } - default_construct_iterator operator-(Difference off) const + value_init_construct_iterator operator-(Difference off) const { return *this + (-off); } //This pseudo-iterator's dereference operations have no sense since value is not @@ -257,6 +258,118 @@ class default_construct_iterator { return m_num - other.m_num; } }; +template +class default_init_construct_iterator + : public std::iterator + +{ + typedef default_init_construct_iterator this_type; + + public: + explicit default_init_construct_iterator(Difference range_size) + : m_num(range_size){} + + //Constructors + default_init_construct_iterator() + : m_num(0){} + + default_init_construct_iterator& operator++() + { increment(); return *this; } + + default_init_construct_iterator operator++(int) + { + default_init_construct_iterator result (*this); + increment(); + return result; + } + + default_init_construct_iterator& operator--() + { decrement(); return *this; } + + default_init_construct_iterator operator--(int) + { + default_init_construct_iterator result (*this); + decrement(); + return result; + } + + friend bool operator== (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + { return i.equal(i2); } + + friend bool operator!= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + { return !(i == i2); } + + friend bool operator< (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + { return i.less(i2); } + + friend bool operator> (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + { return i2 < i; } + + friend bool operator<= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + { return !(i > i2); } + + friend bool operator>= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + { return !(i < i2); } + + friend Difference operator- (const default_init_construct_iterator& i, const default_init_construct_iterator& i2) + { return i2.distance_to(i); } + + //Arithmetic + default_init_construct_iterator& operator+=(Difference off) + { this->advance(off); return *this; } + + default_init_construct_iterator operator+(Difference off) const + { + default_init_construct_iterator other(*this); + other.advance(off); + return other; + } + + friend default_init_construct_iterator operator+(Difference off, const default_init_construct_iterator& right) + { return right + off; } + + default_init_construct_iterator& operator-=(Difference off) + { this->advance(-off); return *this; } + + default_init_construct_iterator operator-(Difference off) const + { return *this + (-off); } + + //This pseudo-iterator's dereference operations have no sense since value is not + //constructed until ::boost::container::construct_in_place is called. + //So comment them to catch bad uses + //const T& operator*() const; + //const T& operator[](difference_type) const; + //const T* operator->() const; + + private: + Difference m_num; + + void increment() + { --m_num; } + + void decrement() + { ++m_num; } + + bool equal(const this_type &other) const + { return m_num == other.m_num; } + + bool less(const this_type &other) const + { return other.m_num < m_num; } + + const T & dereference() const + { + static T dummy; + return dummy; + } + + void advance(Difference n) + { m_num -= n; } + + Difference distance_to(const this_type &other)const + { return m_num - other.m_num; } +}; + + template class repeat_iterator : public std::iterator @@ -273,7 +386,7 @@ class repeat_iterator this_type& operator++() { increment(); return *this; } - + this_type operator++(int) { this_type result (*this); @@ -283,7 +396,7 @@ class repeat_iterator this_type& operator--() { increment(); return *this; } - + this_type operator--(int) { this_type result (*this); @@ -384,7 +497,7 @@ class emplace_iterator this_type& operator++() { increment(); return *this; } - + this_type operator++(int) { this_type result (*this); @@ -394,7 +507,7 @@ class emplace_iterator this_type& operator--() { decrement(); return *this; } - + this_type operator--(int) { this_type result (*this); @@ -585,24 +698,112 @@ struct is_bidirectional_iterator static const bool value = false; }; -template +template struct iiterator_types { + typedef typename IIterator::value_type it_value_type; + typedef typename it_value_type::value_type value_type; typedef typename std::iterator_traits::pointer it_pointer; typedef typename std::iterator_traits::difference_type difference_type; typedef typename ::boost::intrusive::pointer_traits:: - template rebind_pointer::type pointer; + template rebind_pointer::type pointer; typedef typename ::boost::intrusive::pointer_traits:: - template rebind_pointer::type const_pointer; + template rebind_pointer::type const_pointer; typedef typename ::boost::intrusive:: pointer_traits::reference reference; typedef typename ::boost::intrusive:: pointer_traits::reference const_reference; + typedef typename IIterator::iterator_category iterator_category; }; +template +struct std_iterator +{ + typedef typename std::iterator + < typename iiterator_types::iterator_category + , typename iiterator_types::value_type + , typename iiterator_types::difference_type + , typename iiterator_types::const_pointer + , typename iiterator_types::const_reference> type; +}; + +template +struct std_iterator +{ + typedef typename std::iterator + < typename iiterator_types::iterator_category + , typename iiterator_types::value_type + , typename iiterator_types::difference_type + , typename iiterator_types::pointer + , typename iiterator_types::reference> type; +}; + +template +class iterator + : public std_iterator::type +{ + typedef typename std_iterator::type types_t; + + public: + typedef typename types_t::value_type value_type; + typedef typename types_t::pointer pointer; + typedef typename types_t::reference reference; + + iterator() + {} + + explicit iterator(IIterator iit) BOOST_CONTAINER_NOEXCEPT + : m_iit(iit) + {} + + iterator(iterator const& other) BOOST_CONTAINER_NOEXCEPT + : m_iit(other.get()) + {} + + iterator& operator++() BOOST_CONTAINER_NOEXCEPT + { ++this->m_iit; return *this; } + + iterator operator++(int) BOOST_CONTAINER_NOEXCEPT + { + iterator result (*this); + ++this->m_iit; + return result; + } + + iterator& operator--() BOOST_CONTAINER_NOEXCEPT + { + //If the iterator is not a bidirectional iterator, operator-- should not exist + BOOST_STATIC_ASSERT((is_bidirectional_iterator::value)); + --this->m_iit; return *this; + } + + iterator operator--(int) BOOST_CONTAINER_NOEXCEPT + { + iterator result (*this); + --this->m_iit; + return result; + } + + friend bool operator== (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_iit == r.m_iit; } + + friend bool operator!= (const iterator& l, const iterator& r) BOOST_CONTAINER_NOEXCEPT + { return !(l == r); } + + reference operator*() const BOOST_CONTAINER_NOEXCEPT + { return (*this->m_iit).get_data(); } + + pointer operator->() const BOOST_CONTAINER_NOEXCEPT + { return ::boost::intrusive::pointer_traits::pointer_to(this->operator*()); } + + const IIterator &get() const BOOST_CONTAINER_NOEXCEPT + { return this->m_iit; } + + private: + IIterator m_iit; +}; } //namespace container_detail { - } //namespace container { } //namespace boost { diff --git a/3party/boost/boost/container/detail/math_functions.hpp b/3party/boost/boost/container/detail/math_functions.hpp index fe8386be69..b27cfb4aef 100644 --- a/3party/boost/boost/container/detail/math_functions.hpp +++ b/3party/boost/boost/container/detail/math_functions.hpp @@ -1,7 +1,7 @@ ////////////////////////////////////////////////////////////////////////////// // // (C) Copyright Stephen Cleary 2000. -// (C) Copyright Ion Gaztanaga 2007-2012. +// (C) Copyright Ion Gaztanaga 2007-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -16,7 +16,9 @@ #ifndef BOOST_CONTAINER_DETAIL_MATH_FUNCTIONS_HPP #define BOOST_CONTAINER_DETAIL_MATH_FUNCTIONS_HPP -#include "config_begin.hpp" +#include +#include + #include #include @@ -94,7 +96,7 @@ inline std::size_t floor_log2 (std::size_t x) std::size_t n = x; std::size_t log2 = 0; - + for(std::size_t shift = Bits >> 1; shift; shift >>= 1){ std::size_t tmp = n >> shift; if (tmp) diff --git a/3party/boost/boost/container/detail/memory_util.hpp b/3party/boost/boost/container/detail/memory_util.hpp index ac9a899894..572d30acba 100644 --- a/3party/boost/boost/container/detail/memory_util.hpp +++ b/3party/boost/boost/container/detail/memory_util.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,26 +11,28 @@ #ifndef BOOST_CONTAINER_ALLOCATOR_MEMORY_UTIL_HPP #define BOOST_CONTAINER_ALLOCATOR_MEMORY_UTIL_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif #include #include + #include +#include #include #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME allocate #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEGIN namespace boost { namespace container { namespace container_detail { #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}} -#define BOOST_PP_ITERATION_PARAMS_1 (3, (0, 2, )) +#define BOOST_PP_ITERATION_PARAMS_1 (3, (2, 2, )) #include BOOST_PP_ITERATE() #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME destroy #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEGIN namespace boost { namespace container { namespace container_detail { #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}} -#define BOOST_PP_ITERATION_PARAMS_1 (3, (0, 3, )) +#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 1, )) #include BOOST_PP_ITERATE() #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME max_size @@ -48,20 +50,19 @@ #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME construct #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEGIN namespace boost { namespace container { namespace container_detail { #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}} -#define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS+1, )) +#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS+1, )) #include BOOST_PP_ITERATE() #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME swap #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_BEGIN namespace boost { namespace container { namespace container_detail { #define BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_NS_END }}} -#define BOOST_PP_ITERATION_PARAMS_1 (3, (0, 1, )) +#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 1, )) #include BOOST_PP_ITERATE() namespace boost { namespace container { namespace container_detail { - BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(pointer) BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(const_pointer) BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(reference) @@ -73,6 +74,8 @@ BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(propagate_on_container_copy_assig BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(propagate_on_container_move_assignment) BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(propagate_on_container_swap) BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(difference_type) +BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(value_compare) +BOOST_INTRUSIVE_INSTANTIATE_DEFAULT_TYPE_TMPLT(wrapped_value_compare) } //namespace container_detail { } //namespace container { diff --git a/3party/boost/boost/container/detail/mpl.hpp b/3party/boost/boost/container/detail/mpl.hpp index 74a1ce0e67..fc1a8a6da2 100644 --- a/3party/boost/boost/container/detail/mpl.hpp +++ b/3party/boost/boost/container/detail/mpl.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -13,10 +13,13 @@ #ifndef BOOST_CONTAINER_CONTAINER_DETAIL_MPL_HPP #define BOOST_CONTAINER_CONTAINER_DETAIL_MPL_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif +#include +#include + #include namespace boost { @@ -66,18 +69,32 @@ struct disable_if : public enable_if_c {}; template struct disable_if_c : public enable_if_c {}; +#if defined(_MSC_VER) && (_MSC_VER >= 1400) + +template +struct is_convertible +{ + static const bool value = __is_convertible_to(T, U); +}; + +#else + template class is_convertible { typedef char true_t; class false_t { char dummy[2]; }; - static true_t dispatch(U); + //use any_conversion as first parameter since in MSVC + //overaligned types can't go through ellipsis static false_t dispatch(...); - static T trigger(); + static true_t dispatch(U); + static T &trigger(); public: - enum { value = sizeof(dispatch(trigger())) == sizeof(true_t) }; + static const bool value = sizeof(dispatch(trigger())) == sizeof(true_t); }; +#endif + template< bool C , typename T1 @@ -110,8 +127,10 @@ struct if_ template struct select1st -// : public std::unary_function { + typedef Pair argument_type; + typedef typename Pair::first_type result_type; + template const typename Pair::first_type& operator()(const OtherPair& x) const { return x.first; } @@ -123,8 +142,10 @@ struct select1st // identity is an extension: it is not part of the standard. template struct identity -// : public std::unary_function { + typedef T argument_type; + typedef T result_type; + typedef T type; const T& operator()(const T& x) const { return x; } @@ -156,5 +177,7 @@ template <> struct unvoid { struct type { }; }; } //namespace container { } //namespace boost { +#include + #endif //#ifndef BOOST_CONTAINER_CONTAINER_DETAIL_MPL_HPP diff --git a/3party/boost/boost/container/detail/multiallocation_chain.hpp b/3party/boost/boost/container/detail/multiallocation_chain.hpp index 2e29f9c1a2..38c331cbcd 100644 --- a/3party/boost/boost/container/detail/multiallocation_chain.hpp +++ b/3party/boost/boost/container/detail/multiallocation_chain.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,9 @@ #ifndef BOOST_CONTAINER_DETAIL_MULTIALLOCATION_CHAIN_HPP #define BOOST_CONTAINER_DETAIL_MULTIALLOCATION_CHAIN_HPP -#include "config_begin.hpp" +#include +#include + #include #include #include @@ -243,10 +245,10 @@ class transform_multiallocation_chain iterator before_begin() { return iterator(holder_.before_begin()); } - +*/ iterator begin() - { return iterator(holder_.begin()); } - + { return iterator(this->MultiallocationChain::begin()); } +/* iterator end() { return iterator(holder_.end()); } diff --git a/3party/boost/boost/container/detail/mutex.hpp b/3party/boost/boost/container/detail/mutex.hpp new file mode 100644 index 0000000000..89b041c1cb --- /dev/null +++ b/3party/boost/boost/container/detail/mutex.hpp @@ -0,0 +1,278 @@ +// Copyright (C) 2000 Stephen Cleary +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org for updates, documentation, and revision history. + +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_MUTEX_HPP +#define BOOST_CONTAINER_MUTEX_HPP + +//#define BOOST_CONTAINER_NO_MT +//#define BOOST_CONTAINER_NO_SPINLOCKS + +#include +#include + +// Extremely Light-Weight wrapper classes for OS thread synchronization + +#define BOOST_MUTEX_HELPER_NONE 0 +#define BOOST_MUTEX_HELPER_WIN32 1 +#define BOOST_MUTEX_HELPER_PTHREAD 2 +#define BOOST_MUTEX_HELPER_SPINLOCKS 3 + +#if !defined(BOOST_HAS_THREADS) && !defined(BOOST_NO_MT) +# define BOOST_NO_MT +#endif + +#if defined(BOOST_NO_MT) || defined(BOOST_CONTAINER_NO_MT) + // No multithreading -> make locks into no-ops + #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_NONE +#else + //Taken from dlmalloc + #if !defined(BOOST_CONTAINER_NO_SPINLOCKS) && \ + ((defined(__GNUC__) && \ + ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) || \ + defined(__i386__) || defined(__x86_64__))) || \ + (defined(_MSC_VER) && _MSC_VER>=1310)) + #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_SPINLOCKS + #endif + + #if defined(BOOST_WINDOWS) + #include + #ifndef BOOST_MUTEX_HELPER + #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_WIN32 + #endif + #elif defined(BOOST_HAS_UNISTD_H) + #include + #if !defined(BOOST_MUTEX_HELPER) && (defined(_POSIX_THREADS) || defined(BOOST_HAS_PTHREADS)) + #define BOOST_MUTEX_HELPER BOOST_MUTEX_HELPER_PTHREAD + #endif + #endif +#endif + +#ifndef BOOST_MUTEX_HELPER + #error Unable to determine platform mutex type; #define BOOST_NO_MT to assume single-threaded +#endif + +#if BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_NONE + //... +#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_SPINLOCKS + #if defined(_MSC_VER) + #ifndef _M_AMD64 + /* These are already defined on AMD64 builds */ + #ifdef __cplusplus + extern "C" { + #endif /* __cplusplus */ + long __cdecl _InterlockedCompareExchange(long volatile *Dest, long Exchange, long Comp); + long __cdecl _InterlockedExchange(long volatile *Target, long Value); + #ifdef __cplusplus + } + #endif /* __cplusplus */ + #endif /* _M_AMD64 */ + #pragma intrinsic (_InterlockedCompareExchange) + #pragma intrinsic (_InterlockedExchange) + #define interlockedcompareexchange _InterlockedCompareExchange + #define interlockedexchange _InterlockedExchange + #elif defined(WIN32) && defined(__GNUC__) + #define interlockedcompareexchange(a, b, c) __sync_val_compare_and_swap(a, c, b) + #define interlockedexchange __sync_lock_test_and_set + #endif /* Win32 */ + + /* First, define CAS_LOCK and CLEAR_LOCK on ints */ + /* Note CAS_LOCK defined to return 0 on success */ + + #if defined(__GNUC__)&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) + #define BOOST_CONTAINER_CAS_LOCK(sl) __sync_lock_test_and_set(sl, 1) + #define BOOST_CONTAINER_CLEAR_LOCK(sl) __sync_lock_release(sl) + + #elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) + /* Custom spin locks for older gcc on x86 */ + static FORCEINLINE int boost_container_x86_cas_lock(int *sl) { + int ret; + int val = 1; + int cmp = 0; + __asm__ __volatile__ ("lock; cmpxchgl %1, %2" + : "=a" (ret) + : "r" (val), "m" (*(sl)), "0"(cmp) + : "memory", "cc"); + return ret; + } + + static FORCEINLINE void boost_container_x86_clear_lock(int* sl) { + assert(*sl != 0); + int prev = 0; + int ret; + __asm__ __volatile__ ("lock; xchgl %0, %1" + : "=r" (ret) + : "m" (*(sl)), "0"(prev) + : "memory"); + } + + #define BOOST_CONTAINER_CAS_LOCK(sl) boost_container_x86_cas_lock(sl) + #define BOOST_CONTAINER_CLEAR_LOCK(sl) boost_container_x86_clear_lock(sl) + + #else /* Win32 MSC */ + #define BOOST_CONTAINER_CAS_LOCK(sl) interlockedexchange((long volatile*)sl, (long)1) + #define BOOST_CONTAINER_CLEAR_LOCK(sl) interlockedexchange((long volatile*)sl, (long)0) + #endif + + /* How to yield for a spin lock */ + #define SPINS_PER_YIELD 63 + #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) + #define SLEEP_EX_DURATION 50 /* delay for yield/sleep */ + #define SPIN_LOCK_YIELD SleepEx(SLEEP_EX_DURATION, FALSE) + #elif defined (__SVR4) && defined (__sun) /* solaris */ + #define SPIN_LOCK_YIELD thr_yield(); + #elif !defined(LACKS_SCHED_H) + #define SPIN_LOCK_YIELD sched_yield(); + #else + #define SPIN_LOCK_YIELD + #endif /* ... yield ... */ + + #define BOOST_CONTAINER_SPINS_PER_YIELD 63 + inline int boost_interprocess_spin_acquire_lock(int *sl) { + int spins = 0; + while (*(volatile int *)sl != 0 || + BOOST_CONTAINER_CAS_LOCK(sl)) { + if ((++spins & BOOST_CONTAINER_SPINS_PER_YIELD) == 0) { + SPIN_LOCK_YIELD; + } + } + return 0; + } + #define BOOST_CONTAINER_MLOCK_T int + #define BOOST_CONTAINER_TRY_LOCK(sl) !BOOST_CONTAINER_CAS_LOCK(sl) + #define BOOST_CONTAINER_RELEASE_LOCK(sl) BOOST_CONTAINER_CLEAR_LOCK(sl) + #define BOOST_CONTAINER_ACQUIRE_LOCK(sl) (BOOST_CONTAINER_CAS_LOCK(sl)? boost_interprocess_spin_acquire_lock(sl) : 0) + #define BOOST_CONTAINER_INITIAL_LOCK(sl) (*sl = 0) + #define BOOST_CONTAINER_DESTROY_LOCK(sl) (0) +#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_WIN32 + // +#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_PTHREAD + #include +#endif + +namespace boost { +namespace container { +namespace container_detail { + +#if BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_NONE + class null_mutex + { + private: + null_mutex(const null_mutex &); + void operator=(const null_mutex &); + + public: + null_mutex() { } + + static void lock() { } + static void unlock() { } + }; + + typedef null_mutex default_mutex; +#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_SPINLOCKS + + class spin_mutex + { + private: + BOOST_CONTAINER_MLOCK_T sl; + spin_mutex(const spin_mutex &); + void operator=(const spin_mutex &); + + public: + spin_mutex() { BOOST_CONTAINER_INITIAL_LOCK(&sl); } + + void lock() { BOOST_CONTAINER_ACQUIRE_LOCK(&sl); } + void unlock() { BOOST_CONTAINER_RELEASE_LOCK(&sl); } + }; + typedef spin_mutex default_mutex; +#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_WIN32 + class mutex + { + private: + CRITICAL_SECTION mtx; + + mutex(const mutex &); + void operator=(const mutex &); + + public: + mutex() + { InitializeCriticalSection(&mtx); } + + ~mutex() + { DeleteCriticalSection(&mtx); } + + void lock() + { EnterCriticalSection(&mtx); } + + void unlock() + { LeaveCriticalSection(&mtx); } + }; + + typedef mutex default_mutex; +#elif BOOST_MUTEX_HELPER == BOOST_MUTEX_HELPER_PTHREAD + class mutex + { + private: + pthread_mutex_t mtx; + + mutex(const mutex &); + void operator=(const mutex &); + + public: + mutex() + { pthread_mutex_init(&mtx, 0); } + + ~mutex() + { pthread_mutex_destroy(&mtx); } + + void lock() + { pthread_mutex_lock(&mtx); } + + void unlock() + { pthread_mutex_unlock(&mtx); } + }; + + typedef mutex default_mutex; +#endif + +template +class scoped_lock +{ + public: + scoped_lock(Mutex &m) + : m_(m) + { m_.lock(); } + ~scoped_lock() + { m_.unlock(); } + + private: + Mutex &m_; +}; + +} // namespace container_detail +} // namespace container +} // namespace boost + +#undef BOOST_MUTEX_HELPER_WIN32 +#undef BOOST_MUTEX_HELPER_PTHREAD +#undef BOOST_MUTEX_HELPER_NONE +#undef BOOST_MUTEX_HELPER +#undef BOOST_MUTEX_HELPER_SPINLOCKS + +#include + +#endif diff --git a/3party/boost/boost/container/detail/node_alloc_holder.hpp b/3party/boost/boost/container/detail/node_alloc_holder.hpp index 5a94a68d02..6483e9600c 100644 --- a/3party/boost/boost/container/detail/node_alloc_holder.hpp +++ b/3party/boost/boost/container/detail/node_alloc_holder.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,11 +11,11 @@ #ifndef BOOST_CONTAINER_DETAIL_NODE_ALLOC_HPP_ #define BOOST_CONTAINER_DETAIL_NODE_ALLOC_HPP_ -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include #include @@ -28,8 +28,10 @@ #include #include #include +#include #include #include +#include #include #include @@ -49,34 +51,49 @@ template struct node_compare : private ValueCompare { - typedef typename ValueCompare::key_type key_type; - typedef typename ValueCompare::value_type value_type; - typedef typename ValueCompare::key_of_value key_of_value; + typedef ValueCompare wrapped_value_compare; + typedef typename wrapped_value_compare::key_type key_type; + typedef typename wrapped_value_compare::value_type value_type; + typedef typename wrapped_value_compare::key_of_value key_of_value; - node_compare(const ValueCompare &pred) - : ValueCompare(pred) + explicit node_compare(const wrapped_value_compare &pred) + : wrapped_value_compare(pred) {} - ValueCompare &value_comp() - { return static_cast(*this); } + node_compare() + : wrapped_value_compare() + {} - ValueCompare &value_comp() const - { return static_cast(*this); } + wrapped_value_compare &value_comp() + { return static_cast(*this); } + + wrapped_value_compare &value_comp() const + { return static_cast(*this); } bool operator()(const Node &a, const Node &b) const - { return ValueCompare::operator()(a.get_data(), b.get_data()); } + { return wrapped_value_compare::operator()(a.get_data(), b.get_data()); } }; -template +template struct node_alloc_holder { + //If the intrusive container is an associative container, obtain the predicate, which will + //be of type node_compare<>. If not an associative container value_compare will be a "nat" type. + typedef BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_DEFAULT(boost::container::container_detail::, ICont, + value_compare, container_detail::nat) intrusive_value_compare; + //In that case obtain the value predicate from the node predicate via wrapped_value_compare + //if intrusive_value_compare is node_compare<>, nat otherwise + typedef BOOST_INTRUSIVE_OBTAIN_TYPE_WITH_DEFAULT(boost::container::container_detail::, ICont, + wrapped_value_compare, container_detail::nat) value_compare; + typedef allocator_traits allocator_traits_type; - typedef node_alloc_holder self_t; typedef typename allocator_traits_type::value_type value_type; + typedef ICont intrusive_container; typedef typename ICont::value_type Node; typedef typename allocator_traits_type::template portable_rebind_alloc::type NodeAlloc; typedef allocator_traits node_allocator_traits_type; + typedef container_detail::allocator_version_traits node_allocator_version_traits_type; typedef A ValAlloc; typedef typename node_allocator_traits_type::pointer NodePtr; typedef container_detail::scoped_deallocator Deallocator; @@ -116,25 +133,25 @@ struct node_alloc_holder { this->icont().swap(x.icont()); } //Constructors for associative containers - explicit node_alloc_holder(const ValAlloc &a, const Pred &c) + explicit node_alloc_holder(const ValAlloc &a, const value_compare &c) : members_(a, c) {} - explicit node_alloc_holder(const node_alloc_holder &x, const Pred &c) + explicit node_alloc_holder(const node_alloc_holder &x, const value_compare &c) : members_(NodeAllocTraits::select_on_container_copy_construction(x.node_alloc()), c) {} - explicit node_alloc_holder(const Pred &c) + explicit node_alloc_holder(const value_compare &c) : members_(c) {} //helpers for move assignments - explicit node_alloc_holder(BOOST_RV_REF(node_alloc_holder) x, const Pred &c) + explicit node_alloc_holder(BOOST_RV_REF(node_alloc_holder) x, const value_compare &c) : members_(boost::move(x.node_alloc()), c) { this->icont().swap(x.icont()); } void copy_assign_alloc(const node_alloc_holder &x) - { + { container_detail::bool_ flag; container_detail::assign_alloc( static_cast(this->members_) , static_cast(x.members_), flag); @@ -230,45 +247,41 @@ struct node_alloc_holder (FwdIterator beg, difference_type n, Inserter inserter) { if(n){ - /* - NodePtr p = this->allocate_one(); - Deallocator node_deallocator(p, this->node_alloc()); - ::boost::container::construct_in_place(this->node_alloc(), container_detail::addressof(p->m_data), it); - node_deallocator.release(); - //This does not throw - typedef typename Node::hook_type hook_type; - ::new(static_cast(container_detail::to_raw_pointer(p))) hook_type; - return (p); - */ - typedef typename NodeAlloc::multiallocation_chain multiallocation_chain; + typedef typename node_allocator_version_traits_type::multiallocation_chain multiallocation_chain; //Try to allocate memory in a single block typedef typename multiallocation_chain::iterator multialloc_iterator; multiallocation_chain mem; - this->node_alloc().allocate_individual(n, mem); + NodeAlloc &nalloc = this->node_alloc(); + node_allocator_version_traits_type::allocate_individual(nalloc, n, mem); multialloc_iterator itbeg(mem.begin()), itlast(mem.last()); mem.clear(); Node *p = 0; - NodeAlloc &nalloc = this->node_alloc(); BOOST_TRY{ + Deallocator node_deallocator(NodePtr(), nalloc); + container_detail::scoped_destructor sdestructor(nalloc, 0); while(n--){ - p = container_detail::to_raw_pointer(&*itbeg); + p = container_detail::to_raw_pointer(iterator_to_pointer(itbeg)); + node_deallocator.set(p); ++itbeg; //This can throw - Deallocator node_deallocator(p, nalloc); boost::container::construct_in_place(nalloc, container_detail::addressof(p->m_data), beg); + sdestructor.set(p); ++beg; - node_deallocator.release(); //This does not throw typedef typename Node::hook_type hook_type; ::new(static_cast(p)) hook_type; - //This can throw in some containers (predicate might throw) + //This can throw in some containers (predicate might throw). + //(sdestructor will destruct the node and node_deallocator will deallocate it in case of exception) inserter(*p); + sdestructor.set(0); } + sdestructor.release(); + node_deallocator.release(); } BOOST_CATCH(...){ mem.incorporate_after(mem.last(), &*itbeg, &*itlast, n); - this->node_alloc().deallocate_individual(mem); + node_allocator_version_traits_type::deallocate_individual(this->node_alloc(), mem); BOOST_RETHROW } BOOST_CATCH_END @@ -345,12 +358,12 @@ struct node_alloc_holder {} template - members_holder(BOOST_FWD_REF(ConvertibleToAlloc) c2alloc, const Pred &c) + members_holder(BOOST_FWD_REF(ConvertibleToAlloc) c2alloc, const value_compare &c) : NodeAlloc(boost::forward(c2alloc)) , m_icont(typename ICont::value_compare(c)) {} - explicit members_holder(const Pred &c) + explicit members_holder(const value_compare &c) : NodeAlloc() , m_icont(typename ICont::value_compare(c)) {} diff --git a/3party/boost/boost/container/detail/node_pool.hpp b/3party/boost/boost/container/detail/node_pool.hpp new file mode 100644 index 0000000000..56c3d8a165 --- /dev/null +++ b/3party/boost/boost/container/detail/node_pool.hpp @@ -0,0 +1,157 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_DETAIL_NODE_POOL_HPP +#define BOOST_CONTAINER_DETAIL_NODE_POOL_HPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include //std::unary_function +#include //std::swap +#include + +namespace boost { +namespace container { +namespace container_detail { + +//!Pooled memory allocator using single segregated storage. Includes +//!a reference count but the class does not delete itself, this is +//!responsibility of user classes. Node size (NodeSize) and the number of +//!nodes allocated per block (NodesPerBlock) are known at compile time +template< std::size_t NodeSize, std::size_t NodesPerBlock > +class private_node_pool + //Inherit from the implementation to avoid template bloat + : public boost::container::container_detail:: + private_node_pool_impl +{ + typedef boost::container::container_detail:: + private_node_pool_impl base_t; + //Non-copyable + private_node_pool(const private_node_pool &); + private_node_pool &operator=(const private_node_pool &); + + public: + typedef typename base_t::multiallocation_chain multiallocation_chain; + static const std::size_t nodes_per_block = NodesPerBlock; + + //!Constructor from a segment manager. Never throws + private_node_pool() + : base_t(0, NodeSize, NodesPerBlock) + {} + +}; + +template< std::size_t NodeSize + , std::size_t NodesPerBlock + > +class shared_node_pool + : public private_node_pool +{ + private: + typedef private_node_pool private_node_allocator_t; + + public: + typedef typename private_node_allocator_t::free_nodes_t free_nodes_t; + typedef typename private_node_allocator_t::multiallocation_chain multiallocation_chain; + + //!Constructor from a segment manager. Never throws + shared_node_pool() + : private_node_allocator_t(){} + + //!Destructor. Deallocates all allocated blocks. Never throws + ~shared_node_pool() + {} + + //!Allocates array of count elements. Can throw std::bad_alloc + void *allocate_node() + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + return private_node_allocator_t::allocate_node(); + } + + //!Deallocates an array pointed by ptr. Never throws + void deallocate_node(void *ptr) + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + private_node_allocator_t::deallocate_node(ptr); + } + + //!Allocates a singly linked list of n nodes ending in null pointer. + //!can throw std::bad_alloc + void allocate_nodes(const std::size_t n, multiallocation_chain &chain) + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + return private_node_allocator_t::allocate_nodes(n, chain); + } + + void deallocate_nodes(multiallocation_chain &chain) + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + private_node_allocator_t::deallocate_nodes(chain); + } + + //!Deallocates all the free blocks of memory. Never throws + void deallocate_free_blocks() + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + private_node_allocator_t::deallocate_free_blocks(); + } + + //!Deallocates all blocks. Never throws + void purge_blocks() + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + private_node_allocator_t::purge_blocks(); + } + + std::size_t num_free_nodes() + { + //----------------------- + scoped_lock guard(mutex_); + //----------------------- + return private_node_allocator_t::num_free_nodes(); + } + + private: + default_mutex mutex_; +}; + +} //namespace container_detail { +} //namespace container { +} //namespace boost { + +#include + +#endif //#ifndef BOOST_CONTAINER_DETAIL_NODE_POOL_HPP diff --git a/3party/boost/boost/container/detail/node_pool_impl.hpp b/3party/boost/boost/container/detail/node_pool_impl.hpp index 2103898b61..d79bcbe02c 100644 --- a/3party/boost/boost/container/detail/node_pool_impl.hpp +++ b/3party/boost/boost/container/detail/node_pool_impl.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,13 +11,14 @@ #ifndef BOOST_CONTAINER_DETAIL_NODE_POOL_IMPL_HPP #define BOOST_CONTAINER_DETAIL_NODE_POOL_IMPL_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" -#include +#include #include + +#include #include #include #include @@ -29,8 +30,6 @@ #include #include #include -#include //std::unary_function - namespace boost { namespace container { @@ -88,7 +87,7 @@ class private_node_pool_impl void *allocate_node() { return this->priv_alloc_node(); } - + //!Deallocates an array pointed by ptr. Never throws void deallocate_node(void *ptr) { this->priv_dealloc_node(ptr); } @@ -236,7 +235,7 @@ class private_node_pool_impl push_in_list(free_nodes_t &l, typename free_nodes_t::iterator &it) : slist_(l), last_it_(it) {} - + void operator()(typename free_nodes_t::pointer p) const { slist_.push_front(*p); @@ -251,12 +250,14 @@ class private_node_pool_impl }; struct is_between - : std::unary_function { + typedef typename free_nodes_t::value_type argument_type; + typedef bool result_type; + is_between(const void *addr, std::size_t size) : beg_(static_cast(addr)), end_(beg_+size) {} - + bool operator()(typename free_nodes_t::const_reference v) const { return (beg_ <= reinterpret_cast(&v) && @@ -333,13 +334,13 @@ class private_node_pool_impl private: //!Returns a reference to the block hook placed in the end of the block static node_t & get_block_hook (void *block, size_type blocksize) - { - return *reinterpret_cast(reinterpret_cast(block) + blocksize); + { + return *reinterpret_cast(reinterpret_cast(block) + blocksize); } //!Returns the starting address of the block reference to the block hook placed in the end of the block void *get_block_from_hook (node_t *hook, size_type blocksize) - { + { return (reinterpret_cast(hook) - blocksize); } diff --git a/3party/boost/boost/container/detail/pair.hpp b/3party/boost/boost/container/detail/pair.hpp index 79753a8612..0d7e0a9b7d 100644 --- a/3party/boost/boost/container/detail/pair.hpp +++ b/3party/boost/boost/container/detail/pair.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -13,11 +13,11 @@ #ifndef BOOST_CONTAINER_CONTAINER_DETAIL_PAIR_HPP #define BOOST_CONTAINER_CONTAINER_DETAIL_PAIR_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include #include diff --git a/3party/boost/boost/container/detail/pool_common.hpp b/3party/boost/boost/container/detail/pool_common.hpp index 983d1413a0..53a7427405 100644 --- a/3party/boost/boost/container/detail/pool_common.hpp +++ b/3party/boost/boost/container/detail/pool_common.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -8,14 +8,16 @@ // ////////////////////////////////////////////////////////////////////////////// -#ifndef BOOST_CONTAINER_DETAIL_NODE_POOL_COMMON_HPP -#define BOOST_CONTAINER_DETAIL_NODE_POOL_COMMON_HPP +#ifndef BOOST_CONTAINER_DETAIL_POOL_COMMON_HPP +#define BOOST_CONTAINER_DETAIL_POOL_COMMON_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include +#include + #include #include diff --git a/3party/boost/boost/container/detail/pool_common_alloc.hpp b/3party/boost/boost/container/detail/pool_common_alloc.hpp new file mode 100644 index 0000000000..37186a6a99 --- /dev/null +++ b/3party/boost/boost/container/detail/pool_common_alloc.hpp @@ -0,0 +1,94 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_DETAIL_POOL_COMMON_ALLOC_HPP +#define BOOST_CONTAINER_DETAIL_POOL_COMMON_ALLOC_HPP + +#include +#include +#include + +#include +#include +#include +#include + +namespace boost{ +namespace container{ +namespace container_detail{ + +struct node_slist_helper + : public boost::container::container_detail::node_slist +{}; + +struct fake_segment_manager +{ + typedef void * void_pointer; + static const std::size_t PayloadPerAllocation = BOOST_CONTAINER_ALLOCATION_PAYLOAD; + + typedef boost::container::container_detail:: + basic_multiallocation_chain multiallocation_chain; + static void deallocate(void_pointer p) + { boost_cont_free(p); } + + static void deallocate_many(multiallocation_chain &chain) + { + std::size_t size = chain.size(); + std::pair ptrs = chain.extract_data(); + boost_cont_memchain dlchain; + BOOST_CONTAINER_MEMCHAIN_INIT_FROM(&dlchain, ptrs.first, ptrs.second, size); + boost_cont_multidealloc(&dlchain); + } + + typedef std::ptrdiff_t difference_type; + typedef std::size_t size_type; + + static void *allocate_aligned(std::size_t nbytes, std::size_t alignment) + { + void *ret = boost_cont_memalign(nbytes, alignment); + if(!ret) + boost::container::throw_bad_alloc(); + return ret; + } + + static void *allocate(std::size_t nbytes) + { + void *ret = boost_cont_malloc(nbytes); + if(!ret) + boost::container::throw_bad_alloc(); + return ret; + } +}; + +} //namespace boost{ +} //namespace container{ +} //namespace container_detail{ + +namespace boost { +namespace container { +namespace container_detail { + +template +struct is_stateless_segment_manager; + +template<> +struct is_stateless_segment_manager + +{ + static const bool value = true; +}; + +} //namespace container_detail { +} //namespace container { +} //namespace boost { + +#include + +#endif //BOOST_CONTAINER_DETAIL_POOL_COMMON_ALLOC_HPP diff --git a/3party/boost/boost/container/detail/preprocessor.hpp b/3party/boost/boost/container/detail/preprocessor.hpp index 4e175a82fb..7e4f5eb0ff 100644 --- a/3party/boost/boost/container/detail/preprocessor.hpp +++ b/3party/boost/boost/container/detail/preprocessor.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,7 @@ #ifndef BOOST_CONTAINER_DETAIL_PREPROCESSOR_HPP #define BOOST_CONTAINER_DETAIL_PREPROCESSOR_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif diff --git a/3party/boost/boost/container/detail/singleton.hpp b/3party/boost/boost/container/detail/singleton.hpp new file mode 100644 index 0000000000..0843319a16 --- /dev/null +++ b/3party/boost/boost/container/detail/singleton.hpp @@ -0,0 +1,113 @@ +// Copyright (C) 2000 Stephen Cleary +// Copyright (C) 2008 Ion Gaztanaga +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org for updates, documentation, and revision history. +// +// This file is a modified file from Boost.Pool + +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_DETAIL_SINGLETON_DETAIL_HPP +#define BOOST_CONTAINER_DETAIL_SINGLETON_DETAIL_HPP + +#include +#include + +// +// The following helper classes are placeholders for a generic "singleton" +// class. The classes below support usage of singletons, including use in +// program startup/shutdown code, AS LONG AS there is only one thread +// running before main() begins, and only one thread running after main() +// exits. +// +// This class is also limited in that it can only provide singleton usage for +// classes with default constructors. +// + +// The design of this class is somewhat twisted, but can be followed by the +// calling inheritance. Let us assume that there is some user code that +// calls "singleton_default::instance()". The following (convoluted) +// sequence ensures that the same function will be called before main(): +// instance() contains a call to create_object.do_nothing() +// Thus, object_creator is implicitly instantiated, and create_object +// must exist. +// Since create_object is a static member, its constructor must be +// called before main(). +// The constructor contains a call to instance(), thus ensuring that +// instance() will be called before main(). +// The first time instance() is called (i.e., before main()) is the +// latest point in program execution where the object of type T +// can be created. +// Thus, any call to instance() will auto-magically result in a call to +// instance() before main(), unless already present. +// Furthermore, since the instance() function contains the object, instead +// of the singleton_default class containing a static instance of the +// object, that object is guaranteed to be constructed (at the latest) in +// the first call to instance(). This permits calls to instance() from +// static code, even if that code is called before the file-scope objects +// in this file have been initialized. + +namespace boost { +namespace container { +namespace container_detail { + +// T must be: no-throw default constructible and no-throw destructible +template +struct singleton_default +{ + private: + struct object_creator + { + // This constructor does nothing more than ensure that instance() + // is called before main() begins, thus creating the static + // T object before multithreading race issues can come up. + object_creator() { singleton_default::instance(); } + inline void do_nothing() const { } + }; + static object_creator create_object; + + singleton_default(); + + public: + typedef T object_type; + + // If, at any point (in user code), singleton_default::instance() + // is called, then the following function is instantiated. + static object_type & instance() + { + // This is the object that we return a reference to. + // It is guaranteed to be created before main() begins because of + // the next line. + static object_type obj; + + // The following line does nothing else than force the instantiation + // of singleton_default::create_object, whose constructor is + // called before main() begins. + create_object.do_nothing(); + + return obj; + } +}; +template +typename singleton_default::object_creator +singleton_default::create_object; + +} // namespace container_detail +} // namespace container +} // namespace boost + +#include + +#endif //BOOST_CONTAINER_DETAIL_SINGLETON_DETAIL_HPP diff --git a/3party/boost/boost/container/detail/transform_iterator.hpp b/3party/boost/boost/container/detail/transform_iterator.hpp index 98f5c04d60..c4e746c389 100644 --- a/3party/boost/boost/container/detail/transform_iterator.hpp +++ b/3party/boost/boost/container/detail/transform_iterator.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // (C) Copyright Gennaro Prota 2003 - 2004. // // Distributed under the Boost Software License, Version 1.0. @@ -14,12 +14,13 @@ #ifndef BOOST_CONTAINER_DETAIL_TRANSFORM_ITERATORS_HPP #define BOOST_CONTAINER_DETAIL_TRANSFORM_ITERATORS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include + #include #include @@ -33,10 +34,10 @@ struct operator_arrow_proxy : m_value(px) {} + typedef PseudoReference element_type; + PseudoReference* operator->() const { return &m_value; } - // This function is needed for MWCW and BCC, which won't call operator-> - // again automatically per 13.3.1.2 para 8 -// operator T*() const { return &m_value; } + mutable PseudoReference m_value; }; @@ -47,10 +48,10 @@ struct operator_arrow_proxy : m_value(px) {} + typedef T element_type; + T* operator->() const { return const_cast(&m_value); } - // This function is needed for MWCW and BCC, which won't call operator-> - // again automatically per 13.3.1.2 para 8 -// operator T*() const { return &m_value; } + T &m_value; }; diff --git a/3party/boost/boost/container/detail/tree.hpp b/3party/boost/boost/container/detail/tree.hpp index 9cb3c9f80f..8ccf2798d4 100644 --- a/3party/boost/boost/container/detail/tree.hpp +++ b/3party/boost/boost/container/detail/tree.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,24 +11,31 @@ #ifndef BOOST_CONTAINER_TREE_HPP #define BOOST_CONTAINER_TREE_HPP -#include "config_begin.hpp" +#include #include #include -#include -#include -#include -#include -#include - #include +#include #include #include #include #include #include #include +#include + +// +#include +#include +#include +#include +#include +// +#include +#include #include +// #ifndef BOOST_CONTAINER_PERFECT_FORWARDING #include #endif @@ -50,8 +57,12 @@ struct tree_value_compare typedef KeyOfValue key_of_value; typedef Key key_type; - tree_value_compare(const key_compare &kcomp) - : key_compare(kcomp) + explicit tree_value_compare(const key_compare &kcomp) + : KeyCompare(kcomp) + {} + + tree_value_compare() + : KeyCompare() {} const key_compare &key_comp() const @@ -81,47 +92,78 @@ struct tree_value_compare { return key_compare::operator()(this->key_forward(key1), this->key_forward(key2)); } }; -template -struct rbtree_hook +template +struct intrusive_tree_hook; + +template +struct intrusive_tree_hook { typedef typename container_detail::bi::make_set_base_hook < container_detail::bi::void_pointer , container_detail::bi::link_mode - , container_detail::bi::optimize_size + , container_detail::bi::optimize_size + >::type type; +}; + +template +struct intrusive_tree_hook +{ + typedef typename container_detail::bi::make_avl_set_base_hook + < container_detail::bi::void_pointer + , container_detail::bi::link_mode + , container_detail::bi::optimize_size + >::type type; +}; + +template +struct intrusive_tree_hook +{ + typedef typename container_detail::bi::make_bs_set_base_hook + < container_detail::bi::void_pointer + , container_detail::bi::link_mode + >::type type; +}; + +template +struct intrusive_tree_hook +{ + typedef typename container_detail::bi::make_bs_set_base_hook + < container_detail::bi::void_pointer + , container_detail::bi::link_mode >::type type; }; //This trait is used to type-pun std::pair because in C++03 //compilers std::pair is useless for C++11 features template -struct rbtree_internal_data_type +struct tree_internal_data_type { typedef T type; }; template -struct rbtree_internal_data_type< std::pair > +struct tree_internal_data_type< std::pair > { typedef pair type; }; - //The node to be store in the tree -template -struct rbtree_node - : public rbtree_hook::type +template +struct tree_node + : public intrusive_tree_hook::type { private: - //BOOST_COPYABLE_AND_MOVABLE(rbtree_node) - rbtree_node(); + //BOOST_COPYABLE_AND_MOVABLE(tree_node) + tree_node(); public: - typedef typename rbtree_hook::type hook_type; - + typedef typename intrusive_tree_hook + ::type hook_type; typedef T value_type; - typedef typename rbtree_internal_data_type::type internal_type; + typedef typename tree_internal_data_type::type internal_type; - typedef rbtree_node node_type; + typedef tree_node< T, VoidPointer + , tree_type_value, OptimizeSize> node_type; T &get_data() { @@ -174,56 +216,256 @@ struct rbtree_node { m_data = ::boost::move(v); } }; +template +class insert_equal_end_hint_functor +{ + Icont &icont_; + + public: + insert_equal_end_hint_functor(Icont &icont) + : icont_(icont) + {} + + void operator()(Node &n) + { this->icont_.insert_equal(this->icont_.cend(), n); } +}; + +template +class push_back_functor +{ + Icont &icont_; + + public: + push_back_functor(Icont &icont) + : icont_(icont) + {} + + void operator()(Node &n) + { this->icont_.push_back(n); } +}; + }//namespace container_detail { namespace container_detail { -template -struct intrusive_rbtree_type +template< class NodeType, class NodeCompareType + , class SizeType, class HookType + , boost::container::tree_type_enum tree_type_value> +struct intrusive_tree_dispatch; + +template +struct intrusive_tree_dispatch + { + typedef typename container_detail::bi::make_rbtree + + ,container_detail::bi::base_hook + ,container_detail::bi::constant_time_size + ,container_detail::bi::size_type + >::type type; +}; + +template +struct intrusive_tree_dispatch + +{ + typedef typename container_detail::bi::make_avltree + + ,container_detail::bi::base_hook + ,container_detail::bi::constant_time_size + ,container_detail::bi::size_type + >::type type; +}; + +template +struct intrusive_tree_dispatch + +{ + typedef typename container_detail::bi::make_sgtree + + ,container_detail::bi::base_hook + ,container_detail::bi::floating_point + ,container_detail::bi::size_type + >::type type; +}; + +template +struct intrusive_tree_dispatch + +{ + typedef typename container_detail::bi::make_splaytree + + ,container_detail::bi::base_hook + ,container_detail::bi::constant_time_size + ,container_detail::bi::size_type + >::type type; +}; + +template +struct intrusive_tree_type +{ + private: typedef typename boost::container:: allocator_traits::value_type value_type; typedef typename boost::container:: allocator_traits::void_pointer void_pointer; typedef typename boost::container:: allocator_traits::size_type size_type; - typedef typename container_detail::rbtree_node - node_type; + typedef typename container_detail::tree_node + < value_type, void_pointer + , tree_type_value, OptimizeSize> node_type; typedef node_compare node_compare_type; - typedef typename container_detail::bi::make_rbtree - - ,container_detail::bi::base_hook::type> - ,container_detail::bi::constant_time_size - ,container_detail::bi::size_type - >::type container_type; - typedef container_type type ; + //Deducing the hook type from node_type (e.g. node_type::hook_type) would + //provoke an early instantiation of node_type that could ruin recursive + //tree definitions, so retype the complete type to avoid any problem. + typedef typename intrusive_tree_hook + ::type hook_type; + public: + typedef typename intrusive_tree_dispatch + < node_type, node_compare_type + , size_type, hook_type + , tree_type_value>::type type; +}; + +//Trait to detect manually rebalanceable tree types +template +struct is_manually_balanceable +{ static const bool value = true; }; + +template<> struct is_manually_balanceable +{ static const bool value = false; }; + +template<> struct is_manually_balanceable +{ static const bool value = false; }; + +//Proxy traits to implement different operations depending on the +//is_manually_balanceable<>::value +template< boost::container::tree_type_enum tree_type_value + , bool IsManuallyRebalanceable = is_manually_balanceable::value> +struct intrusive_tree_proxy +{ + template + static void rebalance(Icont &) {} +}; + +template +struct intrusive_tree_proxy +{ + template + static void rebalance(Icont &c) + { c.rebalance(); } }; } //namespace container_detail { namespace container_detail { +//This functor will be used with Intrusive clone functions to obtain +//already allocated nodes from a intrusive container instead of +//allocating new ones. When the intrusive container runs out of nodes +//the node holder is used instead. +template +class RecyclingCloner +{ + typedef typename AllocHolder::intrusive_container intrusive_container; + typedef typename AllocHolder::Node node_type; + typedef typename AllocHolder::NodePtr node_ptr_type; + + public: + RecyclingCloner(AllocHolder &holder, intrusive_container &itree) + : m_holder(holder), m_icont(itree) + {} + + static void do_assign(node_ptr_type &p, const node_type &other, bool_) + { p->do_assign(other.m_data); } + + static void do_assign(node_ptr_type &p, const node_type &other, bool_) + { p->do_move_assign(const_cast(other).m_data); } + + node_ptr_type operator()(const node_type &other) const + { + if(node_ptr_type p = m_icont.unlink_leftmost_without_rebalance()){ + //First recycle a node (this can't throw) + BOOST_TRY{ + //This can throw + this->do_assign(p, other, bool_()); + return p; + } + BOOST_CATCH(...){ + //If there is an exception destroy the whole source + m_holder.destroy_node(p); + while((p = m_icont.unlink_leftmost_without_rebalance())){ + m_holder.destroy_node(p); + } + BOOST_RETHROW + } + BOOST_CATCH_END + } + else{ + return m_holder.create_node(other.m_data); + } + } + + AllocHolder &m_holder; + intrusive_container &m_icont; +}; + +template +//where KeyValueCompare is tree_value_compare +struct key_node_compare + : private KeyValueCompare +{ + explicit key_node_compare(const KeyValueCompare &comp) + : KeyValueCompare(comp) + {} + + template + struct is_node + { + static const bool value = is_same::value; + }; + + template + typename enable_if_c::value, const typename KeyValueCompare::value_type &>::type + key_forward(const T &node) const + { return node.get_data(); } + + template + typename enable_if_c::value, const T &>::type + key_forward(const T &key) const + { return key; } + + template + bool operator()(const KeyType &key1, const KeyType2 &key2) const + { return KeyValueCompare::operator()(this->key_forward(key1), this->key_forward(key2)); } +}; + template -class rbtree + class KeyCompare, class A, + class Options = tree_assoc_defaults> +class tree : protected container_detail::node_alloc_holder < A - , typename container_detail::intrusive_rbtree_type - - >::type - , KeyCompare + , typename container_detail::intrusive_tree_type + < A, tree_value_compare //ValComp + , Options::tree_type, Options::optimize_size>::type > { - typedef typename container_detail::intrusive_rbtree_type - < A, tree_value_compare - - >::type Icont; - typedef container_detail::node_alloc_holder - AllocHolder; + typedef tree_value_compare + ValComp; + typedef typename container_detail::intrusive_tree_type + < A, ValComp, Options::tree_type + , Options::optimize_size>::type Icont; + typedef container_detail::node_alloc_holder + AllocHolder; typedef typename AllocHolder::NodePtr NodePtr; - typedef rbtree < Key, Value, KeyOfValue - , KeyCompare, A> ThisType; + typedef tree < Key, Value, KeyOfValue + , KeyCompare, A, Options> ThisType; typedef typename AllocHolder::NodeAlloc NodeAlloc; typedef typename AllocHolder::ValAlloc ValAlloc; typedef typename AllocHolder::Node Node; @@ -233,84 +475,9 @@ class rbtree typedef typename AllocHolder::allocator_v1 allocator_v1; typedef typename AllocHolder::allocator_v2 allocator_v2; typedef typename AllocHolder::alloc_version alloc_version; + typedef intrusive_tree_proxy intrusive_tree_proxy_t; - class RecyclingCloner; - friend class RecyclingCloner; - - class RecyclingCloner - { - public: - RecyclingCloner(AllocHolder &holder, Icont &irbtree) - : m_holder(holder), m_icont(irbtree) - {} - - NodePtr operator()(const Node &other) const - { - if(NodePtr p = m_icont.unlink_leftmost_without_rebalance()){ - //First recycle a node (this can't throw) - BOOST_TRY{ - //This can throw - p->do_assign(other.m_data); - return p; - } - BOOST_CATCH(...){ - //If there is an exception destroy the whole source - m_holder.destroy_node(p); - while((p = m_icont.unlink_leftmost_without_rebalance())){ - m_holder.destroy_node(p); - } - BOOST_RETHROW - } - BOOST_CATCH_END - } - else{ - return m_holder.create_node(other.m_data); - } - } - - AllocHolder &m_holder; - Icont &m_icont; - }; - - class RecyclingMoveCloner; - friend class RecyclingMoveCloner; - - class RecyclingMoveCloner - { - public: - RecyclingMoveCloner(AllocHolder &holder, Icont &irbtree) - : m_holder(holder), m_icont(irbtree) - {} - - NodePtr operator()(const Node &other) const - { - if(NodePtr p = m_icont.unlink_leftmost_without_rebalance()){ - //First recycle a node (this can't throw) - BOOST_TRY{ - //This can throw - p->do_move_assign(const_cast(other).m_data); - return p; - } - BOOST_CATCH(...){ - //If there is an exception destroy the whole source - m_holder.destroy_node(p); - while((p = m_icont.unlink_leftmost_without_rebalance())){ - m_holder.destroy_node(p); - } - BOOST_RETHROW - } - BOOST_CATCH_END - } - else{ - return m_holder.create_node(other.m_data); - } - } - - AllocHolder &m_holder; - Icont &m_icont; - }; - - BOOST_COPYABLE_AND_MOVABLE(rbtree) + BOOST_COPYABLE_AND_MOVABLE(tree) public: @@ -318,8 +485,7 @@ class rbtree typedef Value value_type; typedef A allocator_type; typedef KeyCompare key_compare; - typedef tree_value_compare< Key, Value - , KeyCompare, KeyOfValue> value_compare; + typedef ValComp value_compare; typedef typename boost::container:: allocator_traits::pointer pointer; typedef typename boost::container:: @@ -332,154 +498,37 @@ class rbtree allocator_traits::size_type size_type; typedef typename boost::container:: allocator_traits::difference_type difference_type; - typedef difference_type rbtree_difference_type; - typedef pointer rbtree_pointer; - typedef const_pointer rbtree_const_pointer; - typedef reference rbtree_reference; - typedef const_reference rbtree_const_reference; + typedef difference_type tree_difference_type; + typedef pointer tree_pointer; + typedef const_pointer tree_const_pointer; + typedef reference tree_reference; + typedef const_reference tree_const_reference; typedef NodeAlloc stored_allocator_type; private: - template - struct key_node_compare - : private KeyValueCompare - { - key_node_compare(const KeyValueCompare &comp) - : KeyValueCompare(comp) - {} - - template - struct is_node - { - static const bool value = is_same::value; - }; - - template - typename enable_if_c::value, const value_type &>::type - key_forward(const T &node) const - { return node.get_data(); } - - template - typename enable_if_c::value, const T &>::type - key_forward(const T &key) const - { return key; } - - template - bool operator()(const KeyType &key1, const KeyType2 &key2) const - { return KeyValueCompare::operator()(this->key_forward(key1), this->key_forward(key2)); } - }; - - typedef key_node_compare KeyNodeCompare; + typedef key_node_compare KeyNodeCompare; public: - //rbtree const_iterator - class const_iterator - : public std::iterator - < std::bidirectional_iterator_tag - , value_type , rbtree_difference_type - , rbtree_const_pointer , rbtree_const_reference> - { - protected: - typedef typename Icont::iterator iiterator; - iiterator m_it; - explicit const_iterator(iiterator it) : m_it(it){} - void prot_incr() { ++m_it; } - void prot_decr() { --m_it; } - - private: - iiterator get() - { return this->m_it; } - - public: - friend class rbtree ; - typedef rbtree_difference_type difference_type; - - //Constructors - const_iterator() - : m_it() - {} - - //Pointer like operators - const_reference operator*() const - { return m_it->get_data(); } - - const_pointer operator->() const - { return const_pointer(&m_it->get_data()); } - - //Increment / Decrement - const_iterator& operator++() - { prot_incr(); return *this; } - - const_iterator operator++(int) - { iiterator tmp = m_it; ++*this; return const_iterator(tmp); } - - const_iterator& operator--() - { prot_decr(); return *this; } - - const_iterator operator--(int) - { iiterator tmp = m_it; --*this; return const_iterator(tmp); } - - //Comparison operators - bool operator== (const const_iterator& r) const - { return m_it == r.m_it; } - - bool operator!= (const const_iterator& r) const - { return m_it != r.m_it; } - }; - - //rbtree iterator - class iterator : public const_iterator - { - private: - explicit iterator(iiterator it) - : const_iterator(it) - {} - - iiterator get() - { return this->m_it; } - - public: - friend class rbtree ; - typedef rbtree_pointer pointer; - typedef rbtree_reference reference; - - //Constructors - iterator(){} - - //Pointer like operators - reference operator*() const - { return this->m_it->get_data(); } - pointer operator->() const - { return boost::intrusive::pointer_traits::pointer_to(this->m_it->get_data()); } - - //Increment / Decrement - iterator& operator++() - { this->prot_incr(); return *this; } - - iterator operator++(int) - { iiterator tmp = this->m_it; ++*this; return iterator(tmp); } - - iterator& operator--() - { this->prot_decr(); return *this; } - - iterator operator--(int) - { iterator tmp = *this; --*this; return tmp; } - }; - + typedef container_detail::iterator iterator; + typedef container_detail::iterator const_iterator; typedef std::reverse_iterator reverse_iterator; typedef std::reverse_iterator const_reverse_iterator; - rbtree() - : AllocHolder(key_compare()) + tree() + : AllocHolder(ValComp(key_compare())) {} - rbtree(const key_compare& comp, const allocator_type& a = allocator_type()) - : AllocHolder(a, comp) + explicit tree(const key_compare& comp, const allocator_type& a = allocator_type()) + : AllocHolder(a, ValComp(comp)) + {} + + explicit tree(const allocator_type& a) + : AllocHolder(a) {} template - rbtree(bool unique_insertion, InputIterator first, InputIterator last, const key_compare& comp, + tree(bool unique_insertion, InputIterator first, InputIterator last, const key_compare& comp, const allocator_type& a #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) , typename container_detail::enable_if_c @@ -488,18 +537,26 @@ class rbtree >::type * = 0 #endif ) - : AllocHolder(a, comp) + : AllocHolder(a, value_compare(comp)) { + //Use cend() as hint to achieve linear time for + //ordered ranges as required by the standard + //for the constructor + const const_iterator end_it(this->cend()); if(unique_insertion){ - this->insert_unique(first, last); + for ( ; first != last; ++first){ + this->insert_unique(end_it, *first); + } } else{ - this->insert_equal(first, last); + for ( ; first != last; ++first){ + this->insert_equal(end_it, *first); + } } } template - rbtree(bool unique_insertion, InputIterator first, InputIterator last, const key_compare& comp, + tree(bool unique_insertion, InputIterator first, InputIterator last, const key_compare& comp, const allocator_type& a #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) , typename container_detail::enable_if_c @@ -508,20 +565,27 @@ class rbtree >::type * = 0 #endif ) - : AllocHolder(a, comp) + : AllocHolder(a, value_compare(comp)) { if(unique_insertion){ - this->insert_unique(first, last); + //Use cend() as hint to achieve linear time for + //ordered ranges as required by the standard + //for the constructor + const const_iterator end_it(this->cend()); + for ( ; first != last; ++first){ + this->insert_unique(end_it, *first); + } } else{ //Optimized allocation and construction this->allocate_many_and_construct - (first, std::distance(first, last), insert_equal_end_hint_functor(this->icont())); + ( first, std::distance(first, last) + , insert_equal_end_hint_functor(this->icont())); } } template - rbtree( ordered_range_t, InputIterator first, InputIterator last + tree( ordered_range_t, InputIterator first, InputIterator last , const key_compare& comp = key_compare(), const allocator_type& a = allocator_type() #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) , typename container_detail::enable_if_c @@ -530,13 +594,15 @@ class rbtree >::type * = 0 #endif ) - : AllocHolder(a, comp) + : AllocHolder(a, value_compare(comp)) { - this->insert_equal(first, last); + for ( ; first != last; ++first){ + this->push_back_impl(*first); + } } template - rbtree( ordered_range_t, InputIterator first, InputIterator last + tree( ordered_range_t, InputIterator first, InputIterator last , const key_compare& comp = key_compare(), const allocator_type& a = allocator_type() #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) , typename container_detail::enable_if_c @@ -545,33 +611,34 @@ class rbtree >::type * = 0 #endif ) - : AllocHolder(a, comp) + : AllocHolder(a, value_compare(comp)) { //Optimized allocation and construction this->allocate_many_and_construct - (first, std::distance(first, last), push_back_functor(this->icont())); + ( first, std::distance(first, last) + , container_detail::push_back_functor(this->icont())); } - rbtree(const rbtree& x) - : AllocHolder(x, x.key_comp()) + tree(const tree& x) + : AllocHolder(x, x.value_comp()) { this->icont().clone_from (x.icont(), typename AllocHolder::cloner(*this), Destroyer(this->node_alloc())); } - rbtree(BOOST_RV_REF(rbtree) x) - : AllocHolder(::boost::move(static_cast(x)), x.key_comp()) + tree(BOOST_RV_REF(tree) x) + : AllocHolder(::boost::move(static_cast(x)), x.value_comp()) {} - rbtree(const rbtree& x, const allocator_type &a) - : AllocHolder(a, x.key_comp()) + tree(const tree& x, const allocator_type &a) + : AllocHolder(a, x.value_comp()) { this->icont().clone_from (x.icont(), typename AllocHolder::cloner(*this), Destroyer(this->node_alloc())); } - rbtree(BOOST_RV_REF(rbtree) x, const allocator_type &a) - : AllocHolder(a, x.key_comp()) + tree(BOOST_RV_REF(tree) x, const allocator_type &a) + : AllocHolder(a, x.value_comp()) { if(this->node_alloc() == x.node_alloc()){ this->icont().swap(x.icont()); @@ -582,10 +649,10 @@ class rbtree } } - ~rbtree() + ~tree() {} //AllocHolder clears the tree - rbtree& operator=(BOOST_COPY_ASSIGN_REF(rbtree) x) + tree& operator=(BOOST_COPY_ASSIGN_REF(tree) x) { if (&x != this){ NodeAlloc &this_alloc = this->get_stored_allocator(); @@ -604,7 +671,7 @@ class rbtree //Now recreate the source tree reusing nodes stored by other_tree this->icont().clone_from (x.icont() - , RecyclingCloner(*this, other_tree) + , RecyclingCloner(*this, other_tree) , Destroyer(this->node_alloc())); //If there are remaining nodes, destroy them @@ -616,43 +683,47 @@ class rbtree return *this; } - rbtree& operator=(BOOST_RV_REF(rbtree) x) + tree& operator=(BOOST_RV_REF(tree) x) { - if (&x != this){ - NodeAlloc &this_alloc = this->node_alloc(); - NodeAlloc &x_alloc = x.node_alloc(); - //If allocators are equal we can just swap pointers - if(this_alloc == x_alloc){ - //Destroy and swap pointers - this->clear(); - this->icont() = ::boost::move(x.icont()); - //Move allocator if needed - this->AllocHolder::move_assign_alloc(x); - } - //If unequal allocators, then do a one by one move - else{ - //Transfer all the nodes to a temporary tree - //If anything goes wrong, all the nodes will be destroyed - //automatically - Icont other_tree(::boost::move(this->icont())); + BOOST_ASSERT(this != &x); + NodeAlloc &this_alloc = this->node_alloc(); + NodeAlloc &x_alloc = x.node_alloc(); + const bool propagate_alloc = allocator_traits:: + propagate_on_container_move_assignment::value; + const bool allocators_equal = this_alloc == x_alloc; (void)allocators_equal; + //Resources can be transferred if both allocators are + //going to be equal after this function (either propagated or already equal) + if(propagate_alloc || allocators_equal){ + //Destroy + this->clear(); + //Move allocator if needed + this->AllocHolder::move_assign_alloc(x); + //Obtain resources + this->icont() = boost::move(x.icont()); + } + //Else do a one by one move + else{ + //Transfer all the nodes to a temporary tree + //If anything goes wrong, all the nodes will be destroyed + //automatically + Icont other_tree(::boost::move(this->icont())); - //Now recreate the source tree reusing nodes stored by other_tree - this->icont().clone_from - (x.icont() - , RecyclingMoveCloner(*this, other_tree) - , Destroyer(this->node_alloc())); + //Now recreate the source tree reusing nodes stored by other_tree + this->icont().clone_from + (x.icont() + , RecyclingCloner(*this, other_tree) + , Destroyer(this->node_alloc())); - //If there are remaining nodes, destroy them - NodePtr p; - while((p = other_tree.unlink_leftmost_without_rebalance())){ - AllocHolder::destroy_node(p); - } + //If there are remaining nodes, destroy them + NodePtr p; + while((p = other_tree.unlink_leftmost_without_rebalance())){ + AllocHolder::destroy_node(p); } } return *this; } - public: + public: // accessors: value_compare value_comp() const { return this->icont().value_comp().value_comp(); } @@ -763,8 +834,10 @@ class rbtree iterator insert_unique_commit(const value_type& v, insert_commit_data &data) { NodePtr tmp = AllocHolder::create_node(v); - iiterator it(this->icont().insert_unique_commit(*tmp, data)); - return iterator(it); + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); + iterator ret(this->icont().insert_unique_commit(*tmp, data)); + destroy_deallocator.release(); + return ret; } template @@ -772,8 +845,10 @@ class rbtree (BOOST_FWD_REF(MovableConvertible) mv, insert_commit_data &data) { NodePtr tmp = AllocHolder::create_node(boost::forward(mv)); - iiterator it(this->icont().insert_unique_commit(*tmp, data)); - return iterator(it); + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); + iterator ret(this->icont().insert_unique_commit(*tmp, data)); + destroy_deallocator.release(); + return ret; } std::pair insert_unique(const value_type& v) @@ -781,10 +856,10 @@ class rbtree insert_commit_data data; std::pair ret = this->insert_unique_check(KeyOfValue()(v), data); - if(!ret.second) - return ret; - return std::pair - (this->insert_unique_commit(v, data), true); + if(ret.second){ + ret.first = this->insert_unique_commit(v, data); + } + return ret; } template @@ -793,13 +868,22 @@ class rbtree insert_commit_data data; std::pair ret = this->insert_unique_check(KeyOfValue()(mv), data); - if(!ret.second) - return ret; - return std::pair - (this->insert_unique_commit(boost::forward(mv), data), true); + if(ret.second){ + ret.first = this->insert_unique_commit(boost::forward(mv), data); + } + return ret; } private: + + template + void push_back_impl(BOOST_FWD_REF(MovableConvertible) mv) + { + NodePtr tmp(AllocHolder::create_node(boost::forward(mv))); + //push_back has no-throw guarantee so avoid any deallocator/destroyer + this->icont().push_back(*tmp); + } + std::pair emplace_unique_impl(NodePtr p) { value_type &v = p->get_data(); @@ -845,15 +929,21 @@ class rbtree template iterator emplace_equal(Args&&... args) { - NodePtr p(AllocHolder::create_node(boost::forward(args)...)); - return iterator(this->icont().insert_equal(this->icont().end(), *p)); + NodePtr tmp(AllocHolder::create_node(boost::forward(args)...)); + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); + iterator ret(this->icont().insert_equal(this->icont().end(), *tmp)); + destroy_deallocator.release(); + return ret; } template iterator emplace_hint_equal(const_iterator hint, Args&&... args) { - NodePtr p(AllocHolder::create_node(boost::forward(args)...)); - return iterator(this->icont().insert_equal(hint.get(), *p)); + NodePtr tmp(AllocHolder::create_node(boost::forward(args)...)); + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); + iterator ret(this->icont().insert_equal(hint.get(), *tmp)); + destroy_deallocator.release(); + return ret; } #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING @@ -877,16 +967,22 @@ class rbtree BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ { \ - NodePtr p(AllocHolder::create_node(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \ - return iterator(this->icont().insert_equal(this->icont().end(), *p)); \ + NodePtr tmp(AllocHolder::create_node(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \ + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); \ + iterator ret(this->icont().insert_equal(this->icont().end(), *tmp)); \ + destroy_deallocator.release(); \ + return ret; \ } \ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace_hint_equal(const_iterator hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ { \ - NodePtr p(AllocHolder::create_node(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \ - return iterator(this->icont().insert_equal(hint.get(), *p)); \ + NodePtr tmp(AllocHolder::create_node(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _))); \ + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); \ + iterator ret(this->icont().insert_equal(hint.get(), *tmp)); \ + destroy_deallocator.release(); \ + return ret; \ } \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) @@ -918,53 +1014,53 @@ class rbtree template void insert_unique(InputIterator first, InputIterator last) { - if(this->empty()){ - //Insert with end hint, to achieve linear - //complexity if [first, last) is ordered - const_iterator hint(this->cend()); - for( ; first != last; ++first) - hint = this->insert_unique(hint, *first); - } - else{ - for( ; first != last; ++first) - this->insert_unique(*first); - } + for( ; first != last; ++first) + this->insert_unique(*first); } iterator insert_equal(const value_type& v) { - NodePtr p(AllocHolder::create_node(v)); - return iterator(this->icont().insert_equal(this->icont().end(), *p)); + NodePtr tmp(AllocHolder::create_node(v)); + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); + iterator ret(this->icont().insert_equal(this->icont().end(), *tmp)); + destroy_deallocator.release(); + return ret; } template iterator insert_equal(BOOST_FWD_REF(MovableConvertible) mv) { - NodePtr p(AllocHolder::create_node(boost::forward(mv))); - return iterator(this->icont().insert_equal(this->icont().end(), *p)); + NodePtr tmp(AllocHolder::create_node(boost::forward(mv))); + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); + iterator ret(this->icont().insert_equal(this->icont().end(), *tmp)); + destroy_deallocator.release(); + return ret; } iterator insert_equal(const_iterator hint, const value_type& v) { - NodePtr p(AllocHolder::create_node(v)); - return iterator(this->icont().insert_equal(hint.get(), *p)); + NodePtr tmp(AllocHolder::create_node(v)); + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); + iterator ret(this->icont().insert_equal(hint.get(), *tmp)); + destroy_deallocator.release(); + return ret; } template iterator insert_equal(const_iterator hint, BOOST_FWD_REF(MovableConvertible) mv) { - NodePtr p(AllocHolder::create_node(boost::forward(mv))); - return iterator(this->icont().insert_equal(hint.get(), *p)); + NodePtr tmp(AllocHolder::create_node(boost::forward(mv))); + scoped_destroy_deallocator destroy_deallocator(tmp, this->node_alloc()); + iterator ret(this->icont().insert_equal(hint.get(), *tmp)); + destroy_deallocator.release(); + return ret; } template void insert_equal(InputIterator first, InputIterator last) { - //Insert with end hint, to achieve linear - //complexity if [first, last) is ordered - const_iterator hint(this->cend()); for( ; first != last; ++first) - hint = this->insert_equal(hint, *first); + this->insert_equal(*first); } iterator erase(const_iterator position) @@ -979,7 +1075,8 @@ class rbtree void clear() { AllocHolder::clear(alloc_version()); } - // set operations: + // search operations. Const and non-const overloads even if no iterator is returned + // so splay implementations can to their rebalancing when searching in non-const versions iterator find(const key_type& k) { return iterator(this->icont().find(k, KeyNodeCompare(value_comp()))); } @@ -1016,104 +1113,46 @@ class rbtree (const_iterator(ret.first), const_iterator(ret.second)); } - private: - - class insert_equal_end_hint_functor; - friend class insert_equal_end_hint_functor; - - class insert_equal_end_hint_functor + std::pair lower_bound_range(const key_type& k) { - Icont &icont_; - const iconst_iterator cend_; + std::pair ret = + this->icont().lower_bound_range(k, KeyNodeCompare(value_comp())); + return std::pair(iterator(ret.first), iterator(ret.second)); + } - public: - insert_equal_end_hint_functor(Icont &icont) - : icont_(icont), cend_(this->icont_.cend()) - {} - - void operator()(Node &n) - { this->icont_.insert_equal(cend_, n); } - }; - - class push_back_functor; - friend class push_back_functor; - - class push_back_functor + std::pair lower_bound_range(const key_type& k) const { - Icont &icont_; + std::pair ret = + this->non_const_icont().lower_bound_range(k, KeyNodeCompare(value_comp())); + return std::pair + (const_iterator(ret.first), const_iterator(ret.second)); + } - public: - push_back_functor(Icont &icont) - : icont_(icont) - {} + void rebalance() + { intrusive_tree_proxy_t::rebalance(this->icont()); } - void operator()(Node &n) - { this->icont_.push_back(n); } - }; + friend bool operator==(const tree& x, const tree& y) + { return x.size() == y.size() && std::equal(x.begin(), x.end(), y.begin()); } + + friend bool operator<(const tree& x, const tree& y) + { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } + + friend bool operator!=(const tree& x, const tree& y) + { return !(x == y); } + + friend bool operator>(const tree& x, const tree& y) + { return y < x; } + + friend bool operator<=(const tree& x, const tree& y) + { return !(y < x); } + + friend bool operator>=(const tree& x, const tree& y) + { return !(x < y); } + + friend void swap(tree& x, tree& y) + { x.swap(y); } }; -template -inline bool -operator==(const rbtree& x, - const rbtree& y) -{ - return x.size() == y.size() && - std::equal(x.begin(), x.end(), y.begin()); -} - -template -inline bool -operator<(const rbtree& x, - const rbtree& y) -{ - return std::lexicographical_compare(x.begin(), x.end(), - y.begin(), y.end()); -} - -template -inline bool -operator!=(const rbtree& x, - const rbtree& y) { - return !(x == y); -} - -template -inline bool -operator>(const rbtree& x, - const rbtree& y) { - return y < x; -} - -template -inline bool -operator<=(const rbtree& x, - const rbtree& y) { - return !(y < x); -} - -template -inline bool -operator>=(const rbtree& x, - const rbtree& y) { - return !(x < y); -} - - -template -inline void -swap(rbtree& x, - rbtree& y) -{ - x.swap(y); -} - } //namespace container_detail { } //namespace container { /* @@ -1122,7 +1161,7 @@ swap(rbtree& x, template struct has_trivial_destructor_after_move - > + > { static const bool value = has_trivial_destructor_after_move::value && has_trivial_destructor_after_move::value; }; diff --git a/3party/boost/boost/container/detail/type_traits.hpp b/3party/boost/boost/container/detail/type_traits.hpp index 5020ee9fcc..6f20bd5244 100644 --- a/3party/boost/boost/container/detail/type_traits.hpp +++ b/3party/boost/boost/container/detail/type_traits.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // (C) Copyright John Maddock 2000. -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -15,11 +15,12 @@ #ifndef BOOST_CONTAINER_CONTAINER_DETAIL_TYPE_TRAITS_HPP #define BOOST_CONTAINER_CONTAINER_DETAIL_TYPE_TRAITS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include +#include #include diff --git a/3party/boost/boost/container/detail/utilities.hpp b/3party/boost/boost/container/detail/utilities.hpp index 81e0ed8f42..5aca542b26 100644 --- a/3party/boost/boost/container/detail/utilities.hpp +++ b/3party/boost/boost/container/detail/utilities.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,25 +11,34 @@ #ifndef BOOST_CONTAINER_DETAIL_UTILITIES_HPP #define BOOST_CONTAINER_DETAIL_UTILITIES_HPP -#include "config_begin.hpp" +#include +#include + #include -#include //for ::memcpy +#include //for ::memmove / ::memcpy #include #include #include #include #include +#include +#include +#include #include +#include +#include +#include #include #include #include +#include +#include #include #include #include #include -#include -#include #include +#include #include #include #include @@ -108,35 +117,73 @@ template const T &min_value(const T &a, const T &b) { return a < b ? a : b; } -template -SizeType - get_next_capacity(const SizeType max_size - ,const SizeType capacity - ,const SizeType n) +enum NextCapacityOption { NextCapacityDouble, NextCapacity60Percent }; + +template +struct next_capacity_calculator; + +template +struct next_capacity_calculator { -// if (n > max_size - capacity) -// throw std::length_error("get_next_capacity"); + static SizeType get(const SizeType max_size + ,const SizeType capacity + ,const SizeType n) + { + const SizeType remaining = max_size - capacity; + if ( remaining < n ) + boost::container::throw_length_error("get_next_capacity, allocator's max_size reached"); + const SizeType additional = max_value(n, capacity); + return ( remaining < additional ) ? max_size : ( capacity + additional ); + } +}; - const SizeType m3 = max_size/3; - if (capacity < m3) - return capacity + max_value(3*(capacity+1)/5, n); +template +struct next_capacity_calculator +{ + static SizeType get(const SizeType max_size + ,const SizeType capacity + ,const SizeType n) + { + const SizeType remaining = max_size - capacity; + if ( remaining < n ) + boost::container::throw_length_error("get_next_capacity, allocator's max_size reached"); + const SizeType m3 = max_size/3; - if (capacity < m3*2) - return capacity + max_value((capacity+1)/2, n); + if (capacity < m3) + return capacity + max_value(3*(capacity+1)/5, n); - return max_size; -} + if (capacity < m3*2) + return capacity + max_value((capacity+1)/2, n); + return max_size; + } +}; template inline T* to_raw_pointer(T* p) { return p; } template -inline typename Pointer::element_type* +inline typename boost::intrusive::pointer_traits::element_type* to_raw_pointer(const Pointer &p) { return boost::container::container_detail::to_raw_pointer(p.operator->()); } +template +inline T* iterator_to_pointer(T* i) +{ return i; } + +template +inline typename std::iterator_traits::pointer + iterator_to_pointer(const Iterator &i) +{ return i.operator->(); } + +template +inline + typename boost::intrusive::pointer_traits + ::pointer>::element_type* + iterator_to_raw_pointer(const Iterator &i) +{ return (to_raw_pointer)((iterator_to_pointer)(i)); } + template inline void swap_alloc(AllocatorType &, AllocatorType &, container_detail::false_type) @@ -265,47 +312,47 @@ struct are_contiguous_and_same }; template -struct is_memcpy_copy_assignable +struct is_memtransfer_copy_assignable { static const bool value = are_contiguous_and_same::value && boost::has_trivial_assign< typename ::std::iterator_traits::value_type >::value; }; template -struct is_memcpy_copy_constructible +struct is_memtransfer_copy_constructible { static const bool value = are_contiguous_and_same::value && boost::has_trivial_copy< typename ::std::iterator_traits::value_type >::value; }; template -struct enable_if_memcpy_copy_constructible - : public enable_if_c::value, R> +struct enable_if_memtransfer_copy_constructible + : public enable_if_c::value, R> {}; template -struct disable_if_memcpy_copy_constructible - : public enable_if_c::value, R> +struct disable_if_memtransfer_copy_constructible + : public enable_if_c::value, R> {}; template -struct enable_if_memcpy_copy_assignable - : public enable_if_c::value, R> +struct enable_if_memtransfer_copy_assignable + : public enable_if_c::value, R> {}; template -struct disable_if_memcpy_copy_assignable - : public enable_if_c::value, R> +struct disable_if_memtransfer_copy_assignable + : public enable_if_c::value, R> {}; template // F models ForwardIterator -inline F memcpy(I f, I l, F r) BOOST_CONTAINER_NOEXCEPT +inline F memmove(I f, I l, F r) BOOST_CONTAINER_NOEXCEPT { typedef typename std::iterator_traits::value_type value_type; typename std::iterator_traits::difference_type n = std::distance(f, l); - ::memcpy(container_detail::addressof(*r), container_detail::addressof(*f), sizeof(value_type)*n); + ::memmove((iterator_to_raw_pointer)(r), (iterator_to_raw_pointer)(f), sizeof(value_type)*n); std::advance(r, n); return r; } @@ -313,10 +360,10 @@ inline F memcpy(I f, I l, F r) BOOST_CONTAINER_NOEXCEPT template // F models ForwardIterator -F memcpy_n(I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT +F memmove_n(I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT { typedef typename std::iterator_traits::value_type value_type; - ::memcpy(container_detail::addressof(*r), container_detail::addressof(*f), sizeof(value_type)*n); + ::memmove((iterator_to_raw_pointer)(r), (iterator_to_raw_pointer)(f), sizeof(value_type)*n); std::advance(r, n); return r; } @@ -324,10 +371,10 @@ F memcpy_n(I f, typename std::iterator_traits::difference_type n, F r) BOOST_ template // F models ForwardIterator -I memcpy_n_source(I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT +I memmove_n_source(I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT { typedef typename std::iterator_traits::value_type value_type; - ::memcpy(container_detail::addressof(*r), container_detail::addressof(*f), sizeof(value_type)*n); + ::memmove((iterator_to_raw_pointer)(r), (iterator_to_raw_pointer)(f), sizeof(value_type)*n); std::advance(f, n); return f; } @@ -335,15 +382,42 @@ I memcpy_n_source(I f, typename std::iterator_traits::difference_type n, F r) template // F models ForwardIterator -I memcpy_n_source_dest(I f, typename std::iterator_traits::difference_type n, F &r) BOOST_CONTAINER_NOEXCEPT +I memmove_n_source_dest(I f, typename std::iterator_traits::difference_type n, F &r) BOOST_CONTAINER_NOEXCEPT { typedef typename std::iterator_traits::value_type value_type; - ::memcpy(container_detail::addressof(*r), container_detail::addressof(*f), sizeof(value_type)*n); + ::memmove((iterator_to_raw_pointer)(r), (iterator_to_raw_pointer)(f), sizeof(value_type)*n); std::advance(f, n); std::advance(r, n); return f; } +template +struct is_memzero_initializable +{ + typedef typename ::std::iterator_traits::value_type value_type; + static const bool value = are_elements_contiguous::value && + ( ::boost::is_integral::value || ::boost::is_enum::value + #if defined(BOOST_CONTAINER_MEMZEROED_POINTER_IS_NULL) + || ::boost::is_pointer::value + #endif + #if defined(BOOST_CONTAINER_MEMZEROED_FLOATING_POINT_IS_ZERO) + || ::boost::is_floating_point::value + #endif + #if defined(BOOST_CONTAINER_MEMZEROED_FLOATING_POINT_IS_ZERO) && defined(BOOST_CONTAINER_MEMZEROED_POINTER_IS_NULL) + || ::boost::is_pod::value + #endif + ); +}; + +template +struct enable_if_memzero_initializable + : public enable_if_c::value, R> +{}; + +template +struct disable_if_memzero_initializable + : public enable_if_c::value, R> +{}; } //namespace container_detail { @@ -366,19 +440,19 @@ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_constructible::type +inline typename container_detail::disable_if_memtransfer_copy_constructible::type uninitialized_move_alloc(A &a, I f, I l, F r) { F back = r; BOOST_TRY{ while (f != l) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*r), boost::move(*f)); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r), boost::move(*f)); ++f; ++r; } } BOOST_CATCH(...){ for (; back != r; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -390,9 +464,9 @@ template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_constructible::type +inline typename container_detail::enable_if_memtransfer_copy_constructible::type uninitialized_move_alloc(A &, I f, I l, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy(f, l, r); } +{ return container_detail::memmove(f, l, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -411,19 +485,19 @@ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_constructible::type +inline typename container_detail::disable_if_memtransfer_copy_constructible::type uninitialized_move_alloc_n(A &a, I f, typename std::iterator_traits::difference_type n, F r) { F back = r; BOOST_TRY{ while (n--) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*r), boost::move(*f)); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r), boost::move(*f)); ++f; ++r; } } BOOST_CATCH(...){ for (; back != r; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -435,9 +509,9 @@ template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_constructible::type +inline typename container_detail::enable_if_memtransfer_copy_constructible::type uninitialized_move_alloc_n(A &, I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n(f, n, r); } +{ return container_detail::memmove_n(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -456,19 +530,19 @@ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_constructible::type +inline typename container_detail::disable_if_memtransfer_copy_constructible::type uninitialized_move_alloc_n_source(A &a, I f, typename std::iterator_traits::difference_type n, F r) { F back = r; BOOST_TRY{ while (n--) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*r), boost::move(*f)); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r), boost::move(*f)); ++f; ++r; } } BOOST_CATCH(...){ for (; back != r; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -480,9 +554,9 @@ template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_constructible::type +inline typename container_detail::enable_if_memtransfer_copy_constructible::type uninitialized_move_alloc_n_source(A &, I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n_source(f, n, r); } +{ return container_detail::memmove_n_source(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -501,19 +575,19 @@ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_constructible::type +inline typename container_detail::disable_if_memtransfer_copy_constructible::type uninitialized_copy_alloc(A &a, I f, I l, F r) { F back = r; BOOST_TRY{ while (f != l) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*r), *f); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r), *f); ++f; ++r; } } BOOST_CATCH(...){ for (; back != r; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -525,9 +599,9 @@ template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_constructible::type +inline typename container_detail::enable_if_memtransfer_copy_constructible::type uninitialized_copy_alloc(A &, I f, I l, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy(f, l, r); } +{ return container_detail::memmove(f, l, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -546,19 +620,19 @@ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_constructible::type +inline typename container_detail::disable_if_memtransfer_copy_constructible::type uninitialized_copy_alloc_n(A &a, I f, typename std::iterator_traits::difference_type n, F r) { F back = r; BOOST_TRY{ while (n--) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*r), *f); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r), *f); ++f; ++r; } } BOOST_CATCH(...){ for (; back != r; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -570,9 +644,9 @@ template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_constructible::type +inline typename container_detail::enable_if_memtransfer_copy_constructible::type uninitialized_copy_alloc_n(A &, I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n(f, n, r); } +{ return container_detail::memmove_n(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -591,19 +665,19 @@ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_constructible::type +inline typename container_detail::disable_if_memtransfer_copy_constructible::type uninitialized_copy_alloc_n_source(A &a, I f, typename std::iterator_traits::difference_type n, F r) { F back = r; BOOST_TRY{ while (n--) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*r), *f); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r), *f); ++f; ++r; } } BOOST_CATCH(...){ for (; back != r; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -615,13 +689,13 @@ template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_constructible::type +inline typename container_detail::enable_if_memtransfer_copy_constructible::type uninitialized_copy_alloc_n_source(A &, I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n_source(f, n, r); } +{ return container_detail::memmove_n_source(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // -// uninitialized_default_alloc_n +// uninitialized_value_init_alloc_n // ////////////////////////////////////////////////////////////////////////////// @@ -635,18 +709,66 @@ inline typename container_detail::enable_if_memcpy_copy_constructible:: template // F models ForwardIterator -inline F uninitialized_default_alloc_n(A &a, typename allocator_traits::difference_type n, F r) +inline typename container_detail::disable_if_memzero_initializable::type + uninitialized_value_init_alloc_n(A &a, typename allocator_traits::difference_type n, F r) { F back = r; BOOST_TRY{ while (n--) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*r)); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r)); ++r; } } BOOST_CATCH(...){ for (; back != r; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); + } + BOOST_RETHROW; + } + BOOST_CATCH_END + return r; +} + +template + // F models ForwardIterator +inline typename container_detail::enable_if_memzero_initializable::type + uninitialized_value_init_alloc_n(A &, typename allocator_traits::difference_type n, F r) +{ + typedef typename std::iterator_traits::value_type value_type; + ::memset((void*)container_detail::iterator_to_raw_pointer(r), 0, sizeof(value_type)*n); + std::advance(r, n); + return r; +} + +////////////////////////////////////////////////////////////////////////////// +// +// uninitialized_default_init_alloc_n +// +////////////////////////////////////////////////////////////////////////////// + +//! Effects: +//! \code +//! for (; n--; ++r, ++f) +//! allocator_traits::construct(a, &*r); +//! \endcode +//! +//! Returns: r +template + // F models ForwardIterator +inline F uninitialized_default_init_alloc_n(A &a, typename allocator_traits::difference_type n, F r) +{ + F back = r; + BOOST_TRY{ + while (n--) { + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r), default_init); + ++r; + } + } + BOOST_CATCH(...){ + for (; back != r; ++back){ + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -676,13 +798,13 @@ inline void uninitialized_fill_alloc(A &a, F f, F l, const T &t) F back = f; BOOST_TRY{ while (f != l) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*f), t); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(f), t); ++f; } } BOOST_CATCH(...){ for (; back != l; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -712,13 +834,13 @@ inline F uninitialized_fill_alloc_n(A &a, const T &v, typename allocator_traits< F back = r; BOOST_TRY{ while (n--) { - allocator_traits::construct(a, container_detail::to_raw_pointer(&*r), v); + allocator_traits::construct(a, container_detail::iterator_to_raw_pointer(r), v); ++r; } } BOOST_CATCH(...){ for (; back != r; ++back){ - allocator_traits::destroy(a, container_detail::to_raw_pointer(&*back)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(back)); } BOOST_RETHROW; } @@ -735,7 +857,7 @@ inline F uninitialized_fill_alloc_n(A &a, const T &v, typename allocator_traits< template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type copy(I f, I l, F r) { while (f != l) { @@ -748,9 +870,9 @@ inline typename container_detail::disable_if_memcpy_copy_assignable::ty template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_assignable::type +inline typename container_detail::enable_if_memtransfer_copy_assignable::type copy(I f, I l, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy(f, l, r); } +{ return container_detail::memmove(f, l, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -761,7 +883,7 @@ inline typename container_detail::enable_if_memcpy_copy_assignable::typ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type copy_n(I f, typename std::iterator_traits::difference_type n, F r) { while (n--) { @@ -774,9 +896,9 @@ inline typename container_detail::disable_if_memcpy_copy_assignable::ty template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_assignable::type +inline typename container_detail::enable_if_memtransfer_copy_assignable::type copy_n(I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n(f, n, r); } +{ return container_detail::memmove_n(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -787,7 +909,7 @@ inline typename container_detail::enable_if_memcpy_copy_assignable::typ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type copy_n_source(I f, typename std::iterator_traits::difference_type n, F r) { while (n--) { @@ -800,9 +922,9 @@ inline typename container_detail::disable_if_memcpy_copy_assignable::ty template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_assignable::type +inline typename container_detail::enable_if_memtransfer_copy_assignable::type copy_n_source(I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n_source(f, n, r); } +{ return container_detail::memmove_n_source(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -813,7 +935,7 @@ inline typename container_detail::enable_if_memcpy_copy_assignable::typ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type copy_n_source_dest(I f, typename std::iterator_traits::difference_type n, F &r) { while (n--) { @@ -826,9 +948,9 @@ inline typename container_detail::disable_if_memcpy_copy_assignable::ty template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_assignable::type +inline typename container_detail::enable_if_memtransfer_copy_assignable::type copy_n_source_dest(I f, typename std::iterator_traits::difference_type n, F &r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n_source_dest(f, n, r); } +{ return container_detail::memmove_n_source_dest(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -839,7 +961,7 @@ inline typename container_detail::enable_if_memcpy_copy_assignable::typ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type move(I f, I l, F r) { while (f != l) { @@ -852,9 +974,9 @@ inline typename container_detail::disable_if_memcpy_copy_assignable::ty template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_assignable::type +inline typename container_detail::enable_if_memtransfer_copy_assignable::type move(I f, I l, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy(f, l, r); } +{ return container_detail::memmove(f, l, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -865,7 +987,7 @@ inline typename container_detail::enable_if_memcpy_copy_assignable::typ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type move_n(I f, typename std::iterator_traits::difference_type n, F r) { while (n--) { @@ -878,9 +1000,9 @@ inline typename container_detail::disable_if_memcpy_copy_assignable::ty template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_assignable::type +inline typename container_detail::enable_if_memtransfer_copy_assignable::type move_n(I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n(f, n, r); } +{ return container_detail::memmove_n(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -891,7 +1013,7 @@ inline typename container_detail::enable_if_memcpy_copy_assignable::typ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type move_n_source(I f, typename std::iterator_traits::difference_type n, F r) { while (n--) { @@ -904,9 +1026,9 @@ inline typename container_detail::disable_if_memcpy_copy_assignable::ty template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_assignable::type +inline typename container_detail::enable_if_memtransfer_copy_assignable::type move_n_source(I f, typename std::iterator_traits::difference_type n, F r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n_source(f, n, r); } +{ return container_detail::memmove_n_source(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -917,7 +1039,7 @@ inline typename container_detail::enable_if_memcpy_copy_assignable::typ template // F models ForwardIterator -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type move_n_source_dest(I f, typename std::iterator_traits::difference_type n, F &r) { while (n--) { @@ -930,9 +1052,9 @@ inline typename container_detail::disable_if_memcpy_copy_assignable::ty template // F models ForwardIterator -inline typename container_detail::enable_if_memcpy_copy_assignable::type +inline typename container_detail::enable_if_memtransfer_copy_assignable::type move_n_source_dest(I f, typename std::iterator_traits::difference_type n, F &r) BOOST_CONTAINER_NOEXCEPT -{ return container_detail::memcpy_n_source_dest(f, n, r); } +{ return container_detail::memmove_n_source_dest(f, n, r); } ////////////////////////////////////////////////////////////////////////////// // @@ -948,7 +1070,7 @@ inline void destroy_alloc_n(A &a, I f, typename std::iterator_traits::differe < !boost::has_trivial_destructor::value_type>::value >::type* = 0) { while(n--){ - allocator_traits::destroy(a, container_detail::addressof(*f++)); + allocator_traits::destroy(a, container_detail::iterator_to_raw_pointer(f++)); } } @@ -972,7 +1094,7 @@ template ,typename F // F models ForwardIterator ,typename G // G models ForwardIterator > -inline typename container_detail::disable_if_memcpy_copy_assignable::type +inline typename container_detail::disable_if_memtransfer_copy_assignable::type deep_swap_alloc_n( A &a, F short_range_f, typename allocator_traits::size_type n_i , G large_range_f, typename allocator_traits::size_type n_j) { @@ -993,7 +1115,7 @@ template ,typename G // G models ForwardIterator > inline typename container_detail::enable_if_c - < container_detail::is_memcpy_copy_assignable::value && (MaxTmpBytes <= DeepSwapAllocNMaxStorage) && false + < container_detail::is_memtransfer_copy_assignable::value && (MaxTmpBytes <= DeepSwapAllocNMaxStorage) && false , void>::type deep_swap_alloc_n( A &a, F short_range_f, typename allocator_traits::size_type n_i , G large_range_f, typename allocator_traits::size_type n_j) @@ -1004,9 +1126,9 @@ inline typename container_detail::enable_if_c storage_type storage; const std::size_t n_i_bytes = sizeof(value_type)*n_i; - unsigned char *const large_ptr = static_cast(static_cast(container_detail::addressof(*large_range_f))); - unsigned char *const short_ptr = static_cast(static_cast(container_detail::addressof(*short_range_f))); - unsigned char *const stora_ptr = static_cast(static_cast(container_detail::addressof(storage))); + void *const large_ptr = static_cast(container_detail::iterator_to_raw_pointer(large_range_f)); + void *const short_ptr = static_cast(container_detail::iterator_to_raw_pointer(short_range_f)); + void *const stora_ptr = static_cast(container_detail::iterator_to_raw_pointer(storage)); ::memcpy(stora_ptr, large_ptr, n_i_bytes); ::memcpy(large_ptr, short_ptr, n_i_bytes); ::memcpy(short_ptr, stora_ptr, n_i_bytes); @@ -1023,7 +1145,7 @@ template ,typename G // G models ForwardIterator > inline typename container_detail::enable_if_c - < container_detail::is_memcpy_copy_assignable::value && true//(MaxTmpBytes > DeepSwapAllocNMaxStorage) + < container_detail::is_memtransfer_copy_assignable::value && true//(MaxTmpBytes > DeepSwapAllocNMaxStorage) , void>::type deep_swap_alloc_n( A &a, F short_range_f, typename allocator_traits::size_type n_i , G large_range_f, typename allocator_traits::size_type n_j) @@ -1035,9 +1157,9 @@ inline typename container_detail::enable_if_c const std::size_t sizeof_storage = sizeof(storage); std::size_t n_i_bytes = sizeof(value_type)*n_i; - char *large_ptr = static_cast(static_cast(container_detail::addressof(*large_range_f))); - char *short_ptr = static_cast(static_cast(container_detail::addressof(*short_range_f))); - char *stora_ptr = static_cast(static_cast(container_detail::addressof(storage))); + char *large_ptr = static_cast(static_cast(container_detail::iterator_to_raw_pointer(large_range_f))); + char *short_ptr = static_cast(static_cast(container_detail::iterator_to_raw_pointer(short_range_f))); + char *stora_ptr = static_cast(static_cast(&storage)); std::size_t szt_times = n_i_bytes/sizeof_storage; const std::size_t szt_rem = n_i_bytes%sizeof_storage; @@ -1045,7 +1167,7 @@ inline typename container_detail::enable_if_c //Loop unrolling using Duff's device, as it seems it helps on some architectures const std::size_t Unroll = 4; std::size_t n = (szt_times + (Unroll-1))/Unroll; - const std::size_t branch_number = ((!szt_times)*Unroll) + (szt_times % Unroll); + const std::size_t branch_number = (!szt_times)*Unroll + (szt_times % Unroll); switch(branch_number){ case 4: break; @@ -1055,18 +1177,21 @@ inline typename container_detail::enable_if_c ::memcpy(short_ptr, stora_ptr, sizeof_storage); large_ptr += sizeof_storage; short_ptr += sizeof_storage; + BOOST_CONTAINER_FALLTHOUGH case 3: ::memcpy(stora_ptr, large_ptr, sizeof_storage); ::memcpy(large_ptr, short_ptr, sizeof_storage); ::memcpy(short_ptr, stora_ptr, sizeof_storage); large_ptr += sizeof_storage; short_ptr += sizeof_storage; + BOOST_CONTAINER_FALLTHOUGH case 2: ::memcpy(stora_ptr, large_ptr, sizeof_storage); ::memcpy(large_ptr, short_ptr, sizeof_storage); ::memcpy(short_ptr, stora_ptr, sizeof_storage); large_ptr += sizeof_storage; short_ptr += sizeof_storage; + BOOST_CONTAINER_FALLTHOUGH case 1: ::memcpy(stora_ptr, large_ptr, sizeof_storage); ::memcpy(large_ptr, short_ptr, sizeof_storage); @@ -1095,7 +1220,7 @@ template + > void copy_assign_range_alloc_n( A &a, I inp_start, typename allocator_traits::size_type n_i , O out_start, typename allocator_traits::size_type n_o ) { @@ -1119,7 +1244,7 @@ template + > void move_assign_range_alloc_n( A &a, I inp_start, typename allocator_traits::size_type n_i , O out_start, typename allocator_traits::size_type n_o ) { diff --git a/3party/boost/boost/container/detail/value_init.hpp b/3party/boost/boost/container/detail/value_init.hpp index ec1a99c56d..68f9678358 100644 --- a/3party/boost/boost/container/detail/value_init.hpp +++ b/3party/boost/boost/container/detail/value_init.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. +// (C) Copyright Ion Gaztanaga 2005-2013. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -13,11 +13,11 @@ #ifndef BOOST_CONTAINER_DETAIL_VALUE_INIT_HPP #define BOOST_CONTAINER_DETAIL_VALUE_INIT_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include namespace boost { diff --git a/3party/boost/boost/container/detail/variadic_templates_tools.hpp b/3party/boost/boost/container/detail/variadic_templates_tools.hpp index d903dfa04c..b07fe3050e 100644 --- a/3party/boost/boost/container/detail/variadic_templates_tools.hpp +++ b/3party/boost/boost/container/detail/variadic_templates_tools.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,12 +11,13 @@ #ifndef BOOST_CONTAINER_DETAIL_VARIADIC_TEMPLATES_TOOLS_HPP #define BOOST_CONTAINER_DETAIL_VARIADIC_TEMPLATES_TOOLS_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif -#include "config_begin.hpp" +#include #include + #include #include //std::size_t diff --git a/3party/boost/boost/container/detail/version_type.hpp b/3party/boost/boost/container/detail/version_type.hpp index e47ba26f12..548fe3bff8 100644 --- a/3party/boost/boost/container/detail/version_type.hpp +++ b/3party/boost/boost/container/detail/version_type.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -16,7 +16,8 @@ #ifndef BOOST_CONTAINER_DETAIL_VERSION_TYPE_HPP #define BOOST_CONTAINER_DETAIL_VERSION_TYPE_HPP -#include "config_begin.hpp" +#include +#include #include #include @@ -80,13 +81,19 @@ struct version template struct version : public container_detail::integral_constant::value> +{}; + +template +struct is_version { + static const bool value = + is_same< typename version::type, integral_constant >::value; }; } //namespace container_detail { } //namespace container { } //namespace boost{ -#include "config_end.hpp" +#include #endif //#define BOOST_CONTAINER_DETAIL_VERSION_TYPE_HPP diff --git a/3party/boost/boost/container/detail/workaround.hpp b/3party/boost/boost/container/detail/workaround.hpp index 06cb7337c9..c290861275 100644 --- a/3party/boost/boost/container/detail/workaround.hpp +++ b/3party/boost/boost/container/detail/workaround.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -35,10 +35,29 @@ #define BOOST_CONTAINER_UNIMPLEMENTED_PACK_EXPANSION_TO_FIXED_LIST #endif +#if !defined(BOOST_FALLTHOUGH) + #define BOOST_CONTAINER_FALLTHOUGH +#else + #define BOOST_CONTAINER_FALLTHOUGH BOOST_FALLTHOUGH; +#endif + //Macros for documentation purposes. For code, expands to the argument #define BOOST_CONTAINER_IMPDEF(TYPE) TYPE #define BOOST_CONTAINER_SEEDOC(TYPE) TYPE +//Macros for memset optimization. In most platforms +//memsetting pointers and floatings is safe and faster. +// +//If your platform does not offer these guarantees +//define these to value zero. +#ifndef BOOST_CONTAINER_MEMZEROED_FLOATING_POINT_IS_NOT_ZERO +#define BOOST_CONTAINER_MEMZEROED_FLOATING_POINT_IS_ZERO 1 +#endif + +#ifndef BOOST_CONTAINER_MEMZEROED_POINTER_IS_NOT_NULL +#define BOOST_CONTAINER_MEMZEROED_POINTER_IS_NULL +#endif + #include #endif //#ifndef BOOST_CONTAINER_DETAIL_WORKAROUND_HPP diff --git a/3party/boost/boost/container/flat_map.hpp b/3party/boost/boost/container/flat_map.hpp index 8bb372fb9f..7f64e323cf 100644 --- a/3party/boost/boost/container/flat_map.hpp +++ b/3party/boost/boost/container/flat_map.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,7 @@ #ifndef BOOST_CONTAINER_FLAT_MAP_HPP #define BOOST_CONTAINER_FLAT_MAP_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -34,18 +34,7 @@ namespace boost { namespace container { -/// @cond -// Forward declarations of operators == and <, needed for friend declarations. -template -class flat_map; - -template -inline bool operator==(const flat_map& x, - const flat_map& y); - -template -inline bool operator<(const flat_map& x, - const flat_map& y); +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace container_detail{ @@ -62,8 +51,7 @@ static D force_copy(S s) } //namespace container_detail{ - -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! A flat_map is a kind of associative container that supports unique keys (contains at //! most one of each key value) and provides for fast retrieval of values of another @@ -84,8 +72,16 @@ static D force_copy(S s) //! This means that inserting a new element into a flat_map invalidates //! previous iterators and references //! -//! Erasing an element of a flat_map invalidates iterators and references +//! Erasing an element invalidates iterators and references //! pointing to elements that come after (their keys are bigger) the erased element. +//! +//! This container provides random-access iterators. +//! +//! \tparam Key is the key_type of the map +//! \tparam Value is the mapped_type +//! \tparam Compare is the ordering function for Keys (e.g. std::less). +//! \tparam Allocator is the allocator to allocate the value_types +//! (e.g. allocator< std::pair > ). #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED template , class Allocator = std::allocator< std::pair< Key, T> > > #else @@ -93,7 +89,7 @@ template #endif class flat_map { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(flat_map) //This is the tree that we should store if pair was movable @@ -127,7 +123,7 @@ class flat_map ::pointer>::reverse_iterator reverse_iterator_impl; typedef typename container_detail::get_flat_tree_iterators ::pointer>::const_reverse_iterator const_reverse_iterator_impl; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: @@ -139,6 +135,7 @@ class flat_map typedef Key key_type; typedef T mapped_type; typedef std::pair value_type; + typedef ::boost::container::allocator_traits allocator_traits_type; typedef typename boost::container::allocator_traits::pointer pointer; typedef typename boost::container::allocator_traits::const_pointer const_pointer; typedef typename boost::container::allocator_traits::reference reference; @@ -166,14 +163,32 @@ class flat_map //! //! Complexity: Constant. flat_map() - : m_flat_tree() {} + : m_flat_tree() + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Constructs an empty flat_map using the specified //! comparison object and allocator. //! //! Complexity: Constant. explicit flat_map(const Compare& comp, const allocator_type& a = allocator_type()) - : m_flat_tree(comp, container_detail::force(a)) {} + : m_flat_tree(comp, container_detail::force(a)) + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } + + //! Effects: Constructs an empty flat_map using the specified allocator. + //! + //! Complexity: Constant. + explicit flat_map(const allocator_type& a) + : m_flat_tree(container_detail::force(a)) + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Constructs an empty flat_map using the specified comparison object and //! allocator, and inserts elements from the range [first ,last ). @@ -184,7 +199,10 @@ class flat_map flat_map(InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) : m_flat_tree(true, first, last, comp, container_detail::force(a)) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Constructs an empty flat_map using the specified comparison object and //! allocator, and inserts elements from the ordered unique range [first ,last). This function @@ -200,13 +218,20 @@ class flat_map flat_map( ordered_unique_range_t, InputIterator first, InputIterator last , const Compare& comp = Compare(), const allocator_type& a = allocator_type()) : m_flat_tree(ordered_range, first, last, comp, a) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Copy constructs a flat_map. //! //! Complexity: Linear in x.size(). flat_map(const flat_map& x) - : m_flat_tree(x.m_flat_tree) {} + : m_flat_tree(x.m_flat_tree) + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Move constructs a flat_map. //! Constructs *this using x's resources. @@ -216,14 +241,20 @@ class flat_map //! Postcondition: x is emptied. flat_map(BOOST_RV_REF(flat_map) x) : m_flat_tree(boost::move(x.m_flat_tree)) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Copy constructs a flat_map using the specified allocator. //! //! Complexity: Linear in x.size(). flat_map(const flat_map& x, const allocator_type &a) : m_flat_tree(x.m_flat_tree, a) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Move constructs a flat_map using the specified allocator. //! Constructs *this using x's resources. @@ -231,7 +262,10 @@ class flat_map //! Complexity: Constant if x.get_allocator() == a, linear otherwise. flat_map(BOOST_RV_REF(flat_map) x, const allocator_type &a) : m_flat_tree(boost::move(x.m_flat_tree), a) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Makes *this a copy of x. //! @@ -242,11 +276,15 @@ class flat_map //! Effects: Move constructs a flat_map. //! Constructs *this using x's resources. //! - //! Complexity: Construct. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or value_type's move constructor throws) //! - //! Postcondition: x is emptied. - flat_map& operator=(BOOST_RV_REF(flat_map) mx) - { m_flat_tree = boost::move(mx.m_flat_tree); return *this; } + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. + flat_map& operator=(BOOST_RV_REF(flat_map) x) + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) + { m_flat_tree = boost::move(x.m_flat_tree); return *this; } //! Effects: Returns a copy of the Allocator that //! was passed to the object's constructor. @@ -419,7 +457,7 @@ class flat_map //! Throws: Nothing. //! //! Complexity: Constant. - size_type capacity() const BOOST_CONTAINER_NOEXCEPT + size_type capacity() const BOOST_CONTAINER_NOEXCEPT { return m_flat_tree.capacity(); } //! Effects: If n is less than or equal to capacity(), this call has no @@ -431,7 +469,7 @@ class flat_map //! //! Note: If capacity() is less than "cnt", iterators and references to //! to values might be invalidated. - void reserve(size_type cnt) + void reserve(size_type cnt) { m_flat_tree.reserve(cnt); } //! Effects: Tries to deallocate the excess of memory created @@ -684,6 +722,8 @@ class flat_map //! search time plus N*size() insertion time. //! //! Note: If an element is inserted it might invalidate elements. + //! + //! Note: Non-standard extension. template void insert(ordered_unique_range_t, InputIterator first, InputIterator last) { m_flat_tree.insert_unique(ordered_unique_range, first, last); } @@ -788,7 +828,7 @@ class flat_map //! //! Complexity: log(size())+count(k) size_type count(const key_type& x) const - { return m_flat_tree.find(x) == m_flat_tree.end() ? 0 : 1; } + { return static_cast(m_flat_tree.find(x) != m_flat_tree.end()); } //! Returns: An iterator pointing to the first element with key not less //! than k, or a.end() if such an element is not found. @@ -822,22 +862,57 @@ class flat_map //! //! Complexity: Logarithmic std::pair equal_range(const key_type& x) - { return container_detail::force_copy >(m_flat_tree.equal_range(x)); } + { return container_detail::force_copy >(m_flat_tree.lower_bound_range(x)); } //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic std::pair equal_range(const key_type& x) const - { return container_detail::force_copy >(m_flat_tree.equal_range(x)); } + { return container_detail::force_copy >(m_flat_tree.lower_bound_range(x)); } - /// @cond - template - friend bool operator== (const flat_map&, - const flat_map&); - template - friend bool operator< (const flat_map&, - const flat_map&); + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const flat_map& x, const flat_map& y) + { return x.size() == y.size() && std::equal(x.begin(), x.end(), y.begin()); } + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const flat_map& x, const flat_map& y) + { return !(x == y); } + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const flat_map& x, const flat_map& y) + { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const flat_map& x, const flat_map& y) + { return y < x; } + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const flat_map& x, const flat_map& y) + { return !(y < x); } + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const flat_map& x, const flat_map& y) + { return !(x < y); } + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(flat_map& x, flat_map& y) + { x.swap(y); } + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: mapped_type &priv_subscript(const key_type& k) { @@ -860,45 +935,10 @@ class flat_map } return (*i).second; } - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool operator==(const flat_map& x, - const flat_map& y) - { return x.m_flat_tree == y.m_flat_tree; } - -template -inline bool operator<(const flat_map& x, - const flat_map& y) - { return x.m_flat_tree < y.m_flat_tree; } - -template -inline bool operator!=(const flat_map& x, - const flat_map& y) - { return !(x == y); } - -template -inline bool operator>(const flat_map& x, - const flat_map& y) - { return y < x; } - -template -inline bool operator<=(const flat_map& x, - const flat_map& y) - { return !(y < x); } - -template -inline bool operator>=(const flat_map& x, - const flat_map& y) - { return !(x < y); } - -template -inline void swap(flat_map& x, - flat_map& y) - { x.swap(y); } - -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED } //namespace container { @@ -912,18 +952,7 @@ struct has_trivial_destructor_after_move -class flat_multimap; - -template -inline bool operator==(const flat_multimap& x, - const flat_multimap& y); - -template -inline bool operator<(const flat_multimap& x, - const flat_multimap& y); -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! A flat_multimap is a kind of associative container that supports equivalent keys //! (possibly containing multiple copies of the same key value) and provides for @@ -939,6 +968,21 @@ inline bool operator<(const flat_multimap& x, //! //! Allocator is the allocator to allocate the value_types //! (e.g. allocator< std::pair >). +//! +//! flat_multimap is similar to std::multimap but it's implemented like an ordered vector. +//! This means that inserting a new element into a flat_map invalidates +//! previous iterators and references +//! +//! Erasing an element invalidates iterators and references +//! pointing to elements that come after (their keys are bigger) the erased element. +//! +//! This container provides random-access iterators. +//! +//! \tparam Key is the key_type of the map +//! \tparam Value is the mapped_type +//! \tparam Compare is the ordering function for Keys (e.g. std::less). +//! \tparam Allocator is the allocator to allocate the value_types +//! (e.g. allocator< std::pair > ). #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED template , class Allocator = std::allocator< std::pair< Key, T> > > #else @@ -946,7 +990,7 @@ template #endif class flat_multimap { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(flat_multimap) typedef container_detail::flat_tree::pointer>::reverse_iterator reverse_iterator_impl; typedef typename container_detail::get_flat_tree_iterators ::pointer>::const_reverse_iterator const_reverse_iterator_impl; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: @@ -990,6 +1034,7 @@ class flat_multimap typedef Key key_type; typedef T mapped_type; typedef std::pair value_type; + typedef ::boost::container::allocator_traits allocator_traits_type; typedef typename boost::container::allocator_traits::pointer pointer; typedef typename boost::container::allocator_traits::const_pointer const_pointer; typedef typename boost::container::allocator_traits::reference reference; @@ -1016,7 +1061,11 @@ class flat_multimap //! //! Complexity: Constant. flat_multimap() - : m_flat_tree() {} + : m_flat_tree() + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Constructs an empty flat_multimap using the specified comparison //! object and allocator. @@ -1024,7 +1073,21 @@ class flat_multimap //! Complexity: Constant. explicit flat_multimap(const Compare& comp, const allocator_type& a = allocator_type()) - : m_flat_tree(comp, container_detail::force(a)) { } + : m_flat_tree(comp, container_detail::force(a)) + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } + + //! Effects: Constructs an empty flat_multimap using the specified allocator. + //! + //! Complexity: Constant. + explicit flat_multimap(const allocator_type& a) + : m_flat_tree(container_detail::force(a)) + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Constructs an empty flat_multimap using the specified comparison object //! and allocator, and inserts elements from the range [first ,last ). @@ -1036,7 +1099,10 @@ class flat_multimap const Compare& comp = Compare(), const allocator_type& a = allocator_type()) : m_flat_tree(false, first, last, comp, container_detail::force(a)) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Constructs an empty flat_multimap using the specified comparison object and //! allocator, and inserts elements from the ordered range [first ,last). This function @@ -1052,13 +1118,20 @@ class flat_multimap const Compare& comp = Compare(), const allocator_type& a = allocator_type()) : m_flat_tree(ordered_range, first, last, comp, a) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Copy constructs a flat_multimap. //! //! Complexity: Linear in x.size(). flat_multimap(const flat_multimap& x) - : m_flat_tree(x.m_flat_tree) { } + : m_flat_tree(x.m_flat_tree) + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Move constructs a flat_multimap. Constructs *this using x's resources. //! @@ -1067,14 +1140,20 @@ class flat_multimap //! Postcondition: x is emptied. flat_multimap(BOOST_RV_REF(flat_multimap) x) : m_flat_tree(boost::move(x.m_flat_tree)) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Copy constructs a flat_multimap using the specified allocator. //! //! Complexity: Linear in x.size(). flat_multimap(const flat_multimap& x, const allocator_type &a) : m_flat_tree(x.m_flat_tree, a) - {} + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Move constructs a flat_multimap using the specified allocator. //! Constructs *this using x's resources. @@ -1082,7 +1161,10 @@ class flat_multimap //! Complexity: Constant if a == x.get_allocator(), linear otherwise. flat_multimap(BOOST_RV_REF(flat_multimap) x, const allocator_type &a) : m_flat_tree(boost::move(x.m_flat_tree), a) - { } + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } //! Effects: Makes *this a copy of x. //! @@ -1093,8 +1175,9 @@ class flat_multimap //! Effects: this->swap(x.get()). //! //! Complexity: Constant. - flat_multimap& operator=(BOOST_RV_REF(flat_multimap) mx) - { m_flat_tree = boost::move(mx.m_flat_tree); return *this; } + flat_multimap& operator=(BOOST_RV_REF(flat_multimap) x) + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) + { m_flat_tree = boost::move(x.m_flat_tree); return *this; } //! Effects: Returns a copy of the Allocator that //! was passed to the object's constructor. @@ -1279,7 +1362,7 @@ class flat_multimap //! //! Note: If capacity() is less than "cnt", iterators and references to //! to values might be invalidated. - void reserve(size_type cnt) + void reserve(size_type cnt) { m_flat_tree.reserve(cnt); } //! Effects: Tries to deallocate the excess of memory created @@ -1460,6 +1543,8 @@ class flat_multimap //! search time plus N*size() insertion time. //! //! Note: If an element is inserted it might invalidate elements. + //! + //! Note: Non-standard extension. template void insert(ordered_range_t, InputIterator first, InputIterator last) { m_flat_tree.insert_equal(ordered_range, first, last); } @@ -1606,54 +1691,52 @@ class flat_multimap std::pair equal_range(const key_type& x) const { return container_detail::force_copy >(m_flat_tree.equal_range(x)); } - /// @cond - template - friend bool operator== (const flat_multimap& x, - const flat_multimap& y); + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const flat_multimap& x, const flat_multimap& y) + { return x.size() == y.size() && std::equal(x.begin(), x.end(), y.begin()); } - template - friend bool operator< (const flat_multimap& x, - const flat_multimap& y); - /// @endcond -}; + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const flat_multimap& x, const flat_multimap& y) + { return !(x == y); } -template -inline bool operator==(const flat_multimap& x, - const flat_multimap& y) - { return x.m_flat_tree == y.m_flat_tree; } + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const flat_multimap& x, const flat_multimap& y) + { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } -template -inline bool operator<(const flat_multimap& x, - const flat_multimap& y) - { return x.m_flat_tree < y.m_flat_tree; } - -template -inline bool operator!=(const flat_multimap& x, - const flat_multimap& y) - { return !(x == y); } - -template -inline bool operator>(const flat_multimap& x, - const flat_multimap& y) + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const flat_multimap& x, const flat_multimap& y) { return y < x; } -template -inline bool operator<=(const flat_multimap& x, - const flat_multimap& y) + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const flat_multimap& x, const flat_multimap& y) { return !(y < x); } -template -inline bool operator>=(const flat_multimap& x, - const flat_multimap& y) + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const flat_multimap& x, const flat_multimap& y) { return !(x < y); } -template -inline void swap(flat_multimap& x, flat_multimap& y) + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(flat_multimap& x, flat_multimap& y) { x.swap(y); } +}; }} -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace boost { @@ -1667,7 +1750,7 @@ struct has_trivial_destructor_after_move< boost::container::flat_multimap diff --git a/3party/boost/boost/container/flat_set.hpp b/3party/boost/boost/container/flat_set.hpp index 82bdea8c07..96f2a91f89 100644 --- a/3party/boost/boost/container/flat_set.hpp +++ b/3party/boost/boost/container/flat_set.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,7 @@ #ifndef BOOST_CONTAINER_FLAT_SET_HPP #define BOOST_CONTAINER_FLAT_SET_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -31,29 +31,8 @@ namespace boost { namespace container { -/// @cond -// Forward declarations of operators < and ==, needed for friend declaration. - -#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED -template , class Allocator = std::allocator > -#else -template -#endif -class flat_set; - -template -inline bool operator==(const flat_set& x, - const flat_set& y); - -template -inline bool operator<(const flat_set& x, - const flat_set& y); -/// @endcond - //! flat_set is a Sorted Associative Container that stores objects of type Key. -//! flat_set is a Simple Associative Container, meaning that its value type, -//! as well as its key type, is Key. It is also a Unique Associative Container, -//! meaning that no two elements are the same. +//! It is also a Unique Associative Container, meaning that no two elements are the same. //! //! flat_set is similar to std::set but it's implemented like an ordered vector. //! This means that inserting a new element into a flat_set invalidates @@ -61,19 +40,27 @@ inline bool operator<(const flat_set& x, //! //! Erasing an element of a flat_set invalidates iterators and references //! pointing to elements that come after (their keys are bigger) the erased element. +//! +//! This container provides random-access iterators. +//! +//! \tparam Key is the type to be inserted in the set, which is also the key_type +//! \tparam Compare is the comparison functor used to order keys +//! \tparam Allocator is the allocator to be used to allocate memory for this container #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED template , class Allocator = std::allocator > #else template #endif class flat_set + ///@cond + : public container_detail::flat_tree, Compare, Allocator> + ///@endcond { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(flat_set) - typedef container_detail::flat_tree, Compare, Allocator> tree_t; - tree_t m_flat_tree; // flat tree representing flat_set - /// @endcond + typedef container_detail::flat_tree, Compare, Allocator> base_t; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -85,6 +72,7 @@ class flat_set typedef Key value_type; typedef Compare key_compare; typedef Compare value_compare; + typedef ::boost::container::allocator_traits allocator_traits_type; typedef typename ::boost::container::allocator_traits::pointer pointer; typedef typename ::boost::container::allocator_traits::const_pointer const_pointer; typedef typename ::boost::container::allocator_traits::reference reference; @@ -92,11 +80,11 @@ class flat_set typedef typename ::boost::container::allocator_traits::size_type size_type; typedef typename ::boost::container::allocator_traits::difference_type difference_type; typedef Allocator allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::iterator) iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_iterator) const_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::reverse_iterator) reverse_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_reverse_iterator) const_reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::reverse_iterator) reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_reverse_iterator) const_reverse_iterator; public: ////////////////////////////////////////////// @@ -105,23 +93,30 @@ class flat_set // ////////////////////////////////////////////// - //! Effects: Default constructs an empty flat_set. + //! Effects: Default constructs an empty container. //! //! Complexity: Constant. explicit flat_set() - : m_flat_tree() + : base_t() {} - //! Effects: Constructs an empty flat_set using the specified + //! Effects: Constructs an empty container using the specified //! comparison object and allocator. //! //! Complexity: Constant. explicit flat_set(const Compare& comp, const allocator_type& a = allocator_type()) - : m_flat_tree(comp, a) + : base_t(comp, a) {} - //! Effects: Constructs an empty set using the specified comparison object and + //! Effects: Constructs an empty container using the specified allocator. + //! + //! Complexity: Constant. + explicit flat_set(const allocator_type& a) + : base_t(a) + {} + + //! Effects: Constructs an empty container using the specified comparison object and //! allocator, and inserts elements from the range [first ,last ). //! //! Complexity: Linear in N if the range [first ,last ) is already sorted using @@ -130,10 +125,10 @@ class flat_set flat_set(InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_flat_tree(true, first, last, comp, a) + : base_t(true, first, last, comp, a) {} - //! Effects: Constructs an empty flat_set using the specified comparison object and + //! Effects: Constructs an empty container using the specified comparison object and //! allocator, and inserts elements from the ordered unique range [first ,last). This function //! is more efficient than the normal range creation for ordered ranges. //! @@ -147,58 +142,62 @@ class flat_set flat_set(ordered_unique_range_t, InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_flat_tree(ordered_range, first, last, comp, a) + : base_t(ordered_range, first, last, comp, a) {} - //! Effects: Copy constructs a set. + //! Effects: Copy constructs the container. //! //! Complexity: Linear in x.size(). flat_set(const flat_set& x) - : m_flat_tree(x.m_flat_tree) + : base_t(static_cast(x)) {} - //! Effects: Move constructs a set. Constructs *this using x's resources. + //! Effects: Move constructs thecontainer. Constructs *this using mx's resources. //! //! Complexity: Constant. //! - //! Postcondition: x is emptied. + //! Postcondition: mx is emptied. flat_set(BOOST_RV_REF(flat_set) mx) - : m_flat_tree(boost::move(mx.m_flat_tree)) + : base_t(boost::move(static_cast(mx))) {} - //! Effects: Copy constructs a set using the specified allocator. + //! Effects: Copy constructs a container using the specified allocator. //! //! Complexity: Linear in x.size(). flat_set(const flat_set& x, const allocator_type &a) - : m_flat_tree(x.m_flat_tree, a) + : base_t(static_cast(x), a) {} - //! Effects: Move constructs a set using the specified allocator. - //! Constructs *this using x's resources. + //! Effects: Move constructs a container using the specified allocator. + //! Constructs *this using mx's resources. //! //! Complexity: Constant if a == mx.get_allocator(), linear otherwise flat_set(BOOST_RV_REF(flat_set) mx, const allocator_type &a) - : m_flat_tree(boost::move(mx.m_flat_tree), a) + : base_t(boost::move(static_cast(mx)), a) {} //! Effects: Makes *this a copy of x. //! //! Complexity: Linear in x.size(). flat_set& operator=(BOOST_COPY_ASSIGN_REF(flat_set) x) - { m_flat_tree = x.m_flat_tree; return *this; } + { return static_cast(this->base_t::operator=(static_cast(x))); } - //! Effects: Makes *this a copy of the previous value of xx. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or value_type's move constructor throws) //! - //! Complexity: Linear in x.size(). - flat_set& operator=(BOOST_RV_REF(flat_set) mx) - { m_flat_tree = boost::move(mx.m_flat_tree); return *this; } + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. + flat_set& operator=(BOOST_RV_REF(flat_set) x) + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) + { return static_cast(this->base_t::operator=(boost::move(static_cast(x)))); } + #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED //! Effects: Returns a copy of the Allocator that //! was passed to the object's constructor. //! //! Complexity: Constant. - allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.get_allocator(); } + allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a reference to the internal allocator. //! @@ -207,8 +206,7 @@ class flat_set //! Complexity: Constant. //! //! Note: Non-standard extension. - stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.get_stored_allocator(); } + stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a reference to the internal allocator. //! @@ -217,46 +215,35 @@ class flat_set //! Complexity: Constant. //! //! Note: Non-standard extension. - const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.get_stored_allocator(); } - - ////////////////////////////////////////////// - // - // iterators - // - ////////////////////////////////////////////// + const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns an iterator to the first element contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - iterator begin() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.begin(); } + iterator begin() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_iterator to the first element contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - const_iterator begin() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.begin(); } + const_iterator begin() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns an iterator to the end of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - iterator end() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.end(); } + iterator end() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_iterator to the end of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - const_iterator end() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.end(); } + const_iterator end() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a reverse_iterator pointing to the beginning //! of the reversed container. @@ -264,8 +251,7 @@ class flat_set //! Throws: Nothing. //! //! Complexity: Constant. - reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.rbegin(); } + reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_reverse_iterator pointing to the beginning //! of the reversed container. @@ -273,8 +259,7 @@ class flat_set //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.rbegin(); } + const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a reverse_iterator pointing to the end //! of the reversed container. @@ -282,8 +267,7 @@ class flat_set //! Throws: Nothing. //! //! Complexity: Constant. - reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.rend(); } + reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_reverse_iterator pointing to the end //! of the reversed container. @@ -291,24 +275,21 @@ class flat_set //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.rend(); } + const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_iterator to the first element contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.cbegin(); } + const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_iterator to the end of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - const_iterator cend() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.cend(); } + const_iterator cend() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_reverse_iterator pointing to the beginning //! of the reversed container. @@ -316,8 +297,7 @@ class flat_set //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.crbegin(); } + const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_reverse_iterator pointing to the end //! of the reversed container. @@ -325,39 +305,28 @@ class flat_set //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.crend(); } - - - ////////////////////////////////////////////// - // - // capacity - // - ////////////////////////////////////////////// + const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns true if the container contains no elements. //! //! Throws: Nothing. //! //! Complexity: Constant. - bool empty() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.empty(); } + bool empty() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns the number of the elements contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - size_type size() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.size(); } + size_type size() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns the largest possible size of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - size_type max_size() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.max_size(); } + size_type max_size() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Number of elements for which memory has been allocated. //! capacity() is always greater than or equal to size(). @@ -365,8 +334,7 @@ class flat_set //! Throws: Nothing. //! //! Complexity: Constant. - size_type capacity() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.capacity(); } + size_type capacity() const BOOST_CONTAINER_NOEXCEPT; //! Effects: If n is less than or equal to capacity(), this call has no //! effect. Otherwise, it is a request for allocation of additional memory. @@ -377,8 +345,7 @@ class flat_set //! //! Note: If capacity() is less than "cnt", iterators and references to //! to values might be invalidated. - void reserve(size_type cnt) - { m_flat_tree.reserve(cnt); } + void reserve(size_type cnt); //! Effects: Tries to deallocate the excess of memory created // with previous allocations. The size of the vector is unchanged @@ -386,8 +353,9 @@ class flat_set //! Throws: If memory allocation throws, or Key's copy constructor throws. //! //! Complexity: Linear to size(). - void shrink_to_fit() - { m_flat_tree.shrink_to_fit(); } + void shrink_to_fit(); + + #endif // #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) ////////////////////////////////////////////// // @@ -411,7 +379,7 @@ class flat_set //! Note: If an element is inserted it might invalidate elements. template std::pair emplace(Args&&... args) - { return m_flat_tree.emplace_unique(boost::forward(args)...); } + { return this->base_t::emplace_unique(boost::forward(args)...); } //! Effects: Inserts an object of type Key constructed with //! std::forward(args)... in the container if and only if there is @@ -427,19 +395,19 @@ class flat_set //! Note: If an element is inserted it might invalidate elements. template iterator emplace_hint(const_iterator hint, Args&&... args) - { return m_flat_tree.emplace_hint_unique(hint, boost::forward(args)...); } + { return this->base_t::emplace_hint_unique(hint, boost::forward(args)...); } #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING #define BOOST_PP_LOCAL_MACRO(n) \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ std::pair emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_flat_tree.emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ + { return this->base_t::emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }\ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace_hint(const_iterator hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_flat_tree.emplace_hint_unique \ + { return this->base_t::emplace_hint_unique \ (hint BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) @@ -505,7 +473,7 @@ class flat_set //! Note: If an element is inserted it might invalidate elements. iterator insert(const_iterator position, value_type &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator, const_iterator) #endif //! Requires: first, last are not iterators into *this. @@ -519,7 +487,7 @@ class flat_set //! Note: If an element is inserted it might invalidate elements. template void insert(InputIterator first, InputIterator last) - { m_flat_tree.insert_unique(first, last); } + { this->base_t::insert_unique(first, last); } //! Requires: first, last are not iterators into *this and //! must be ordered according to the predicate and must be @@ -534,7 +502,9 @@ class flat_set //! Note: Non-standard extension. If an element is inserted it might invalidate elements. template void insert(ordered_unique_range_t, InputIterator first, InputIterator last) - { m_flat_tree.insert_unique(ordered_unique_range, first, last); } + { this->base_t::insert_unique(ordered_unique_range, first, last); } + + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: Erases the element pointed to by position. //! @@ -546,8 +516,7 @@ class flat_set //! //! Note: Invalidates elements with keys //! not less than the erased element. - iterator erase(const_iterator position) - { return m_flat_tree.erase(position); } + iterator erase(const_iterator position); //! Effects: Erases all elements in the container with key equivalent to x. //! @@ -555,8 +524,7 @@ class flat_set //! //! Complexity: Logarithmic search time plus erasure time //! linear to the elements with bigger keys. - size_type erase(const key_type& x) - { return m_flat_tree.erase(x); } + size_type erase(const key_type& x); //! Effects: Erases all the elements in the range [first, last). //! @@ -566,164 +534,145 @@ class flat_set //! //! Complexity: Logarithmic search time plus erasure time //! linear to the elements with bigger keys. - iterator erase(const_iterator first, const_iterator last) - { return m_flat_tree.erase(first, last); } + iterator erase(const_iterator first, const_iterator last); //! Effects: Swaps the contents of *this and x. //! //! Throws: Nothing. //! //! Complexity: Constant. - void swap(flat_set& x) - { m_flat_tree.swap(x.m_flat_tree); } + void swap(flat_set& x); //! Effects: erase(a.begin(),a.end()). //! //! Postcondition: size() == 0. //! //! Complexity: linear in size(). - void clear() BOOST_CONTAINER_NOEXCEPT - { m_flat_tree.clear(); } - - ////////////////////////////////////////////// - // - // observers - // - ////////////////////////////////////////////// + void clear() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns the comparison object out //! of which a was constructed. //! //! Complexity: Constant. - key_compare key_comp() const - { return m_flat_tree.key_comp(); } + key_compare key_comp() const; //! Effects: Returns an object of value_compare constructed out //! of the comparison object. //! //! Complexity: Constant. - value_compare value_comp() const - { return m_flat_tree.key_comp(); } - - ////////////////////////////////////////////// - // - // set operations - // - ////////////////////////////////////////////// + value_compare value_comp() const; //! Returns: An iterator pointing to an element with the key //! equivalent to x, or end() if such an element is not found. //! //! Complexity: Logarithmic. - iterator find(const key_type& x) - { return m_flat_tree.find(x); } + iterator find(const key_type& x); //! Returns: Allocator const_iterator pointing to an element with the key //! equivalent to x, or end() if such an element is not found. //! - //! Complexity: Logarithmic.s - const_iterator find(const key_type& x) const - { return m_flat_tree.find(x); } + //! Complexity: Logarithmic. + const_iterator find(const key_type& x) const; + + #endif // #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Returns: The number of elements with key equivalent to x. //! //! Complexity: log(size())+count(k) size_type count(const key_type& x) const - { return m_flat_tree.find(x) == m_flat_tree.end() ? 0 : 1; } + { return static_cast(this->base_t::find(x) != this->base_t::cend()); } + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Returns: An iterator pointing to the first element with key not less //! than k, or a.end() if such an element is not found. //! //! Complexity: Logarithmic - iterator lower_bound(const key_type& x) - { return m_flat_tree.lower_bound(x); } + iterator lower_bound(const key_type& x); //! Returns: Allocator const iterator pointing to the first element with key not //! less than k, or a.end() if such an element is not found. //! //! Complexity: Logarithmic - const_iterator lower_bound(const key_type& x) const - { return m_flat_tree.lower_bound(x); } + const_iterator lower_bound(const key_type& x) const; //! Returns: An iterator pointing to the first element with key not less //! than x, or end() if such an element is not found. //! //! Complexity: Logarithmic - iterator upper_bound(const key_type& x) - { return m_flat_tree.upper_bound(x); } + iterator upper_bound(const key_type& x); //! Returns: Allocator const iterator pointing to the first element with key not //! less than x, or end() if such an element is not found. //! //! Complexity: Logarithmic - const_iterator upper_bound(const key_type& x) const - { return m_flat_tree.upper_bound(x); } + const_iterator upper_bound(const key_type& x) const; + + #endif // #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic std::pair equal_range(const key_type& x) const - { return m_flat_tree.equal_range(x); } + { return this->base_t::lower_bound_range(x); } //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic std::pair equal_range(const key_type& x) - { return m_flat_tree.equal_range(x); } + { return this->base_t::lower_bound_range(x); } - /// @cond - template - friend bool operator== (const flat_set&, const flat_set&); + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - template - friend bool operator< (const flat_set&, const flat_set&); + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const flat_set& x, const flat_set& y); + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const flat_set& x, const flat_set& y); + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const flat_set& x, const flat_set& y); + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const flat_set& x, const flat_set& y); + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const flat_set& x, const flat_set& y); + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const flat_set& x, const flat_set& y); + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(flat_set& x, flat_set& y); + + #endif //#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: template std::pair priv_insert(BOOST_FWD_REF(KeyType) x) - { return m_flat_tree.insert_unique(::boost::forward(x)); } + { return this->base_t::insert_unique(::boost::forward(x)); } template iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x) - { return m_flat_tree.insert_unique(p, ::boost::forward(x)); } - /// @endcond + { return this->base_t::insert_unique(p, ::boost::forward(x)); } + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool operator==(const flat_set& x, - const flat_set& y) - { return x.m_flat_tree == y.m_flat_tree; } - -template -inline bool operator<(const flat_set& x, - const flat_set& y) - { return x.m_flat_tree < y.m_flat_tree; } - -template -inline bool operator!=(const flat_set& x, - const flat_set& y) - { return !(x == y); } - -template -inline bool operator>(const flat_set& x, - const flat_set& y) - { return y < x; } - -template -inline bool operator<=(const flat_set& x, - const flat_set& y) - { return !(y < x); } - -template -inline bool operator>=(const flat_set& x, - const flat_set& y) - { return !(x < y); } - -template -inline void swap(flat_set& x, flat_set& y) - { x.swap(y); } - -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED } //namespace container { @@ -737,48 +686,39 @@ struct has_trivial_destructor_after_move, class Allocator = std::allocator > -#else -template -#endif -class flat_multiset; - -template -inline bool operator==(const flat_multiset& x, - const flat_multiset& y); - -template -inline bool operator<(const flat_multiset& x, - const flat_multiset& y); -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! flat_multiset is a Sorted Associative Container that stores objects of type Key. -//! flat_multiset is a Simple Associative Container, meaning that its value type, -//! as well as its key type, is Key. -//! flat_Multiset can store multiple copies of the same key value. +//! +//! flat_multiset can store multiple copies of the same key value. //! //! flat_multiset is similar to std::multiset but it's implemented like an ordered vector. //! This means that inserting a new element into a flat_multiset invalidates //! previous iterators and references //! -//! Erasing an element of a flat_multiset invalidates iterators and references -//! pointing to elements that come after (their keys are equal or bigger) the erased element. +//! Erasing an element invalidates iterators and references +//! pointing to elements that come after (their keys are bigger) the erased element. +//! +//! This container provides random-access iterators. +//! +//! \tparam Key is the type to be inserted in the multiset, which is also the key_type +//! \tparam Compare is the comparison functor used to order keys +//! \tparam Allocator is the allocator to be used to allocate memory for this container #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED template , class Allocator = std::allocator > #else template #endif class flat_multiset + ///@cond + : public container_detail::flat_tree, Compare, Allocator> + ///@endcond { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(flat_multiset) - typedef container_detail::flat_tree, Compare, Allocator> tree_t; - tree_t m_flat_tree; // flat tree representing flat_multiset - /// @endcond + typedef container_detail::flat_tree, Compare, Allocator> base_t; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -790,6 +730,7 @@ class flat_multiset typedef Key value_type; typedef Compare key_compare; typedef Compare value_compare; + typedef ::boost::container::allocator_traits allocator_traits_type; typedef typename ::boost::container::allocator_traits::pointer pointer; typedef typename ::boost::container::allocator_traits::const_pointer const_pointer; typedef typename ::boost::container::allocator_traits::reference reference; @@ -797,28 +738,34 @@ class flat_multiset typedef typename ::boost::container::allocator_traits::size_type size_type; typedef typename ::boost::container::allocator_traits::difference_type difference_type; typedef Allocator allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::iterator) iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_iterator) const_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::reverse_iterator) reverse_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_reverse_iterator) const_reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::reverse_iterator) reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_reverse_iterator) const_reverse_iterator; - //! Effects: Default constructs an empty flat_multiset. - //! - //! Complexity: Constant. + //! @copydoc ::boost::container::flat_set::flat_set() explicit flat_multiset() - : m_flat_tree() + : base_t() {} + //! @copydoc ::boost::container::flat_set::flat_set(const Compare&, const allocator_type&) explicit flat_multiset(const Compare& comp, const allocator_type& a = allocator_type()) - : m_flat_tree(comp, a) {} + : base_t(comp, a) + {} + //! @copydoc ::boost::container::flat_set::flat_set(const allocator_type&) + explicit flat_multiset(const allocator_type& a) + : base_t(a) + {} + + //! @copydoc ::boost::container::flat_set::flat_set(InputIterator, InputIterator, const Compare& comp, const allocator_type&) template flat_multiset(InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_flat_tree(false, first, last, comp, a) + : base_t(false, first, last, comp, a) {} //! Effects: Constructs an empty flat_multiset using the specified comparison object and @@ -834,240 +781,104 @@ class flat_multiset flat_multiset(ordered_range_t, InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_flat_tree(ordered_range, first, last, comp, a) + : base_t(ordered_range, first, last, comp, a) {} - //! Effects: Copy constructs a flat_multiset. - //! - //! Complexity: Linear in x.size(). + //! @copydoc ::boost::container::flat_set::flat_set(const flat_set &) flat_multiset(const flat_multiset& x) - : m_flat_tree(x.m_flat_tree) + : base_t(static_cast(x)) {} - //! Effects: Move constructs a flat_multiset. Constructs *this using x's resources. - //! - //! Complexity: Constant. - //! - //! Postcondition: x is emptied. + //! @copydoc ::boost::container::flat_set(flat_set &&) flat_multiset(BOOST_RV_REF(flat_multiset) mx) - : m_flat_tree(boost::move(mx.m_flat_tree)) + : base_t(boost::move(static_cast(mx))) {} - //! Effects: Copy constructs a flat_multiset using the specified allocator. - //! - //! Complexity: Linear in x.size(). + //! @copydoc ::boost::container::flat_set(const flat_set &, const allocator_type &) flat_multiset(const flat_multiset& x, const allocator_type &a) - : m_flat_tree(x.m_flat_tree, a) + : base_t(static_cast(x), a) {} - //! Effects: Move constructs a flat_multiset using the specified allocator. - //! Constructs *this using x's resources. - //! - //! Complexity: Constant if a == mx.get_allocator(), linear otherwise + //! @copydoc ::boost::container::flat_set(flat_set &&, const allocator_type &) flat_multiset(BOOST_RV_REF(flat_multiset) mx, const allocator_type &a) - : m_flat_tree(boost::move(mx.m_flat_tree), a) + : base_t(boost::move(static_cast(mx)), a) {} - //! Effects: Makes *this a copy of x. - //! - //! Complexity: Linear in x.size(). + //! @copydoc ::boost::container::flat_set::operator=(const flat_set &) flat_multiset& operator=(BOOST_COPY_ASSIGN_REF(flat_multiset) x) - { m_flat_tree = x.m_flat_tree; return *this; } + { return static_cast(this->base_t::operator=(static_cast(x))); } - //! Effects: Makes *this a copy of x. - //! - //! Complexity: Linear in x.size(). + //! @copydoc ::boost::container::flat_set::operator=(flat_set &&) flat_multiset& operator=(BOOST_RV_REF(flat_multiset) mx) - { m_flat_tree = boost::move(mx.m_flat_tree); return *this; } + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) + { return static_cast(this->base_t::operator=(boost::move(static_cast(mx)))); } - //! Effects: Returns a copy of the Allocator that - //! was passed to the object's constructor. - //! - //! Complexity: Constant. - allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.get_allocator(); } + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: Returns a reference to the internal allocator. - //! - //! Throws: Nothing - //! - //! Complexity: Constant. - //! - //! Note: Non-standard extension. - stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.get_stored_allocator(); } + //! @copydoc ::boost::container::flat_set::get_allocator() + allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a reference to the internal allocator. - //! - //! Throws: Nothing - //! - //! Complexity: Constant. - //! - //! Note: Non-standard extension. - const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.get_stored_allocator(); } + //! @copydoc ::boost::container::flat_set::get_stored_allocator() + stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns an iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - iterator begin() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.begin(); } + //! @copydoc ::boost::container::flat_set::get_stored_allocator() const + const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator begin() const - { return m_flat_tree.begin(); } + //! @copydoc ::boost::container::flat_set::begin() + iterator begin() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.cbegin(); } + //! @copydoc ::boost::container::flat_set::begin() const + const_iterator begin() const; - //! Effects: Returns an iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - iterator end() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.end(); } + //! @copydoc ::boost::container::flat_set::cbegin() const + const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator end() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.end(); } + //! @copydoc ::boost::container::flat_set::end() + iterator end() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cend() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.cend(); } + //! @copydoc ::boost::container::flat_set::end() const + const_iterator end() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.rbegin(); } + //! @copydoc ::boost::container::flat_set::cend() const + const_iterator cend() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.rbegin(); } + //! @copydoc ::boost::container::flat_set::rbegin() + reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.crbegin(); } + //! @copydoc ::boost::container::flat_set::rbegin() const + const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.rend(); } + //! @copydoc ::boost::container::flat_set::crbegin() const + const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.rend(); } + //! @copydoc ::boost::container::flat_set::rend() + reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.crend(); } + //! @copydoc ::boost::container::flat_set::rend() const + const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT; - ////////////////////////////////////////////// - // - // capacity - // - ////////////////////////////////////////////// + //! @copydoc ::boost::container::flat_set::crend() const + const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns true if the container contains no elements. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - bool empty() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.empty(); } + //! @copydoc ::boost::container::flat_set::empty() const + bool empty() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns the number of the elements contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - size_type size() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.size(); } + //! @copydoc ::boost::container::flat_set::size() const + size_type size() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns the largest possible size of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - size_type max_size() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.max_size(); } + //! @copydoc ::boost::container::flat_set::max_size() const + size_type max_size() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Number of elements for which memory has been allocated. - //! capacity() is always greater than or equal to size(). - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - size_type capacity() const BOOST_CONTAINER_NOEXCEPT - { return m_flat_tree.capacity(); } + //! @copydoc ::boost::container::flat_set::capacity() const + size_type capacity() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: If n is less than or equal to capacity(), this call has no - //! effect. Otherwise, it is a request for allocation of additional memory. - //! If the request is successful, then capacity() is greater than or equal to - //! n; otherwise, capacity() is unchanged. In either case, size() is unchanged. - //! - //! Throws: If memory allocation allocation throws or Key's copy constructor throws. - //! - //! Note: If capacity() is less than "cnt", iterators and references to - //! to values might be invalidated. - void reserve(size_type cnt) - { m_flat_tree.reserve(cnt); } + //! @copydoc ::boost::container::flat_set::reserve(size_type) + void reserve(size_type cnt); - //! Effects: Tries to deallocate the excess of memory created - // with previous allocations. The size of the vector is unchanged - //! - //! Throws: If memory allocation throws, or Key's copy constructor throws. - //! - //! Complexity: Linear to size(). - void shrink_to_fit() - { m_flat_tree.shrink_to_fit(); } + //! @copydoc ::boost::container::flat_set::shrink_to_fit() + void shrink_to_fit(); + + #endif // #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) ////////////////////////////////////////////// // @@ -1087,7 +898,7 @@ class flat_multiset //! Note: If an element is inserted it might invalidate elements. template iterator emplace(Args&&... args) - { return m_flat_tree.emplace_equal(boost::forward(args)...); } + { return this->base_t::emplace_equal(boost::forward(args)...); } //! Effects: Inserts an object of type Key constructed with //! std::forward(args)... in the container. @@ -1102,19 +913,19 @@ class flat_multiset //! Note: If an element is inserted it might invalidate elements. template iterator emplace_hint(const_iterator hint, Args&&... args) - { return m_flat_tree.emplace_hint_equal(hint, boost::forward(args)...); } + { return this->base_t::emplace_hint_equal(hint, boost::forward(args)...); } #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING #define BOOST_PP_LOCAL_MACRO(n) \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_flat_tree.emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ + { return this->base_t::emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace_hint(const_iterator hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_flat_tree.emplace_hint_equal \ + { return this->base_t::emplace_hint_equal \ (hint BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) @@ -1169,7 +980,7 @@ class flat_multiset //! Note: If an element is inserted it might invalidate elements. iterator insert(const_iterator position, value_type &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator, const_iterator) #endif //! Requires: first, last are not iterators into *this. @@ -1182,7 +993,7 @@ class flat_multiset //! Note: If an element is inserted it might invalidate elements. template void insert(InputIterator first, InputIterator last) - { m_flat_tree.insert_equal(first, last); } + { this->base_t::insert_equal(first, last); } //! Requires: first, last are not iterators into *this and //! must be ordered according to the predicate. @@ -1196,196 +1007,108 @@ class flat_multiset //! Note: Non-standard extension. If an element is inserted it might invalidate elements. template void insert(ordered_range_t, InputIterator first, InputIterator last) - { m_flat_tree.insert_equal(ordered_range, first, last); } + { this->base_t::insert_equal(ordered_range, first, last); } - //! Effects: Erases the element pointed to by position. - //! - //! Returns: Returns an iterator pointing to the element immediately - //! following q prior to the element being erased. If no such element exists, - //! returns end(). - //! - //! Complexity: Linear to the elements with keys bigger than position - //! - //! Note: Invalidates elements with keys - //! not less than the erased element. - iterator erase(const_iterator position) - { return m_flat_tree.erase(position); } + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: Erases all elements in the container with key equivalent to x. - //! - //! Returns: Returns the number of erased elements. - //! - //! Complexity: Logarithmic search time plus erasure time - //! linear to the elements with bigger keys. - size_type erase(const key_type& x) - { return m_flat_tree.erase(x); } + //! @copydoc ::boost::container::flat_set::erase(const_iterator) + iterator erase(const_iterator position); - //! Effects: Erases all the elements in the range [first, last). - //! - //! Returns: Returns last. - //! - //! Complexity: size()*N where N is the distance from first to last. - //! - //! Complexity: Logarithmic search time plus erasure time - //! linear to the elements with bigger keys. - iterator erase(const_iterator first, const_iterator last) - { return m_flat_tree.erase(first, last); } + //! @copydoc ::boost::container::flat_set::erase(const key_type&) + size_type erase(const key_type& x); - //! Effects: Swaps the contents of *this and x. + //! @copydoc ::boost::container::flat_set::erase(const_iterator,const_iterator) + iterator erase(const_iterator first, const_iterator last); + + //! @copydoc ::boost::container::flat_set::swap + void swap(flat_multiset& x); + + //! @copydoc ::boost::container::flat_set::clear + void clear() BOOST_CONTAINER_NOEXCEPT; + + //! @copydoc ::boost::container::flat_set::key_comp + key_compare key_comp() const; + + //! @copydoc ::boost::container::flat_set::value_comp + value_compare value_comp() const; + + //! @copydoc ::boost::container::flat_set::find(const key_type& ) + iterator find(const key_type& x); + + //! @copydoc ::boost::container::flat_set::find(const key_type& ) const + const_iterator find(const key_type& x) const; + + //! @copydoc ::boost::container::flat_set::count(const key_type& ) const + size_type count(const key_type& x) const; + + //! @copydoc ::boost::container::flat_set::lower_bound(const key_type& ) + iterator lower_bound(const key_type& x); + + //! @copydoc ::boost::container::flat_set::lower_bound(const key_type& ) const + const_iterator lower_bound(const key_type& x) const; + + //! @copydoc ::boost::container::flat_set::upper_bound(const key_type& ) + iterator upper_bound(const key_type& x); + + //! @copydoc ::boost::container::flat_set::upper_bound(const key_type& ) const + const_iterator upper_bound(const key_type& x) const; + + //! @copydoc ::boost::container::flat_set::equal_range(const key_type& ) const + std::pair equal_range(const key_type& x) const; + + //! @copydoc ::boost::container::flat_set::equal_range(const key_type& ) + std::pair equal_range(const key_type& x); + + //! Effects: Returns true if x and y are equal //! - //! Throws: Nothing. + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const flat_multiset& x, const flat_multiset& y); + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const flat_multiset& x, const flat_multiset& y); + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const flat_multiset& x, const flat_multiset& y); + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const flat_multiset& x, const flat_multiset& y); + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const flat_multiset& x, const flat_multiset& y); + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const flat_multiset& x, const flat_multiset& y); + + //! Effects: x.swap(y) //! //! Complexity: Constant. - void swap(flat_multiset& x) - { m_flat_tree.swap(x.m_flat_tree); } + friend void swap(flat_multiset& x, flat_multiset& y); - //! Effects: erase(a.begin(),a.end()). - //! - //! Postcondition: size() == 0. - //! - //! Complexity: linear in size(). - void clear() BOOST_CONTAINER_NOEXCEPT - { m_flat_tree.clear(); } + #endif //#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED - ////////////////////////////////////////////// - // - // observers - // - ////////////////////////////////////////////// - - //! Effects: Returns the comparison object out - //! of which a was constructed. - //! - //! Complexity: Constant. - key_compare key_comp() const - { return m_flat_tree.key_comp(); } - - //! Effects: Returns an object of value_compare constructed out - //! of the comparison object. - //! - //! Complexity: Constant. - value_compare value_comp() const - { return m_flat_tree.key_comp(); } - - ////////////////////////////////////////////// - // - // set operations - // - ////////////////////////////////////////////// - - //! Returns: An iterator pointing to an element with the key - //! equivalent to x, or end() if such an element is not found. - //! - //! Complexity: Logarithmic. - iterator find(const key_type& x) - { return m_flat_tree.find(x); } - - //! Returns: Allocator const_iterator pointing to an element with the key - //! equivalent to x, or end() if such an element is not found. - //! - //! Complexity: Logarithmic.s - const_iterator find(const key_type& x) const - { return m_flat_tree.find(x); } - - //! Returns: The number of elements with key equivalent to x. - //! - //! Complexity: log(size())+count(k) - size_type count(const key_type& x) const - { return m_flat_tree.count(x); } - - //! Returns: An iterator pointing to the first element with key not less - //! than k, or a.end() if such an element is not found. - //! - //! Complexity: Logarithmic - iterator lower_bound(const key_type& x) - { return m_flat_tree.lower_bound(x); } - - //! Returns: Allocator const iterator pointing to the first element with key not - //! less than k, or a.end() if such an element is not found. - //! - //! Complexity: Logarithmic - const_iterator lower_bound(const key_type& x) const - { return m_flat_tree.lower_bound(x); } - - //! Returns: An iterator pointing to the first element with key not less - //! than x, or end() if such an element is not found. - //! - //! Complexity: Logarithmic - iterator upper_bound(const key_type& x) - { return m_flat_tree.upper_bound(x); } - - //! Returns: Allocator const iterator pointing to the first element with key not - //! less than x, or end() if such an element is not found. - //! - //! Complexity: Logarithmic - const_iterator upper_bound(const key_type& x) const - { return m_flat_tree.upper_bound(x); } - - //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). - //! - //! Complexity: Logarithmic - std::pair equal_range(const key_type& x) const - { return m_flat_tree.equal_range(x); } - - //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). - //! - //! Complexity: Logarithmic - std::pair equal_range(const key_type& x) - { return m_flat_tree.equal_range(x); } - - /// @cond - template - friend bool operator== (const flat_multiset&, - const flat_multiset&); - template - friend bool operator< (const flat_multiset&, - const flat_multiset&); + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: template iterator priv_insert(BOOST_FWD_REF(KeyType) x) - { return m_flat_tree.insert_equal(::boost::forward(x)); } + { return this->base_t::insert_equal(::boost::forward(x)); } template iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x) - { return m_flat_tree.insert_equal(p, ::boost::forward(x)); } - /// @endcond + { return this->base_t::insert_equal(p, ::boost::forward(x)); } + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool operator==(const flat_multiset& x, - const flat_multiset& y) - { return x.m_flat_tree == y.m_flat_tree; } - -template -inline bool operator<(const flat_multiset& x, - const flat_multiset& y) - { return x.m_flat_tree < y.m_flat_tree; } - -template -inline bool operator!=(const flat_multiset& x, - const flat_multiset& y) - { return !(x == y); } - -template -inline bool operator>(const flat_multiset& x, - const flat_multiset& y) - { return y < x; } - -template -inline bool operator<=(const flat_multiset& x, - const flat_multiset& y) - { return !(y < x); } - -template -inline bool operator>=(const flat_multiset& x, - const flat_multiset& y) -{ return !(x < y); } - -template -inline void swap(flat_multiset& x, flat_multiset& y) - { x.swap(y); } - -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED } //namespace container { @@ -1399,7 +1122,7 @@ struct has_trivial_destructor_after_move= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include #include #include @@ -26,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -46,7 +47,7 @@ namespace boost { namespace container { -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace container_detail { template @@ -64,8 +65,16 @@ struct list_node list_node(); public: + typedef T value_type; typedef typename list_hook::type hook_type; + T m_data; + + T &get_data() + { return this->m_data; } + + const T &get_data() const + { return this->m_data; } }; template @@ -89,107 +98,8 @@ struct intrusive_list_type typedef container_type type ; }; -template -class list_const_iterator - : public std::iterator< std::bidirectional_iterator_tag, T - , typename iiterator_types::difference_type - , typename iiterator_types::const_pointer - , typename iiterator_types::const_reference> -{ - protected: - - IIterator m_it; - - public: - typedef typename iiterator_types::const_pointer const_pointer; - typedef typename iiterator_types::const_reference const_reference; - - //Constructors - list_const_iterator() - : m_it() - {} - - explicit list_const_iterator(const IIterator &it) - : m_it(it) - {} - - //Pointer like operators - const_reference operator*() const - { return this->m_it->m_data; } - - const_pointer operator->() const - { return ::boost::intrusive::pointer_traits::pointer_to(this->m_it->m_data); } - - //Increment / Decrement - list_const_iterator& operator++() - { ++this->m_it; return *this; } - - list_const_iterator operator++(int) - { IIterator tmp = this->m_it; ++*this; return list_const_iterator(tmp); } - - list_const_iterator& operator--() - { --this->m_it; return *this; } - - list_const_iterator operator--(int) - { IIterator tmp = this->m_it; --*this; return list_const_iterator(tmp); } - - //Comparison operators - friend bool operator== (const list_const_iterator& l, const list_const_iterator& r) - { return l.m_it == r.m_it; } - - friend bool operator!= (const list_const_iterator& l, const list_const_iterator& r) - { return l.m_it != r.m_it; } - - const IIterator &get() const - { return this->m_it; } -}; - -template -class list_iterator - : public list_const_iterator -{ - private: - typedef list_const_iterator const_iterator; - - public: - typedef typename iiterator_types::pointer pointer; - typedef typename iiterator_types::reference reference; - - //Constructors - list_iterator() - : const_iterator() - {} - - explicit list_iterator(const IIterator &it) - : const_iterator(it) - {} - - //Pointer like operators - reference operator*() const - { return this->m_it->m_data; } - - pointer operator->() const - { return ::boost::intrusive::pointer_traits::pointer_to(this->m_it->m_data); } - - //Increment / Decrement - list_iterator& operator++() - { ++this->m_it; return *this; } - - list_iterator operator++(int) - { IIterator tmp = this->m_it; ++*this; return list_iterator(tmp); } - - list_iterator& operator--() - { --this->m_it; return *this; } - - list_iterator operator--(int) - { IIterator tmp = this->m_it; --*this; return list_iterator(tmp); } - - const IIterator &get() const - { return this->m_it; } -}; - } //namespace container_detail { -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! A list is a doubly linked list. That is, it is a Sequence that supports both //! forward and backward traversal, and (amortized) constant time insertion and @@ -201,6 +111,9 @@ class list_iterator //! after a list operation than it did before), but the iterators themselves will //! not be invalidated or made to point to different elements unless that invalidation //! or mutation is explicit. +//! +//! \tparam T The type of object that is stored in the list +//! \tparam Allocator The allocator used for all internal memory management #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED template > #else @@ -210,7 +123,7 @@ class list : protected container_detail::node_alloc_holder ::type> { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED typedef typename container_detail::intrusive_list_type::type Icont; typedef container_detail::node_alloc_holder AllocHolder; @@ -255,9 +168,9 @@ class list BOOST_COPYABLE_AND_MOVABLE(list) - typedef container_detail::list_iterator iterator_impl; - typedef container_detail::list_const_iteratorconst_iterator_impl; - /// @endcond + typedef container_detail::iterator iterator_impl; + typedef container_detail::iterator const_iterator_impl; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -307,7 +220,7 @@ class list //! Effects: Constructs a list that will use a copy of allocator a //! and inserts n copies of value. //! - //! Throws: If allocator_type's default constructor or copy constructor + //! Throws: If allocator_type's default constructor //! throws or T's default or copy constructor throws. //! //! Complexity: Linear to n. @@ -318,7 +231,7 @@ class list //! Effects: Constructs a list that will use a copy of allocator a //! and inserts n copies of value. //! - //! Throws: If allocator_type's default constructor or copy constructor + //! Throws: If allocator_type's default constructor //! throws or T's default or copy constructor throws. //! //! Complexity: Linear to n. @@ -330,7 +243,7 @@ class list //! //! Postcondition: x == *this. //! - //! Throws: If allocator_type's default constructor or copy constructor throws. + //! Throws: If allocator_type's default constructor throws. //! //! Complexity: Linear to the elements x contains. list(const list& x) @@ -377,8 +290,8 @@ class list //! Effects: Constructs a list that will use a copy of allocator a //! and inserts a copy of the range [first, last) in the list. //! - //! Throws: If allocator_type's default constructor or copy constructor - //! throws or T's constructor taking an dereferenced InIt throws. + //! Throws: If allocator_type's default constructor + //! throws or T's constructor taking a dereferenced InIt throws. //! //! Complexity: Linear to the range [first, last). template @@ -419,33 +332,40 @@ class list return *this; } - //! Effects: Move assignment. All mx's values are transferred to *this. + //! Effects: Move assignment. All x's values are transferred to *this. //! //! Postcondition: x.empty(). *this contains a the elements x had //! before the function. //! - //! Throws: If allocator_type's copy constructor throws. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or value_type's move constructor throws) //! - //! Complexity: Constant. + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. list& operator=(BOOST_RV_REF(list) x) + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) { - if (&x != this){ - NodeAlloc &this_alloc = this->node_alloc(); - NodeAlloc &x_alloc = x.node_alloc(); - //If allocators are equal we can just swap pointers - if(this_alloc == x_alloc){ - //Destroy and swap pointers - this->clear(); - this->icont() = boost::move(x.icont()); - //Move allocator if needed - this->AllocHolder::move_assign_alloc(x); - } - //If unequal allocators, then do a one by one move - else{ - typedef typename std::iterator_traits::iterator_category ItCat; - this->assign( boost::make_move_iterator(x.begin()) - , boost::make_move_iterator(x.end())); - } + BOOST_ASSERT(this != &x); + NodeAlloc &this_alloc = this->node_alloc(); + NodeAlloc &x_alloc = x.node_alloc(); + const bool propagate_alloc = allocator_traits_type:: + propagate_on_container_move_assignment::value; + const bool allocators_equal = this_alloc == x_alloc; (void)allocators_equal; + //Resources can be transferred if both allocators are + //going to be equal after this function (either propagated or already equal) + if(propagate_alloc || allocators_equal){ + //Destroy + this->clear(); + //Move allocator if needed + this->AllocHolder::move_assign_alloc(x); + //Obtain resources + this->icont() = boost::move(x.icont()); + } + //Else do a one by one move + else{ + this->assign( boost::make_move_iterator(x.begin()) + , boost::make_move_iterator(x.end())); } return *this; } @@ -654,7 +574,7 @@ class list { return AllocHolder::max_size(); } //! Effects: Inserts or erases elements at the end such that - //! the size becomes n. New elements are default constructed. + //! the size becomes n. New elements are value initialized. //! //! Throws: If memory allocation throws, or T's copy constructor throws. //! @@ -662,8 +582,8 @@ class list void resize(size_type new_size) { if(!priv_try_shrink(new_size)){ - typedef default_construct_iterator default_iterator; - this->insert(this->cend(), default_iterator(new_size - this->size()), default_iterator()); + typedef value_init_construct_iterator value_init_iterator; + this->insert(this->cend(), value_init_iterator(new_size - this->size()), value_init_iterator()); } } @@ -868,7 +788,7 @@ class list //! Complexity: Amortized constant time. iterator insert(const_iterator position, T &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator, const_iterator) #endif //! Requires: p must be a valid iterator of *this. @@ -1273,7 +1193,7 @@ class list //! Throws: If comparison throws. //! //! Notes: Iterators and references are not invalidated. - //! + //! //! Complexity: The number of comparisons is approximately N log N, where N //! is the list's size. void sort() @@ -1305,9 +1225,65 @@ class list //! //! Note: Iterators and references are not invalidated void reverse() BOOST_CONTAINER_NOEXCEPT - { this->icont().reverse(); } + { this->icont().reverse(); } - /// @cond + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const list& x, const list& y) + { + if(x.size() != y.size()){ + return false; + } + typedef typename list::const_iterator const_iterator; + const_iterator end1 = x.end(); + + const_iterator i1 = x.begin(); + const_iterator i2 = y.begin(); + while (i1 != end1 && *i1 == *i2) { + ++i1; + ++i2; + } + return i1 == end1; + } + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const list& x, const list& y) + { return !(x == y); } + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const list& x, const list& y) + { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const list& x, const list& y) + { return y < x; } + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const list& x, const list& y) + { return !(y < x); } + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const list& x, const list& y) + { return !(x < y); } + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(list& x, list& y) + { x.swap(y); } + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: bool priv_try_shrink(size_type new_size) @@ -1350,13 +1326,13 @@ class list return iterator(this->icont().insert(p.get(), *tmp)); } - void priv_push_back (const T &x) + void priv_push_back (const T &x) { this->insert(this->cend(), x); } void priv_push_back (BOOST_RV_REF(T) x) { this->insert(this->cend(), boost::move(x)); } - void priv_push_front (const T &x) + void priv_push_front (const T &x) { this->insert(this->cbegin(), x); } void priv_push_front (BOOST_RV_REF(T) x) @@ -1394,66 +1370,11 @@ class list bool operator()(const value_type &a, const value_type &b) const { return a == b; } }; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool operator==(const list& x, const list& y) -{ - if(x.size() != y.size()){ - return false; - } - typedef typename list::const_iterator const_iterator; - const_iterator end1 = x.end(); - - const_iterator i1 = x.begin(); - const_iterator i2 = y.begin(); - while (i1 != end1 && *i1 == *i2) { - ++i1; - ++i2; - } - return i1 == end1; -} - -template -inline bool operator<(const list& x, - const list& y) -{ - return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); -} - -template -inline bool operator!=(const list& x, const list& y) -{ - return !(x == y); -} - -template -inline bool operator>(const list& x, const list& y) -{ - return y < x; -} - -template -inline bool operator<=(const list& x, const list& y) -{ - return !(y < x); -} - -template -inline bool operator>=(const list& x, const list& y) -{ - return !(x < y); -} - -template -inline void swap(list& x, list& y) -{ - x.swap(y); -} - -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED } //namespace container { @@ -1466,7 +1387,7 @@ struct has_trivial_destructor_after_move > namespace container { -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }} diff --git a/3party/boost/boost/container/map.hpp b/3party/boost/boost/container/map.hpp index b1faf495ab..ec1c30a3db 100644 --- a/3party/boost/boost/container/map.hpp +++ b/3party/boost/boost/container/map.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,7 @@ #ifndef BOOST_CONTAINER_MAP_HPP #define BOOST_CONTAINER_MAP_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -39,49 +39,47 @@ namespace boost { namespace container { -/// @cond -// Forward declarations of operators == and <, needed for friend declarations. -template -inline bool operator==(const map& x, - const map& y); - -template -inline bool operator<(const map& x, - const map& y); -/// @endcond +#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED //! A map is a kind of associative container that supports unique keys (contains at //! most one of each key value) and provides for fast retrieval of values of another //! type T based on the keys. The map class supports bidirectional iterators. //! //! A map satisfies all of the requirements of a container and of a reversible -//! container and of an associative container. For a -//! map the key_type is Key and the value_type is std::pair. +//! container and of an associative container. The value_type stored +//! by this container is the value_type is std::pair. //! -//! Compare is the ordering function for Keys (e.g. std::less). -//! -//! Allocator is the allocator to allocate the value_types -//! (e.g. allocator< std::pair > ). -#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED -template , class Allocator = std::allocator< std::pair< const Key, T> > > +//! \tparam Key is the key_type of the map +//! \tparam Value is the mapped_type +//! \tparam Compare is the ordering function for Keys (e.g. std::less). +//! \tparam Allocator is the allocator to allocate the value_types +//! (e.g. allocator< std::pair > ). +//! \tparam MapOptions is an packed option type generated using using boost::container::tree_assoc_options. +template < class Key, class T, class Compare = std::less + , class Allocator = std::allocator< std::pair< const Key, T> >, class MapOptions = tree_assoc_defaults > #else -template +template #endif class map + ///@cond + : public container_detail::tree + < Key, std::pair + , container_detail::select1st< std::pair > + , Compare, Allocator, MapOptions> + ///@endcond { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(map) typedef std::pair value_type_impl; - typedef container_detail::rbtree - , Compare, Allocator> tree_t; + typedef container_detail::tree + , Compare, Allocator, MapOptions> base_t; typedef container_detail::pair movable_value_type_impl; typedef container_detail::tree_value_compare < Key, value_type_impl, Compare, container_detail::select1st > value_compare_impl; - tree_t m_tree; // red-black tree representing map - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -91,6 +89,7 @@ class map ////////////////////////////////////////////// typedef Key key_type; + typedef ::boost::container::allocator_traits allocator_traits_type; typedef T mapped_type; typedef std::pair value_type; typedef typename boost::container::allocator_traits::pointer pointer; @@ -100,13 +99,13 @@ class map typedef typename boost::container::allocator_traits::size_type size_type; typedef typename boost::container::allocator_traits::difference_type difference_type; typedef Allocator allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type; typedef BOOST_CONTAINER_IMPDEF(value_compare_impl) value_compare; typedef Compare key_compare; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::iterator) iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_iterator) const_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::reverse_iterator) reverse_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_reverse_iterator) const_reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::reverse_iterator) reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_reverse_iterator) const_reverse_iterator; typedef std::pair nonconst_value_type; typedef BOOST_CONTAINER_IMPDEF(movable_value_type_impl) movable_value_type; @@ -120,7 +119,7 @@ class map //! //! Complexity: Constant. map() - : m_tree() + : base_t() { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -132,7 +131,17 @@ class map //! Complexity: Constant. explicit map(const Compare& comp, const allocator_type& a = allocator_type()) - : m_tree(comp, a) + : base_t(comp, a) + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } + + //! Effects: Constructs an empty map using the specified allocator. + //! + //! Complexity: Constant. + explicit map(const allocator_type& a) + : base_t(a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -146,7 +155,7 @@ class map template map(InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_tree(true, first, last, comp, a) + : base_t(true, first, last, comp, a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -160,10 +169,12 @@ class map //! unique values. //! //! Complexity: Linear in N. + //! + //! Note: Non-standard extension. template map( ordered_unique_range_t, InputIterator first, InputIterator last , const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_tree(ordered_range, first, last, comp, a) + : base_t(ordered_range, first, last, comp, a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -173,7 +184,7 @@ class map //! //! Complexity: Linear in x.size(). map(const map& x) - : m_tree(x.m_tree) + : base_t(static_cast(x)) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -185,7 +196,7 @@ class map //! //! Postcondition: x is emptied. map(BOOST_RV_REF(map) x) - : m_tree(boost::move(x.m_tree)) + : base_t(boost::move(static_cast(x))) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -195,7 +206,7 @@ class map //! //! Complexity: Linear in x.size(). map(const map& x, const allocator_type &a) - : m_tree(x.m_tree, a) + : base_t(static_cast(x), a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -208,7 +219,7 @@ class map //! //! Postcondition: x is emptied. map(BOOST_RV_REF(map) x, const allocator_type &a) - : m_tree(boost::move(x.m_tree), a) + : base_t(boost::move(static_cast(x)), a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -218,20 +229,27 @@ class map //! //! Complexity: Linear in x.size(). map& operator=(BOOST_COPY_ASSIGN_REF(map) x) - { m_tree = x.m_tree; return *this; } + { return static_cast(this->base_t::operator=(static_cast(x))); } //! Effects: this->swap(x.get()). //! - //! Complexity: Constant. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or value_type's move constructor throws) + //! + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. map& operator=(BOOST_RV_REF(map) x) - { m_tree = boost::move(x.m_tree); return *this; } + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) + { return static_cast(this->base_t::operator=(boost::move(static_cast(x)))); } + + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: Returns a copy of the Allocator that //! was passed to the object's constructor. //! //! Complexity: Constant. - allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.get_allocator(); } + allocator_type get_allocator() const; //! Effects: Returns a reference to the internal allocator. //! @@ -240,8 +258,7 @@ class map //! Complexity: Constant. //! //! Note: Non-standard extension. - stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT - { return m_tree.get_stored_allocator(); } + stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a reference to the internal allocator. //! @@ -250,46 +267,49 @@ class map //! Complexity: Constant. //! //! Note: Non-standard extension. - const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.get_stored_allocator(); } - - ////////////////////////////////////////////// - // - // iterators - // - ////////////////////////////////////////////// + const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns an iterator to the first element contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - iterator begin() BOOST_CONTAINER_NOEXCEPT - { return m_tree.begin(); } + iterator begin() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_iterator to the first element contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - const_iterator begin() const BOOST_CONTAINER_NOEXCEPT - { return this->cbegin(); } + const_iterator begin() const BOOST_CONTAINER_NOEXCEPT; + + //! Effects: Returns a const_iterator to the first element contained in the container. + //! + //! Throws: Nothing. + //! + //! Complexity: Constant. + const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns an iterator to the end of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - iterator end() BOOST_CONTAINER_NOEXCEPT - { return m_tree.end(); } + iterator end() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_iterator to the end of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - const_iterator end() const BOOST_CONTAINER_NOEXCEPT - { return this->cend(); } + const_iterator end() const BOOST_CONTAINER_NOEXCEPT; + + //! Effects: Returns a const_iterator to the end of the container. + //! + //! Throws: Nothing. + //! + //! Complexity: Constant. + const_iterator cend() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a reverse_iterator pointing to the beginning //! of the reversed container. @@ -297,8 +317,7 @@ class map //! Throws: Nothing. //! //! Complexity: Constant. - reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT - { return m_tree.rbegin(); } + reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_reverse_iterator pointing to the beginning //! of the reversed container. @@ -306,8 +325,15 @@ class map //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT - { return this->crbegin(); } + const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT; + + //! Effects: Returns a const_reverse_iterator pointing to the beginning + //! of the reversed container. + //! + //! Throws: Nothing. + //! + //! Complexity: Constant. + const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a reverse_iterator pointing to the end //! of the reversed container. @@ -315,8 +341,7 @@ class map //! Throws: Nothing. //! //! Complexity: Constant. - reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT - { return m_tree.rend(); } + reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_reverse_iterator pointing to the end //! of the reversed container. @@ -324,33 +349,7 @@ class map //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT - { return this->crend(); } - - //! Effects: Returns a const_iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.begin(); } - - //! Effects: Returns a const_iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cend() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.end(); } - - //! Effects: Returns a const_reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.rbegin(); } + const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns a const_reverse_iterator pointing to the end //! of the reversed container. @@ -358,44 +357,30 @@ class map //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.rend(); } - - ////////////////////////////////////////////// - // - // capacity - // - ////////////////////////////////////////////// + const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns true if the container contains no elements. //! //! Throws: Nothing. //! //! Complexity: Constant. - bool empty() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.empty(); } + bool empty() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns the number of the elements contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - size_type size() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.size(); } + size_type size() const BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns the largest possible size of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - size_type max_size() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.max_size(); } + size_type max_size() const BOOST_CONTAINER_NOEXCEPT; - ////////////////////////////////////////////// - // - // element access - // - ////////////////////////////////////////////// + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: If there is no key equivalent to x in the map, inserts @@ -456,7 +441,7 @@ class map //! //! Complexity: Logarithmic. std::pair insert(const value_type& x) - { return m_tree.insert_unique(x); } + { return this->base_t::insert_unique(x); } //! Effects: Inserts a new value_type created from the pair if and only if //! there is no element in the container with key equivalent to the key of x. @@ -467,7 +452,7 @@ class map //! //! Complexity: Logarithmic. std::pair insert(const nonconst_value_type& x) - { return m_tree.insert_unique(x); } + { return this->base_t::insert_unique(x); } //! Effects: Inserts a new value_type move constructed from the pair if and //! only if there is no element in the container with key equivalent to the key of x. @@ -478,7 +463,7 @@ class map //! //! Complexity: Logarithmic. std::pair insert(BOOST_RV_REF(nonconst_value_type) x) - { return m_tree.insert_unique(boost::move(x)); } + { return this->base_t::insert_unique(boost::move(x)); } //! Effects: Inserts a new value_type move constructed from the pair if and //! only if there is no element in the container with key equivalent to the key of x. @@ -489,7 +474,7 @@ class map //! //! Complexity: Logarithmic. std::pair insert(BOOST_RV_REF(movable_value_type) x) - { return m_tree.insert_unique(boost::move(x)); } + { return this->base_t::insert_unique(boost::move(x)); } //! Effects: Move constructs a new value from x if and only if there is //! no element in the container with key equivalent to the key of x. @@ -500,7 +485,7 @@ class map //! //! Complexity: Logarithmic. std::pair insert(BOOST_RV_REF(value_type) x) - { return m_tree.insert_unique(boost::move(x)); } + { return this->base_t::insert_unique(boost::move(x)); } //! Effects: Inserts a copy of x in the container if and only if there is //! no element in the container with key equivalent to the key of x. @@ -512,7 +497,7 @@ class map //! Complexity: Logarithmic in general, but amortized constant if t //! is inserted right before p. iterator insert(const_iterator position, const value_type& x) - { return m_tree.insert_unique(position, x); } + { return this->base_t::insert_unique(position, x); } //! Effects: Move constructs a new value from x if and only if there is //! no element in the container with key equivalent to the key of x. @@ -524,7 +509,7 @@ class map //! Complexity: Logarithmic in general, but amortized constant if t //! is inserted right before p. iterator insert(const_iterator position, BOOST_RV_REF(nonconst_value_type) x) - { return m_tree.insert_unique(position, boost::move(x)); } + { return this->base_t::insert_unique(position, boost::move(x)); } //! Effects: Move constructs a new value from x if and only if there is //! no element in the container with key equivalent to the key of x. @@ -536,7 +521,7 @@ class map //! Complexity: Logarithmic in general, but amortized constant if t //! is inserted right before p. iterator insert(const_iterator position, BOOST_RV_REF(movable_value_type) x) - { return m_tree.insert_unique(position, boost::move(x)); } + { return this->base_t::insert_unique(position, boost::move(x)); } //! Effects: Inserts a copy of x in the container. //! p is a hint pointing to where the insert should start to search. @@ -545,7 +530,7 @@ class map //! //! Complexity: Logarithmic. iterator insert(const_iterator position, const nonconst_value_type& x) - { return m_tree.insert_unique(position, x); } + { return this->base_t::insert_unique(position, x); } //! Effects: Inserts an element move constructed from x in the container. //! p is a hint pointing to where the insert should start to search. @@ -554,7 +539,7 @@ class map //! //! Complexity: Logarithmic. iterator insert(const_iterator position, BOOST_RV_REF(value_type) x) - { return m_tree.insert_unique(position, boost::move(x)); } + { return this->base_t::insert_unique(position, boost::move(x)); } //! Requires: first, last are not iterators into *this. //! @@ -564,7 +549,7 @@ class map //! Complexity: At most N log(size()+N) (N is the distance from first to last) template void insert(InputIterator first, InputIterator last) - { m_tree.insert_unique(first, last); } + { this->base_t::insert_unique(first, last); } #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -581,7 +566,7 @@ class map //! is inserted right before p. template std::pair emplace(Args&&... args) - { return m_tree.emplace_unique(boost::forward(args)...); } + { return this->base_t::emplace_unique(boost::forward(args)...); } //! Effects: Inserts an object of type T constructed with //! std::forward(args)... in the container if and only if there is @@ -595,19 +580,19 @@ class map //! is inserted right before p. template iterator emplace_hint(const_iterator hint, Args&&... args) - { return m_tree.emplace_hint_unique(hint, boost::forward(args)...); } + { return this->base_t::emplace_hint_unique(hint, boost::forward(args)...); } #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING #define BOOST_PP_LOCAL_MACRO(n) \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ std::pair emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_tree.emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ + { return this->base_t::emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }\ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace_hint(const_iterator hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_tree.emplace_hint_unique(hint \ + { return this->base_t::emplace_hint_unique(hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));} \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) @@ -615,6 +600,8 @@ class map #endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + //! Effects: Erases the element pointed to by position. //! //! Returns: Returns an iterator pointing to the element immediately @@ -622,141 +609,154 @@ class map //! returns end(). //! //! Complexity: Amortized constant time - iterator erase(const_iterator position) BOOST_CONTAINER_NOEXCEPT - { return m_tree.erase(position); } + iterator erase(const_iterator position) BOOST_CONTAINER_NOEXCEPT; //! Effects: Erases all elements in the container with key equivalent to x. //! //! Returns: Returns the number of erased elements. //! //! Complexity: log(size()) + count(k) - size_type erase(const key_type& x) BOOST_CONTAINER_NOEXCEPT - { return m_tree.erase(x); } + size_type erase(const key_type& x) BOOST_CONTAINER_NOEXCEPT; //! Effects: Erases all the elements in the range [first, last). //! //! Returns: Returns last. //! //! Complexity: log(size())+N where N is the distance from first to last. - iterator erase(const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT - { return m_tree.erase(first, last); } + iterator erase(const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT; //! Effects: Swaps the contents of *this and x. //! //! Throws: Nothing. //! //! Complexity: Constant. - void swap(map& x) - { m_tree.swap(x.m_tree); } + void swap(map& x); //! Effects: erase(a.begin(),a.end()). //! //! Postcondition: size() == 0. //! //! Complexity: linear in size(). - void clear() BOOST_CONTAINER_NOEXCEPT - { m_tree.clear(); } - - ////////////////////////////////////////////// - // - // observers - // - ////////////////////////////////////////////// + void clear() BOOST_CONTAINER_NOEXCEPT; //! Effects: Returns the comparison object out //! of which a was constructed. //! //! Complexity: Constant. - key_compare key_comp() const - { return m_tree.key_comp(); } + key_compare key_comp() const; //! Effects: Returns an object of value_compare constructed out //! of the comparison object. //! //! Complexity: Constant. - value_compare value_comp() const - { return value_compare(m_tree.key_comp()); } - - ////////////////////////////////////////////// - // - // map operations - // - ////////////////////////////////////////////// + value_compare value_comp() const; //! Returns: An iterator pointing to an element with the key //! equivalent to x, or end() if such an element is not found. //! //! Complexity: Logarithmic. - iterator find(const key_type& x) - { return m_tree.find(x); } + iterator find(const key_type& x); //! Returns: Allocator const_iterator pointing to an element with the key //! equivalent to x, or end() if such an element is not found. //! //! Complexity: Logarithmic. - const_iterator find(const key_type& x) const - { return m_tree.find(x); } + const_iterator find(const key_type& x) const; + + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Returns: The number of elements with key equivalent to x. //! //! Complexity: log(size())+count(k) size_type count(const key_type& x) const - { return m_tree.find(x) == m_tree.end() ? 0 : 1; } + { return static_cast(this->find(x) != this->cend()); } + + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Returns: An iterator pointing to the first element with key not less //! than k, or a.end() if such an element is not found. //! //! Complexity: Logarithmic - iterator lower_bound(const key_type& x) - { return m_tree.lower_bound(x); } + iterator lower_bound(const key_type& x); //! Returns: Allocator const iterator pointing to the first element with key not //! less than k, or a.end() if such an element is not found. //! //! Complexity: Logarithmic - const_iterator lower_bound(const key_type& x) const - { return m_tree.lower_bound(x); } + const_iterator lower_bound(const key_type& x) const; //! Returns: An iterator pointing to the first element with key not less //! than x, or end() if such an element is not found. //! //! Complexity: Logarithmic - iterator upper_bound(const key_type& x) - { return m_tree.upper_bound(x); } + iterator upper_bound(const key_type& x); //! Returns: Allocator const iterator pointing to the first element with key not //! less than x, or end() if such an element is not found. //! //! Complexity: Logarithmic - const_iterator upper_bound(const key_type& x) const - { return m_tree.upper_bound(x); } + const_iterator upper_bound(const key_type& x) const; //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic - std::pair equal_range(const key_type& x) - { return m_tree.equal_range(x); } + std::pair equal_range(const key_type& x); //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic - std::pair equal_range(const key_type& x) const - { return m_tree.equal_range(x); } + std::pair equal_range(const key_type& x) const; - /// @cond - template - friend bool operator== (const map&, - const map&); - template - friend bool operator< (const map&, - const map&); + //! Effects: Rebalances the tree. It's a no-op for Red-Black and AVL trees. + //! + //! Complexity: Linear + void rebalance(); + + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const map& x, const map& y); + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const map& x, const map& y); + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const map& x, const map& y); + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const map& x, const map& y); + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const map& x, const map& y); + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const map& x, const map& y); + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(map& x, map& y); + + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: mapped_type& priv_subscript(const key_type &k) { //we can optimize this - iterator i = lower_bound(k); + iterator i = this->lower_bound(k); // i->first is greater than or equivalent to k. - if (i == end() || key_comp()(k, (*i).first)){ + if (i == this->end() || this->key_comp()(k, (*i).first)){ container_detail::value_init m; movable_value_type val(k, boost::move(m.m_t)); i = insert(i, boost::move(val)); @@ -768,9 +768,9 @@ class map { key_type &k = mk; //we can optimize this - iterator i = lower_bound(k); + iterator i = this->lower_bound(k); // i->first is greater than or equivalent to k. - if (i == end() || key_comp()(k, (*i).first)){ + if (i == this->end() || this->key_comp()(k, (*i).first)){ container_detail::value_init m; movable_value_type val(boost::move(k), boost::move(m.m_t)); i = insert(i, boost::move(val)); @@ -778,54 +778,11 @@ class map return (*i).second; } - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool operator==(const map& x, - const map& y) - { return x.m_tree == y.m_tree; } -template -inline bool operator<(const map& x, - const map& y) - { return x.m_tree < y.m_tree; } - -template -inline bool operator!=(const map& x, - const map& y) - { return !(x == y); } - -template -inline bool operator>(const map& x, - const map& y) - { return y < x; } - -template -inline bool operator<=(const map& x, - const map& y) - { return !(y < x); } - -template -inline bool operator>=(const map& x, - const map& y) - { return !(x < y); } - -template -inline void swap(map& x, map& y) - { x.swap(y); } - -/// @cond - -// Forward declaration of operators < and ==, needed for friend declaration. - -template -inline bool operator==(const multimap& x, - const multimap& y); - -template -inline bool operator<(const multimap& x, - const multimap& y); +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED } //namespace container { @@ -839,7 +796,9 @@ struct has_trivial_destructor_after_move the key_type is Key and the value_type is std::pair. +//! container and of an associative container. The value_type stored +//! by this container is the value_type is std::pair. //! -//! Compare is the ordering function for Keys (e.g. std::less). -//! -//! Allocator is the allocator to allocate the value_types -//!(e.g. allocator< std::pair<const Key, T> >). -#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED -template , class Allocator = std::allocator< std::pair< const Key, T> > > +//! \tparam Key is the key_type of the map +//! \tparam Value is the mapped_type +//! \tparam Compare is the ordering function for Keys (e.g. std::less). +//! \tparam Allocator is the allocator to allocate the value_types +//! (e.g. allocator< std::pair > ). +//! \tparam MultiMapOptions is an packed option type generated using using boost::container::tree_assoc_options. +template < class Key, class T, class Compare = std::less + , class Allocator = std::allocator< std::pair< const Key, T> >, class MultiMapOptions = tree_assoc_defaults> #else -template +template #endif class multimap + ///@cond + : public container_detail::tree + < Key, std::pair + , container_detail::select1st< std::pair > + , Compare, Allocator, MultiMapOptions> + ///@endcond { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(multimap) typedef std::pair value_type_impl; - typedef container_detail::rbtree - , Compare, Allocator> tree_t; + typedef container_detail::tree + , Compare, Allocator, MultiMapOptions> base_t; typedef container_detail::pair movable_value_type_impl; typedef container_detail::tree_value_compare < Key, value_type_impl, Compare, container_detail::select1st > value_compare_impl; - tree_t m_tree; // red-black tree representing map - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -892,13 +858,13 @@ class multimap typedef typename boost::container::allocator_traits::size_type size_type; typedef typename boost::container::allocator_traits::difference_type difference_type; typedef Allocator allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type; typedef BOOST_CONTAINER_IMPDEF(value_compare_impl) value_compare; typedef Compare key_compare; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::iterator) iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_iterator) const_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::reverse_iterator) reverse_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_reverse_iterator) const_reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::reverse_iterator) reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_reverse_iterator) const_reverse_iterator; typedef std::pair nonconst_value_type; typedef BOOST_CONTAINER_IMPDEF(movable_value_type_impl) movable_value_type; @@ -912,7 +878,17 @@ class multimap //! //! Complexity: Constant. multimap() - : m_tree() + : base_t() + { + //Allocator type must be std::pair + BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); + } + + //! Effects: Constructs an empty multimap using the specified allocator. + //! + //! Complexity: Constant. + explicit multimap(const Compare& comp, const allocator_type& a = allocator_type()) + : base_t(comp, a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -922,8 +898,8 @@ class multimap //! object and allocator. //! //! Complexity: Constant. - explicit multimap(const Compare& comp, const allocator_type& a = allocator_type()) - : m_tree(comp, a) + explicit multimap(const allocator_type& a) + : base_t(a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -938,7 +914,7 @@ class multimap multimap(InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_tree(false, first, last, comp, a) + : base_t(false, first, last, comp, a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -951,17 +927,19 @@ class multimap //! Requires: [first ,last) must be ordered according to the predicate. //! //! Complexity: Linear in N. + //! + //! Note: Non-standard extension. template multimap(ordered_range_t, InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_tree(ordered_range, first, last, comp, a) + : base_t(ordered_range, first, last, comp, a) {} //! Effects: Copy constructs a multimap. //! //! Complexity: Linear in x.size(). multimap(const multimap& x) - : m_tree(x.m_tree) + : base_t(static_cast(x)) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -973,7 +951,7 @@ class multimap //! //! Postcondition: x is emptied. multimap(BOOST_RV_REF(multimap) x) - : m_tree(boost::move(x.m_tree)) + : base_t(boost::move(static_cast(x))) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -983,7 +961,7 @@ class multimap //! //! Complexity: Linear in x.size(). multimap(const multimap& x, const allocator_type &a) - : m_tree(x.m_tree, a) + : base_t(static_cast(x), a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -995,7 +973,7 @@ class multimap //! //! Postcondition: x is emptied. multimap(BOOST_RV_REF(multimap) x, const allocator_type &a) - : m_tree(boost::move(x.m_tree), a) + : base_t(boost::move(static_cast(x)), a) { //Allocator type must be std::pair BOOST_STATIC_ASSERT((container_detail::is_same, typename Allocator::value_type>::value)); @@ -1005,184 +983,71 @@ class multimap //! //! Complexity: Linear in x.size(). multimap& operator=(BOOST_COPY_ASSIGN_REF(multimap) x) - { m_tree = x.m_tree; return *this; } + { return static_cast(this->base_t::operator=(static_cast(x))); } //! Effects: this->swap(x.get()). //! //! Complexity: Constant. multimap& operator=(BOOST_RV_REF(multimap) x) - { m_tree = boost::move(x.m_tree); return *this; } + { return static_cast(this->base_t::operator=(boost::move(static_cast(x)))); } - //! Effects: Returns a copy of the Allocator that - //! was passed to the object's constructor. - //! - //! Complexity: Constant. - allocator_type get_allocator() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.get_allocator(); } + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: Returns a reference to the internal allocator. - //! - //! Throws: Nothing - //! - //! Complexity: Constant. - //! - //! Note: Non-standard extension. - stored_allocator_type &get_stored_allocator() BOOST_CONTAINER_NOEXCEPT - { return m_tree.get_stored_allocator(); } + //! @copydoc ::boost::container::set::get_allocator() + allocator_type get_allocator() const; - //! Effects: Returns a reference to the internal allocator. - //! - //! Throws: Nothing - //! - //! Complexity: Constant. - //! - //! Note: Non-standard extension. - const stored_allocator_type &get_stored_allocator() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.get_stored_allocator(); } + //! @copydoc ::boost::container::set::get_stored_allocator() + stored_allocator_type &get_stored_allocator(); - ////////////////////////////////////////////// - // - // iterators - // - ////////////////////////////////////////////// + //! @copydoc ::boost::container::set::get_stored_allocator() const + const stored_allocator_type &get_stored_allocator() const; - //! Effects: Returns an iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - iterator begin() BOOST_CONTAINER_NOEXCEPT - { return m_tree.begin(); } + //! @copydoc ::boost::container::set::begin() + iterator begin(); - //! Effects: Returns a const_iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator begin() const BOOST_CONTAINER_NOEXCEPT - { return this->cbegin(); } + //! @copydoc ::boost::container::set::begin() const + const_iterator begin() const; - //! Effects: Returns an iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - iterator end() BOOST_CONTAINER_NOEXCEPT - { return m_tree.end(); } + //! @copydoc ::boost::container::set::cbegin() const + const_iterator cbegin() const; - //! Effects: Returns a const_iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator end() const BOOST_CONTAINER_NOEXCEPT - { return this->cend(); } + //! @copydoc ::boost::container::set::end() + iterator end() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT - { return m_tree.rbegin(); } + //! @copydoc ::boost::container::set::end() const + const_iterator end() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT - { return this->crbegin(); } + //! @copydoc ::boost::container::set::cend() const + const_iterator cend() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT - { return m_tree.rend(); } + //! @copydoc ::boost::container::set::rbegin() + reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT - { return this->crend(); } + //! @copydoc ::boost::container::set::rbegin() const + const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.begin(); } + //! @copydoc ::boost::container::set::crbegin() const + const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cend() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.end(); } + //! @copydoc ::boost::container::set::rend() + reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.rbegin(); } + //! @copydoc ::boost::container::set::rend() const + const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.rend(); } + //! @copydoc ::boost::container::set::crend() const + const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT; - ////////////////////////////////////////////// - // - // capacity - // - ////////////////////////////////////////////// + //! @copydoc ::boost::container::set::empty() const + bool empty() const; - //! Effects: Returns true if the container contains no elements. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - bool empty() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.empty(); } + //! @copydoc ::boost::container::set::size() const + size_type size() const; - //! Effects: Returns the number of the elements contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - size_type size() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.size(); } + //! @copydoc ::boost::container::set::max_size() const + size_type max_size() const; - //! Effects: Returns the largest possible size of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - size_type max_size() const BOOST_CONTAINER_NOEXCEPT - { return m_tree.max_size(); } - - ////////////////////////////////////////////// - // - // modifiers - // - ////////////////////////////////////////////// + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -1197,7 +1062,7 @@ class multimap //! is inserted right before p. template iterator emplace(Args&&... args) - { return m_tree.emplace_equal(boost::forward(args)...); } + { return this->base_t::emplace_equal(boost::forward(args)...); } //! Effects: Inserts an object of type T constructed with //! std::forward(args)... in the container. @@ -1210,19 +1075,19 @@ class multimap //! is inserted right before p. template iterator emplace_hint(const_iterator hint, Args&&... args) - { return m_tree.emplace_hint_equal(hint, boost::forward(args)...); } + { return this->base_t::emplace_hint_equal(hint, boost::forward(args)...); } #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING #define BOOST_PP_LOCAL_MACRO(n) \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_tree.emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ + { return this->base_t::emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace_hint(const_iterator hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_tree.emplace_hint_equal(hint \ + { return this->base_t::emplace_hint_equal(hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));} \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) @@ -1235,28 +1100,28 @@ class multimap //! //! Complexity: Logarithmic. iterator insert(const value_type& x) - { return m_tree.insert_equal(x); } + { return this->base_t::insert_equal(x); } //! Effects: Inserts a new value constructed from x and returns //! the iterator pointing to the newly inserted element. //! //! Complexity: Logarithmic. iterator insert(const nonconst_value_type& x) - { return m_tree.insert_equal(x); } + { return this->base_t::insert_equal(x); } //! Effects: Inserts a new value move-constructed from x and returns //! the iterator pointing to the newly inserted element. //! //! Complexity: Logarithmic. iterator insert(BOOST_RV_REF(nonconst_value_type) x) - { return m_tree.insert_equal(boost::move(x)); } + { return this->base_t::insert_equal(boost::move(x)); } //! Effects: Inserts a new value move-constructed from x and returns //! the iterator pointing to the newly inserted element. //! //! Complexity: Logarithmic. iterator insert(BOOST_RV_REF(movable_value_type) x) - { return m_tree.insert_equal(boost::move(x)); } + { return this->base_t::insert_equal(boost::move(x)); } //! Effects: Inserts a copy of x in the container. //! p is a hint pointing to where the insert should start to search. @@ -1267,7 +1132,7 @@ class multimap //! Complexity: Logarithmic in general, but amortized constant if t //! is inserted right before p. iterator insert(const_iterator position, const value_type& x) - { return m_tree.insert_equal(position, x); } + { return this->base_t::insert_equal(position, x); } //! Effects: Inserts a new value constructed from x in the container. //! p is a hint pointing to where the insert should start to search. @@ -1278,7 +1143,7 @@ class multimap //! Complexity: Logarithmic in general, but amortized constant if t //! is inserted right before p. iterator insert(const_iterator position, const nonconst_value_type& x) - { return m_tree.insert_equal(position, x); } + { return this->base_t::insert_equal(position, x); } //! Effects: Inserts a new value move constructed from x in the container. //! p is a hint pointing to where the insert should start to search. @@ -1289,7 +1154,7 @@ class multimap //! Complexity: Logarithmic in general, but amortized constant if t //! is inserted right before p. iterator insert(const_iterator position, BOOST_RV_REF(nonconst_value_type) x) - { return m_tree.insert_equal(position, boost::move(x)); } + { return this->base_t::insert_equal(position, boost::move(x)); } //! Effects: Inserts a new value move constructed from x in the container. //! p is a hint pointing to where the insert should start to search. @@ -1300,7 +1165,7 @@ class multimap //! Complexity: Logarithmic in general, but amortized constant if t //! is inserted right before p. iterator insert(const_iterator position, BOOST_RV_REF(movable_value_type) x) - { return m_tree.insert_equal(position, boost::move(x)); } + { return this->base_t::insert_equal(position, boost::move(x)); } //! Requires: first, last are not iterators into *this. //! @@ -1309,182 +1174,126 @@ class multimap //! Complexity: At most N log(size()+N) (N is the distance from first to last) template void insert(InputIterator first, InputIterator last) - { m_tree.insert_equal(first, last); } + { this->base_t::insert_equal(first, last); } - //! Effects: Erases the element pointed to by position. - //! - //! Returns: Returns an iterator pointing to the element immediately - //! following q prior to the element being erased. If no such element exists, - //! returns end(). - //! - //! Complexity: Amortized constant time - iterator erase(const_iterator position) BOOST_CONTAINER_NOEXCEPT - { return m_tree.erase(position); } + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: Erases all elements in the container with key equivalent to x. - //! - //! Returns: Returns the number of erased elements. - //! - //! Complexity: log(size()) + count(k) - size_type erase(const key_type& x) BOOST_CONTAINER_NOEXCEPT - { return m_tree.erase(x); } + //! @copydoc ::boost::container::set::erase(const_iterator) + iterator erase(const_iterator p); - //! Effects: Erases all the elements in the range [first, last). - //! - //! Returns: Returns last. - //! - //! Complexity: log(size())+N where N is the distance from first to last. - iterator erase(const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT - { return m_tree.erase(first, last); } + //! @copydoc ::boost::container::set::erase(const key_type&) + size_type erase(const key_type& x); - //! Effects: Swaps the contents of *this and x. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - void swap(multimap& x) - { m_tree.swap(x.m_tree); } + //! @copydoc ::boost::container::set::erase(const_iterator,const_iterator) + iterator erase(const_iterator first, const_iterator last); - //! Effects: erase(a.begin(),a.end()). - //! - //! Postcondition: size() == 0. - //! - //! Complexity: linear in size(). - void clear() BOOST_CONTAINER_NOEXCEPT - { m_tree.clear(); } + //! @copydoc ::boost::container::set::swap + void swap(flat_multiset& x); - ////////////////////////////////////////////// - // - // observers - // - ////////////////////////////////////////////// + //! @copydoc ::boost::container::set::clear + void clear() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns the comparison object out - //! of which a was constructed. - //! - //! Complexity: Constant. - key_compare key_comp() const - { return m_tree.key_comp(); } + //! @copydoc ::boost::container::set::key_comp + key_compare key_comp() const; - //! Effects: Returns an object of value_compare constructed out - //! of the comparison object. - //! - //! Complexity: Constant. - value_compare value_comp() const - { return value_compare(m_tree.key_comp()); } - - ////////////////////////////////////////////// - // - // map operations - // - ////////////////////////////////////////////// + //! @copydoc ::boost::container::set::value_comp + value_compare value_comp() const; //! Returns: An iterator pointing to an element with the key //! equivalent to x, or end() if such an element is not found. //! //! Complexity: Logarithmic. - iterator find(const key_type& x) - { return m_tree.find(x); } + iterator find(const key_type& x); //! Returns: Allocator const iterator pointing to an element with the key //! equivalent to x, or end() if such an element is not found. //! //! Complexity: Logarithmic. - const_iterator find(const key_type& x) const - { return m_tree.find(x); } + const_iterator find(const key_type& x) const; //! Returns: The number of elements with key equivalent to x. //! //! Complexity: log(size())+count(k) - size_type count(const key_type& x) const - { return m_tree.count(x); } + size_type count(const key_type& x) const; //! Returns: An iterator pointing to the first element with key not less //! than k, or a.end() if such an element is not found. //! //! Complexity: Logarithmic - iterator lower_bound(const key_type& x) - {return m_tree.lower_bound(x); } + iterator lower_bound(const key_type& x); //! Returns: Allocator const iterator pointing to the first element with key not //! less than k, or a.end() if such an element is not found. //! //! Complexity: Logarithmic - const_iterator lower_bound(const key_type& x) const - { return m_tree.lower_bound(x); } + const_iterator lower_bound(const key_type& x) const; //! Returns: An iterator pointing to the first element with key not less //! than x, or end() if such an element is not found. //! //! Complexity: Logarithmic - iterator upper_bound(const key_type& x) - { return m_tree.upper_bound(x); } + iterator upper_bound(const key_type& x); //! Returns: Allocator const iterator pointing to the first element with key not //! less than x, or end() if such an element is not found. //! //! Complexity: Logarithmic - const_iterator upper_bound(const key_type& x) const - { return m_tree.upper_bound(x); } + const_iterator upper_bound(const key_type& x) const; //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic - std::pair equal_range(const key_type& x) - { return m_tree.equal_range(x); } + std::pair equal_range(const key_type& x); //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic - std::pair equal_range(const key_type& x) const - { return m_tree.equal_range(x); } + std::pair equal_range(const key_type& x) const; - /// @cond - template - friend bool operator== (const multimap& x, - const multimap& y); + //! Effects: Rebalances the tree. It's a no-op for Red-Black and AVL trees. + //! + //! Complexity: Linear + void rebalance(); - template - friend bool operator< (const multimap& x, - const multimap& y); - /// @endcond + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const multimap& x, const multimap& y); + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const multimap& x, const multimap& y); + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const multimap& x, const multimap& y); + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const multimap& x, const multimap& y); + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const multimap& x, const multimap& y); + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const multimap& x, const multimap& y); + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(multimap& x, multimap& y); + + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) }; -template -inline bool operator==(const multimap& x, - const multimap& y) -{ return x.m_tree == y.m_tree; } - -template -inline bool operator<(const multimap& x, - const multimap& y) -{ return x.m_tree < y.m_tree; } - -template -inline bool operator!=(const multimap& x, - const multimap& y) -{ return !(x == y); } - -template -inline bool operator>(const multimap& x, - const multimap& y) -{ return y < x; } - -template -inline bool operator<=(const multimap& x, - const multimap& y) -{ return !(y < x); } - -template -inline bool operator>=(const multimap& x, - const multimap& y) -{ return !(x < y); } - -template -inline void swap(multimap& x, multimap& y) -{ x.swap(y); } - -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED } //namespace container { @@ -1498,7 +1307,7 @@ struct has_trivial_destructor_after_move= 1200) +# pragma once +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { +namespace container { + +//!An STL node allocator that uses a modified DlMalloc as memory +//!source. +//! +//!This node allocator shares a segregated storage between all instances +//!of node_allocator with equal sizeof(T). +//! +//!NodesPerBlock is the number of nodes allocated at once when the allocator +//!runs out of nodes +#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED +template + < class T + , std::size_t NodesPerBlock = NodeAlloc_nodes_per_block> +#else +template + < class T + , std::size_t NodesPerBlock + , std::size_t Version> +#endif +class node_allocator +{ + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + //! If Version is 1, the allocator is a STL conforming allocator. If Version is 2, + //! the allocator offers advanced expand in place and burst allocation capabilities. + public: + typedef unsigned int allocation_type; + typedef node_allocator self_t; + + static const std::size_t nodes_per_block = NodesPerBlock; + + BOOST_STATIC_ASSERT((Version <=2)); + #endif + + public: + //------- + typedef T value_type; + typedef T * pointer; + typedef const T * const_pointer; + typedef typename ::boost::container:: + container_detail::unvoid::type & reference; + typedef const typename ::boost::container:: + container_detail::unvoid::type & const_reference; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + typedef boost::container::container_detail:: + version_type version; + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + typedef boost::container::container_detail:: + basic_multiallocation_chain multiallocation_chain_void; + typedef boost::container::container_detail:: + transform_multiallocation_chain + multiallocation_chain; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + + //!Obtains node_allocator from + //!node_allocator + template + struct rebind + { + typedef node_allocator< T2, NodesPerBlock + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + , Version + #endif + > other; + }; + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + private: + //!Not assignable from related node_allocator + template + node_allocator& operator= + (const node_allocator&); + + //!Not assignable from other node_allocator + node_allocator& operator=(const node_allocator&); + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + + public: + + //!Default constructor + node_allocator() BOOST_CONTAINER_NOEXCEPT + {} + + //!Copy constructor from other node_allocator. + node_allocator(const node_allocator &) BOOST_CONTAINER_NOEXCEPT + {} + + //!Copy constructor from related node_allocator. + template + node_allocator + (const node_allocator &) BOOST_CONTAINER_NOEXCEPT + {} + + //!Destructor + ~node_allocator() BOOST_CONTAINER_NOEXCEPT + {} + + //!Returns the number of elements that could be allocated. + //!Never throws + size_type max_size() const + { return size_type(-1)/sizeof(T); } + + //!Allocate memory for an array of count elements. + //!Throws std::bad_alloc if there is no enough memory + pointer allocate(size_type count, const void * = 0) + { + if(count > this->max_size()) + boost::container::throw_bad_alloc(); + + if(Version == 1 && count == 1){ + typedef container_detail::shared_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + return pointer(static_cast(singleton_t::instance().allocate_node())); + } + else{ + void *ret = boost_cont_malloc(count*sizeof(T)); + if(!ret) + boost::container::throw_bad_alloc(); + return static_cast(ret); + } + } + + //!Deallocate allocated memory. + //!Never throws + void deallocate(const pointer &ptr, size_type count) BOOST_CONTAINER_NOEXCEPT + { + (void)count; + if(Version == 1 && count == 1){ + typedef container_detail::shared_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + singleton_t::instance().deallocate_node(ptr); + } + else{ + boost_cont_free(ptr); + } + } + + //!Deallocates all free blocks of the pool + static void deallocate_free_blocks() BOOST_CONTAINER_NOEXCEPT + { + typedef container_detail::shared_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + singleton_t::instance().deallocate_free_blocks(); + } + + std::pair + allocation_command(allocation_type command, + size_type limit_size, + size_type preferred_size, + size_type &received_size, pointer reuse = pointer()) + { + BOOST_STATIC_ASSERT(( Version > 1 )); + std::pair ret = + priv_allocation_command(command, limit_size, preferred_size, received_size, reuse); + if(!ret.first && !(command & BOOST_CONTAINER_NOTHROW_ALLOCATION)) + boost::container::throw_bad_alloc(); + return ret; + } + + //!Returns maximum the number of objects the previously allocated memory + //!pointed by p can hold. + size_type size(pointer p) const BOOST_CONTAINER_NOEXCEPT + { + BOOST_STATIC_ASSERT(( Version > 1 )); + return boost_cont_size(p); + } + + //!Allocates just one object. Memory allocated with this function + //!must be deallocated only with deallocate_one(). + //!Throws bad_alloc if there is no enough memory + pointer allocate_one() + { + BOOST_STATIC_ASSERT(( Version > 1 )); + typedef container_detail::shared_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + return (pointer)singleton_t::instance().allocate_node(); + } + + //!Allocates many elements of size == 1. + //!Elements must be individually deallocated with deallocate_one() + void allocate_individual(std::size_t num_elements, multiallocation_chain &chain) + { + BOOST_STATIC_ASSERT(( Version > 1 )); + typedef container_detail::shared_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + typename shared_pool_t::multiallocation_chain ch; + singleton_t::instance().allocate_nodes(num_elements, ch); + chain.incorporate_after(chain.before_begin(), (T*)&*ch.begin(), (T*)&*ch.last(), ch.size()); + } + + //!Deallocates memory previously allocated with allocate_one(). + //!You should never use deallocate_one to deallocate memory allocated + //!with other functions different from allocate_one(). Never throws + void deallocate_one(pointer p) BOOST_CONTAINER_NOEXCEPT + { + BOOST_STATIC_ASSERT(( Version > 1 )); + typedef container_detail::shared_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + singleton_t::instance().deallocate_node(p); + } + + void deallocate_individual(multiallocation_chain &chain) BOOST_CONTAINER_NOEXCEPT + { + BOOST_STATIC_ASSERT(( Version > 1 )); + typedef container_detail::shared_node_pool + shared_pool_t; + typedef container_detail::singleton_default singleton_t; + typename shared_pool_t::multiallocation_chain ch(&*chain.begin(), &*chain.last(), chain.size()); + singleton_t::instance().deallocate_nodes(ch); + } + + //!Allocates many elements of size elem_size. + //!Elements must be individually deallocated with deallocate() + void allocate_many(size_type elem_size, std::size_t n_elements, multiallocation_chain &chain) + { + BOOST_STATIC_ASSERT(( Version > 1 )); + boost_cont_memchain ch; + BOOST_CONTAINER_MEMCHAIN_INIT(&ch); + if(!boost_cont_multialloc_nodes(n_elements, elem_size*sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, &ch)){ + boost::container::throw_bad_alloc(); + } + chain.incorporate_after( chain.before_begin() + , (T*)BOOST_CONTAINER_MEMCHAIN_LASTMEM(&ch) + , (T*)BOOST_CONTAINER_MEMCHAIN_LASTMEM(&ch) + , BOOST_CONTAINER_MEMCHAIN_SIZE(&ch)); + } + + //!Allocates n_elements elements, each one of size elem_sizes[i] + //!Elements must be individually deallocated with deallocate() + void allocate_many(const size_type *elem_sizes, size_type n_elements, multiallocation_chain &chain) + { + BOOST_STATIC_ASSERT(( Version > 1 )); + boost_cont_memchain ch; + boost_cont_multialloc_arrays(n_elements, elem_sizes, sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, &ch); + if(BOOST_CONTAINER_MEMCHAIN_EMPTY(&ch)){ + boost::container::throw_bad_alloc(); + } + chain.incorporate_after( chain.before_begin() + , (T*)BOOST_CONTAINER_MEMCHAIN_LASTMEM(&ch) + , (T*)BOOST_CONTAINER_MEMCHAIN_LASTMEM(&ch) + , BOOST_CONTAINER_MEMCHAIN_SIZE(&ch)); + } + + void deallocate_many(multiallocation_chain &chain) BOOST_CONTAINER_NOEXCEPT + { + BOOST_STATIC_ASSERT(( Version > 1 )); + void *first = &*chain.begin(); + void *last = &*chain.last(); + size_t num = chain.size(); + boost_cont_memchain ch; + BOOST_CONTAINER_MEMCHAIN_INIT_FROM(&ch, first, last, num); + boost_cont_multidealloc(&ch); + } + + //!Swaps allocators. Does not throw. If each allocator is placed in a + //!different memory segment, the result is undefined. + friend void swap(self_t &, self_t &) BOOST_CONTAINER_NOEXCEPT + {} + + //!An allocator always compares to true, as memory allocated with one + //!instance can be deallocated by another instance + friend bool operator==(const node_allocator &, const node_allocator &) BOOST_CONTAINER_NOEXCEPT + { return true; } + + //!An allocator always compares to false, as memory allocated with one + //!instance can be deallocated by another instance + friend bool operator!=(const node_allocator &, const node_allocator &) BOOST_CONTAINER_NOEXCEPT + { return false; } + + private: + std::pair priv_allocation_command + (allocation_type command, std::size_t limit_size + ,std::size_t preferred_size,std::size_t &received_size, void *reuse_ptr) + { + boost_cont_command_ret_t ret = {0 , 0}; + if(limit_size > this->max_size() || preferred_size > this->max_size()){ + //ret.first = 0; + return std::pair(pointer(), false); + } + std::size_t l_size = limit_size*sizeof(T); + std::size_t p_size = preferred_size*sizeof(T); + std::size_t r_size; + { + ret = boost_cont_allocation_command(command, sizeof(T), l_size, p_size, &r_size, reuse_ptr); + } + received_size = r_size/sizeof(T); + return std::pair(static_cast(ret.first), !!ret.second); + } +}; + +} //namespace container { +} //namespace boost { + +#include + +#endif //#ifndef BOOST_CONTAINER_POOLED_NODE_ALLOCATOR_HPP diff --git a/3party/boost/boost/container/options.hpp b/3party/boost/boost/container/options.hpp new file mode 100644 index 0000000000..11bf9deee8 --- /dev/null +++ b/3party/boost/boost/container/options.hpp @@ -0,0 +1,72 @@ +///////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2013-2013 +// +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/container for documentation. +// +///////////////////////////////////////////////////////////////////////////// + +#ifndef BOOST_CONTAINER_OPTIONS_HPP +#define BOOST_CONTAINER_OPTIONS_HPP + +#include +#include +#include + +namespace boost { +namespace container { + +#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + +template +struct tree_opt +{ + static const boost::container::tree_type_enum tree_type = TreeType; + static const bool optimize_size = OptimizeSize; +}; + +#endif //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + +//!This option setter specifies the underlying tree type +//!(red-black, AVL, Scapegoat or Splay) for ordered associative containers +BOOST_INTRUSIVE_OPTION_CONSTANT(tree_type, tree_type_enum, TreeType, tree_type) + +//!This option setter specifies if node size is optimized +//!storing rebalancing data masked into pointers for ordered associative containers +BOOST_INTRUSIVE_OPTION_CONSTANT(optimize_size, bool, Enabled, optimize_size) + +//! Helper metafunction to combine options into a single type to be used +//! by \c boost::container::set, \c boost::container::multiset +//! \c boost::container::map and \c boost::container::multimap. +//! Supported options are: \c boost::container::optimize_size and \c boost::container::tree_type +#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || defined(BOOST_CONTAINER_VARIADIC_TEMPLATES) +template +#else +template +#endif +struct tree_assoc_options +{ + /// @cond + typedef typename ::boost::intrusive::pack_options + < tree_assoc_defaults, + #if !defined(BOOST_CONTAINER_VARIADIC_TEMPLATES) + O1, O2, O3, O4 + #else + Options... + #endif + >::type packed_options; + typedef tree_opt implementation_defined; + /// @endcond + typedef implementation_defined type; +}; + +} //namespace container { +} //namespace boost { + +#include + +#endif //#ifndef BOOST_CONTAINER_OPTIONS_HPP diff --git a/3party/boost/boost/container/scoped_allocator.hpp b/3party/boost/boost/container/scoped_allocator.hpp index f9f210871b..e594c0a239 100644 --- a/3party/boost/boost/container/scoped_allocator.hpp +++ b/3party/boost/boost/container/scoped_allocator.hpp @@ -6,7 +6,7 @@ // ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -17,7 +17,7 @@ #ifndef BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_HPP #define BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_HPP -#if (defined MSC_VER) && (_MSC_VER >= 1200) +#if defined (_MSC_VER) # pragma once #endif @@ -46,8 +46,8 @@ namespace boost { namespace container { //! and if T is used in a context where a container must call such a constructor, then the program is //! ill-formed. //! -//! [Example: -//! template > +//! +//! template > //! class Z { //! public: //! typedef Allocator allocator_type; @@ -62,9 +62,9 @@ namespace boost { namespace container { //! //! // Specialize trait for class template Z //! template > -//! struct constructible_with_allocator_suffix > +//! struct constructible_with_allocator_suffix > //! : ::boost::true_type { }; -//! -- end example] +//! //! //! Note: This trait is a workaround inspired by "N2554: The Scoped Allocator Model (Rev 2)" //! (Pablo Halpern, 2008-02-29) to backport the scoped allocator model to C++03, as @@ -80,7 +80,7 @@ struct constructible_with_allocator_suffix {}; //! Remark: if a specialization is derived from true_type, indicates that T may be constructed -//! with allocator_arg and T::allocator_type as its first two constructor arguments. +//! with allocator_arg and T::allocator_type as its first two constructor arguments. //! Ideally, all constructors of T (including the copy and move constructors) should have a variant //! that accepts these two initial arguments. //! @@ -90,32 +90,32 @@ struct constructible_with_allocator_suffix //! called with these initial arguments, and if T is used in a context where a container must call such //! a constructor, then the program is ill-formed. //! -//! [Example: +//! //! template > //! class Y { //! public: //! typedef Allocator allocator_type; -//! +//! //! // Default constructor with and allocator-extended default constructor //! Y(); //! Y(allocator_arg_t, const allocator_type& a); -//! +//! //! // Copy constructor and allocator-extended copy constructor //! Y(const Y& yy); //! Y(allocator_arg_t, const allocator_type& a, const Y& yy); -//! +//! //! // Variadic constructor and allocator-extended variadic constructor //! template Y(Args&& args...); -//! template +//! template //! Y(allocator_arg_t, const allocator_type& a, Args&&... args); //! }; -//! +//! //! // Specialize trait for class template Y //! template > -//! struct constructible_with_allocator_prefix > +//! struct constructible_with_allocator_prefix > //! : ::boost::true_type { }; -//! -//! -- end example] +//! +//! //! //! Note: This trait is a workaround inspired by "N2554: The Scoped Allocator Model (Rev 2)" //! (Pablo Halpern, 2008-02-29) to backport the scoped allocator model to C++03, as @@ -130,7 +130,7 @@ struct constructible_with_allocator_prefix : ::boost::false_type {}; -///@cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace container_detail { @@ -159,7 +159,7 @@ struct uses_allocator_imp } //namespace container_detail { -///@endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! Remark: Automatically detects if T has a nested allocator_type that is convertible from //! Alloc. Meets the BinaryTypeTrait requirements ([meta.rqmts] 20.4.1). A program may @@ -173,7 +173,7 @@ struct uses_allocator : boost::integral_constant::value> {}; -///@cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace container_detail { @@ -583,8 +583,10 @@ class scoped_allocator_adaptor_base }; typedef OuterAlloc outer_allocator_type; - typedef scoped_allocator_adaptor inner_allocator_type; - typedef allocator_traits inner_traits_type; + typedef scoped_allocator_adaptor inner_allocator_type; + typedef allocator_traits inner_traits_type; + typedef scoped_allocator_adaptor + scoped_allocator_type; typedef boost::integral_constant< bool, outer_traits_type::propagate_on_container_copy_assignment::value || @@ -635,7 +637,7 @@ class scoped_allocator_adaptor_base , m_inner(other.inner_allocator()) {} - protected: + public: struct internal_type_t{}; template @@ -670,18 +672,30 @@ class scoped_allocator_adaptor_base boost::container::swap_dispatch(this->m_inner, r.inner_allocator()); } - inner_allocator_type& inner_allocator() + friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r) + { l.swap(r); } + + inner_allocator_type& inner_allocator() BOOST_CONTAINER_NOEXCEPT { return m_inner; } - inner_allocator_type const& inner_allocator() const + inner_allocator_type const& inner_allocator() const BOOST_CONTAINER_NOEXCEPT { return m_inner; } - outer_allocator_type & outer_allocator() + outer_allocator_type & outer_allocator() BOOST_CONTAINER_NOEXCEPT { return static_cast(*this); } - const outer_allocator_type &outer_allocator() const + const outer_allocator_type &outer_allocator() const BOOST_CONTAINER_NOEXCEPT { return static_cast(*this); } + scoped_allocator_type select_on_container_copy_construction() const + { + return scoped_allocator_type + (internal_type_t() + ,outer_traits_type::select_on_container_copy_construction(this->outer_allocator()) + ,inner_traits_type::select_on_container_copy_construction(this->inner_allocator()) + ); + } + private: inner_allocator_type m_inner; }; @@ -730,6 +744,11 @@ class scoped_allocator_adaptor_base inner_allocator_type; \ + typedef scoped_allocator_adaptor scoped_allocator_type; \ typedef allocator_traits inner_traits_type; \ typedef boost::integral_constant< \ bool, \ @@ -790,7 +809,7 @@ class scoped_allocator_adaptor_base \ @@ -824,6 +843,9 @@ class scoped_allocator_adaptor_basem_inner, r.inner_allocator()); \ } \ \ + friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r) \ + { l.swap(r); } \ + \ inner_allocator_type& inner_allocator() \ { return m_inner; } \ \ @@ -836,6 +858,14 @@ class scoped_allocator_adaptor_base(*this); } \ \ + scoped_allocator_type select_on_container_copy_construction() const \ + { \ + return scoped_allocator_type \ + (internal_type_t() \ + ,outer_traits_type::select_on_container_copy_construction(this->outer_allocator()) \ + ,inner_traits_type::select_on_container_copy_construction(this->inner_allocator()) \ + ); \ + } \ private: \ inner_allocator_type m_inner; \ }; \ @@ -874,6 +904,7 @@ class scoped_allocator_adaptor_base typedef OuterAlloc outer_allocator_type; typedef allocator_traits outer_traits_type; typedef scoped_allocator_adaptor inner_allocator_type; + typedef inner_allocator_type scoped_allocator_type; typedef allocator_traits inner_traits_type; typedef typename outer_traits_type:: propagate_on_container_copy_assignment propagate_on_container_copy_assignment; @@ -922,14 +953,14 @@ class scoped_allocator_adaptor_base : outer_allocator_type(other.outer_allocator()) {} - protected: + public: struct internal_type_t{}; template scoped_allocator_adaptor_base(internal_type_t, BOOST_FWD_REF(OuterA2) outerAlloc, const inner_allocator_type &) : outer_allocator_type(::boost::forward(outerAlloc)) {} - + public: scoped_allocator_adaptor_base &operator=(BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor_base) other) { @@ -948,6 +979,9 @@ class scoped_allocator_adaptor_base boost::container::swap_dispatch(this->outer_allocator(), r.outer_allocator()); } + friend void swap(scoped_allocator_adaptor_base &l, scoped_allocator_adaptor_base &r) + { l.swap(r); } + inner_allocator_type& inner_allocator() { return static_cast(*this); } @@ -959,11 +993,22 @@ class scoped_allocator_adaptor_base const outer_allocator_type &outer_allocator() const { return static_cast(*this); } + + scoped_allocator_type select_on_container_copy_construction() const + { + return scoped_allocator_type + (internal_type_t() + ,outer_traits_type::select_on_container_copy_construction(this->outer_allocator()) + //Don't use inner_traits_type::select_on_container_copy_construction(this->inner_allocator()) + //as inner_allocator() is equal to *this and that would trigger an infinite loop + , this->inner_allocator() + ); + } }; } //namespace container_detail { -///@endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //Scoped allocator #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -993,14 +1038,14 @@ class scoped_allocator_adaptor_base //! scoped_allocator_adaptor is derived from the outer allocator type so it can be //! substituted for the outer allocator type in most expressions. -end note] //! - //! In the construct member functions, `OUTERMOST(x)` is x if x does not have - //! an `outer_allocator()` member function and - //! `OUTERMOST(x.outer_allocator())` otherwise; `OUTERMOST_ALLOC_TRAITS(x)` is - //! `allocator_traits`. + //! In the construct member functions, OUTERMOST(x) is x if x does not have + //! an outer_allocator() member function and + //! OUTERMOST(x.outer_allocator()) otherwise; OUTERMOST_ALLOC_TRAITS(x) is + //! allocator_traits. //! - //! [Note: `OUTERMOST(x)` and - //! `OUTERMOST_ALLOC_TRAITS(x)` are recursive operations. It is incumbent upon - //! the definition of `outer_allocator()` to ensure that the recursion terminates. + //! [Note: OUTERMOST(x) and + //! OUTERMOST_ALLOC_TRAITS(x) are recursive operations. It is incumbent upon + //! the definition of outer_allocator() to ensure that the recursion terminates. //! It will terminate for all instantiations of scoped_allocator_adaptor. -end note] template class scoped_allocator_adaptor @@ -1031,7 +1076,7 @@ class scoped_allocator_adaptor BOOST_COPYABLE_AND_MOVABLE(scoped_allocator_adaptor) public: - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED typedef container_detail::scoped_allocator_adaptor_base base_type; - typedef typename base_type::internal_type_t internal_type_t; - /// @endcond + typedef typename base_type::internal_type_t internal_type_t; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED typedef OuterAlloc outer_allocator_type; //! Type: For exposition only //! typedef allocator_traits outer_traits_type; - //! Type: `scoped_allocator_adaptor` if `sizeof...(InnerAllocs)` is zero; otherwise, - //! `scoped_allocator_adaptor`. + //! Type: scoped_allocator_adaptor if sizeof...(InnerAllocs) is zero; otherwise, + //! scoped_allocator_adaptor. typedef typename base_type::inner_allocator_type inner_allocator_type; typedef allocator_traits inner_traits_type; typedef typename outer_traits_type::value_type value_type; @@ -1057,23 +1102,23 @@ class scoped_allocator_adaptor typedef typename outer_traits_type::const_pointer const_pointer; typedef typename outer_traits_type::void_pointer void_pointer; typedef typename outer_traits_type::const_void_pointer const_void_pointer; - //! Type: `true_type` if `allocator_traits::propagate_on_container_copy_assignment::value` is - //! true for any `Allocator` in the set of `OuterAlloc` and `InnerAllocs...`; otherwise, false_type. + //! Type: true_type if allocator_traits::propagate_on_container_copy_assignment::value is + //! true for any Allocator in the set of OuterAlloc and InnerAllocs...; otherwise, false_type. typedef typename base_type:: propagate_on_container_copy_assignment propagate_on_container_copy_assignment; - //! Type: `true_type` if `allocator_traits::propagate_on_container_move_assignment::value` is - //! true for any `Allocator` in the set of `OuterAlloc` and `InnerAllocs...`; otherwise, false_type. + //! Type: true_type if allocator_traits::propagate_on_container_move_assignment::value is + //! true for any Allocator in the set of OuterAlloc and InnerAllocs...; otherwise, false_type. typedef typename base_type:: propagate_on_container_move_assignment propagate_on_container_move_assignment; - //! Type: `true_type` if `allocator_traits::propagate_on_container_swap::value` is true for any - //! `Allocator` in the set of `OuterAlloc` and `InnerAllocs...`; otherwise, false_type. + //! Type: true_type if allocator_traits::propagate_on_container_swap::value is true for any + //! Allocator in the set of OuterAlloc and InnerAllocs...; otherwise, false_type. typedef typename base_type:: propagate_on_container_swap propagate_on_container_swap; //! Type: Rebinds scoped allocator to - //! `typedef scoped_allocator_adaptor + //! typedef scoped_allocator_adaptor //! < typename outer_traits_type::template portable_rebind_alloc::type - //! , InnerAllocs... >` + //! , InnerAllocs... > template struct rebind { @@ -1164,132 +1209,117 @@ class scoped_allocator_adaptor {} scoped_allocator_adaptor &operator=(BOOST_COPY_ASSIGN_REF(scoped_allocator_adaptor) other) - { - base_type::operator=(static_cast(other)); - return *this; - } + { return static_cast(base_type::operator=(static_cast(other))); } scoped_allocator_adaptor &operator=(BOOST_RV_REF(scoped_allocator_adaptor) other) - { - base_type::operator=(boost::move(static_cast(other))); - return *this; - } + { return static_cast(base_type::operator=(boost::move(static_cast(other)))); } + + #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED + //! Effects: swaps *this with r. + //! + void swap(scoped_allocator_adaptor &r); //! Effects: swaps *this with r. //! - void swap(scoped_allocator_adaptor &r) - { - base_type::swap(r); - } - - //! Effects: swaps *this with r. - //! - friend void swap(scoped_allocator_adaptor &l, scoped_allocator_adaptor &r) - { l.swap(r); } + friend void swap(scoped_allocator_adaptor &l, scoped_allocator_adaptor &r); //! Returns: - //! `static_cast(*this)`. - outer_allocator_type & outer_allocator() - { return *this; } + //! static_cast(*this). + outer_allocator_type & outer_allocator() BOOST_CONTAINER_NOEXCEPT; //! Returns: - //! `static_cast(*this)`. - const outer_allocator_type &outer_allocator() const - { return *this; } + //! static_cast(*this). + const outer_allocator_type &outer_allocator() const BOOST_CONTAINER_NOEXCEPT; //! Returns: - //! *this if `sizeof...(InnerAllocs)` is zero; otherwise, inner. - inner_allocator_type& inner_allocator() - { return base_type::inner_allocator(); } + //! *this if sizeof...(InnerAllocs) is zero; otherwise, inner. + inner_allocator_type& inner_allocator() BOOST_CONTAINER_NOEXCEPT; //! Returns: - //! *this if `sizeof...(InnerAllocs)` is zero; otherwise, inner. - inner_allocator_type const& inner_allocator() const - { return base_type::inner_allocator(); } + //! *this if sizeof...(InnerAllocs) is zero; otherwise, inner. + inner_allocator_type const& inner_allocator() const BOOST_CONTAINER_NOEXCEPT; + + #endif //BOOST_CONTAINER_DOXYGEN_INVOKED //! Returns: - //! `allocator_traits::max_size(outer_allocator())`. - size_type max_size() const + //! allocator_traits::max_size(outer_allocator()). + size_type max_size() const BOOST_CONTAINER_NOEXCEPT { return outer_traits_type::max_size(this->outer_allocator()); } //! Effects: - //! calls `OUTERMOST_ALLOC_TRAITS(*this)::destroy(OUTERMOST(*this), p)`. + //! calls OUTERMOST_ALLOC_TRAITS(*this)::destroy(OUTERMOST(*this), p). template - void destroy(T* p) + void destroy(T* p) BOOST_CONTAINER_NOEXCEPT { allocator_traits::type> ::destroy(get_outermost_allocator(this->outer_allocator()), p); } //! Returns: - //! `allocator_traits::allocate(outer_allocator(), n)`. + //! allocator_traits::allocate(outer_allocator(), n). pointer allocate(size_type n) { return outer_traits_type::allocate(this->outer_allocator(), n); } //! Returns: - //! `allocator_traits::allocate(outer_allocator(), n, hint)`. + //! allocator_traits::allocate(outer_allocator(), n, hint). pointer allocate(size_type n, const_void_pointer hint) { return outer_traits_type::allocate(this->outer_allocator(), n, hint); } //! Effects: - //! `allocator_traits::deallocate(outer_allocator(), p, n)`. + //! allocator_traits::deallocate(outer_allocator(), p, n). void deallocate(pointer p, size_type n) { outer_traits_type::deallocate(this->outer_allocator(), p, n); } + #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED //! Returns: Allocator new scoped_allocator_adaptor object where each allocator //! A in the adaptor is initialized from the result of calling - //! `allocator_traits::select_on_container_copy_construction()` on + //! allocator_traits::select_on_container_copy_construction() on //! the corresponding allocator in *this. - scoped_allocator_adaptor select_on_container_copy_construction() const - { - return scoped_allocator_adaptor - (internal_type_t() - ,outer_traits_type::select_on_container_copy_construction(this->outer_allocator()) - ,inner_traits_type::select_on_container_copy_construction(this->inner_allocator()) - ); - } - /// @cond + scoped_allocator_adaptor select_on_container_copy_construction() const; + #endif //BOOST_CONTAINER_DOXYGEN_INVOKED + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED base_type &base() { return *this; } const base_type &base() const { return *this; } - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: - //! 1) If `uses_allocator::value` is false calls - //! `OUTERMOST_ALLOC_TRAITS(*this)::construct - //! (OUTERMOST(*this), p, std::forward(args)...)`. + //! 1) If uses_allocator::value is false calls + //! OUTERMOST_ALLOC_TRAITS(*this)::construct + //! (OUTERMOST(*this), p, std::forward(args)...). //! - //! 2) Otherwise, if `uses_allocator::value` is true and - //! `is_constructible::value` is true, calls - //! `OUTERMOST_ALLOC_TRAITS(*this)::construct(OUTERMOST(*this), p, allocator_arg, - //! inner_allocator(), std::forward(args)...)`. + //! 2) Otherwise, if uses_allocator::value is true and + //! is_constructible::value is true, calls + //! OUTERMOST_ALLOC_TRAITS(*this)::construct(OUTERMOST(*this), p, allocator_arg, + //! inner_allocator(), std::forward(args)...). //! - //! [Note: In compilers without advanced decltype SFINAE support, `is_constructible` can't + //! [Note: In compilers without advanced decltype SFINAE support, is_constructible can't //! be implemented so that condition will be replaced by //! constructible_with_allocator_prefix::value. -end note] //! //! 3) Otherwise, if uses_allocator::value is true and - //! `is_constructible::value` is true, calls - //! `OUTERMOST_ALLOC_TRAITS(*this)::construct(OUTERMOST(*this), p, - //! std::forward(args)..., inner_allocator())`. + //! is_constructible::value is true, calls + //! OUTERMOST_ALLOC_TRAITS(*this)::construct(OUTERMOST(*this), p, + //! std::forward(args)..., inner_allocator()). //! - //! [Note: In compilers without advanced decltype SFINAE support, `is_constructible` can't be + //! [Note: In compilers without advanced decltype SFINAE support, is_constructible can't be //! implemented so that condition will be replaced by - //! `constructible_with_allocator_suffix::value`. -end note] + //! constructible_with_allocator_suffix::value. -end note] //! //! 4) Otherwise, the program is ill-formed. //! - //! [Note: An error will result if `uses_allocator` evaluates + //! [Note: An error will result if uses_allocator evaluates //! to true but the specific constructor does not take an allocator. This definition prevents a silent //! failure to pass an inner allocator to a contained element. -end note] template < typename T, class ...Args> @@ -1345,7 +1375,7 @@ class scoped_allocator_adaptor template void construct(container_detail::pair* p, BOOST_FWD_REF(U) x, BOOST_FWD_REF(V) y) { this->construct_pair(p, ::boost::forward(x), ::boost::forward(y)); } - + template void construct(std::pair* p, const std::pair& x) { this->construct_pair(p, x); } @@ -1354,7 +1384,7 @@ class scoped_allocator_adaptor void construct( container_detail::pair* p , const container_detail::pair& x) { this->construct_pair(p, x); } - + template void construct( std::pair* p , BOOST_RV_REF_BEG std::pair BOOST_RV_REF_END x) @@ -1365,7 +1395,7 @@ class scoped_allocator_adaptor , BOOST_RV_REF_BEG container_detail::pair BOOST_RV_REF_END x) { this->construct_pair(p, x); } - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: template void construct_pair(Pair* p) @@ -1426,13 +1456,14 @@ class scoped_allocator_adaptor //template //void construct(pair* p, piecewise_construct_t, tuple x, tuple y); - private: + public: + //Internal function template scoped_allocator_adaptor(internal_type_t, BOOST_FWD_REF(OuterA2) outer, const inner_allocator_type& inner) : base_type(internal_type_t(), ::boost::forward(outer), inner) {} - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; template & b) { - #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) const bool has_zero_inner = sizeof...(InnerAllocs) == 0u; #else const bool has_zero_inner = diff --git a/3party/boost/boost/container/scoped_allocator_fwd.hpp b/3party/boost/boost/container/scoped_allocator_fwd.hpp index ef2479933f..f19e27e885 100644 --- a/3party/boost/boost/container/scoped_allocator_fwd.hpp +++ b/3party/boost/boost/container/scoped_allocator_fwd.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2011-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2011-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,11 @@ #ifndef BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_FWD_HPP #define BOOST_CONTAINER_ALLOCATOR_SCOPED_ALLOCATOR_FWD_HPP -#if (defined MSC_VER) && (_MSC_VER >= 1200) +//! \file +//! This header file forward declares boost::container::scoped_allocator_adaptor +//! and defines the following types: + +#if defined(_MSC_VER) # pragma once #endif @@ -25,7 +29,7 @@ namespace boost { namespace container { -///@cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) @@ -55,7 +59,7 @@ class scoped_allocator_adaptor; #endif -///@endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! The allocator_arg_t struct is an empty structure type used as a unique type to //! disambiguate constructor and function overloading. Specifically, several types diff --git a/3party/boost/boost/container/set.hpp b/3party/boost/boost/container/set.hpp index 0b4937610e..93a02d0faf 100644 --- a/3party/boost/boost/container/set.hpp +++ b/3party/boost/boost/container/set.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,7 @@ #ifndef BOOST_CONTAINER_SET_HPP #define BOOST_CONTAINER_SET_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -35,16 +35,7 @@ namespace boost { namespace container { -/// @cond -// Forward declarations of operators < and ==, needed for friend declaration. -template -inline bool operator==(const set& x, - const set& y); - -template -inline bool operator<(const set& x, - const set& y); -/// @endcond +#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED //! A set is a kind of associative container that supports unique keys (contains at //! most one of each key value) and provides for fast retrieval of the keys themselves. @@ -53,20 +44,27 @@ inline bool operator<(const set& x, //! A set satisfies all of the requirements of a container and of a reversible container //! , and of an associative container. A set also provides most operations described in //! for unique keys. -#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED -template , class Allocator = std::allocator > +//! +//! \tparam Key is the type to be inserted in the set, which is also the key_type +//! \tparam Compare is the comparison functor used to order keys +//! \tparam Allocator is the allocator to be used to allocate memory for this container +//! \tparam SetOptions is an packed option type generated using using boost::container::tree_assoc_options. +template , class Allocator = std::allocator, class SetOptions = tree_assoc_defaults > #else -template +template #endif class set + ///@cond + : public container_detail::tree + < Key, Key, container_detail::identity, Compare, Allocator, SetOptions> + ///@endcond { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(set) - typedef container_detail::rbtree, Compare, Allocator> tree_t; - tree_t m_tree; // red-black tree representing set - /// @endcond + typedef container_detail::tree + < Key, Key, container_detail::identity, Compare, Allocator, SetOptions> base_t; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -78,6 +76,7 @@ class set typedef Key value_type; typedef Compare key_compare; typedef Compare value_compare; + typedef ::boost::container::allocator_traits allocator_traits_type; typedef typename ::boost::container::allocator_traits::pointer pointer; typedef typename ::boost::container::allocator_traits::const_pointer const_pointer; typedef typename ::boost::container::allocator_traits::reference reference; @@ -85,11 +84,11 @@ class set typedef typename ::boost::container::allocator_traits::size_type size_type; typedef typename ::boost::container::allocator_traits::difference_type difference_type; typedef Allocator allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::iterator) iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_iterator) const_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::reverse_iterator) reverse_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_reverse_iterator) const_reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::reverse_iterator) reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_reverse_iterator) const_reverse_iterator; ////////////////////////////////////////////// // @@ -101,7 +100,7 @@ class set //! //! Complexity: Constant. set() - : m_tree() + : base_t() {} //! Effects: Constructs an empty set using the specified comparison object @@ -110,7 +109,14 @@ class set //! Complexity: Constant. explicit set(const Compare& comp, const allocator_type& a = allocator_type()) - : m_tree(comp, a) + : base_t(comp, a) + {} + + //! Effects: Constructs an empty set using the specified allocator object. + //! + //! Complexity: Constant. + explicit set(const allocator_type& a) + : base_t(a) {} //! Effects: Constructs an empty set using the specified comparison object and @@ -121,7 +127,7 @@ class set template set(InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_tree(true, first, last, comp, a) + : base_t(true, first, last, comp, a) {} //! Effects: Constructs an empty set using the specified comparison object and @@ -132,17 +138,19 @@ class set //! unique values. //! //! Complexity: Linear in N. + //! + //! Note: Non-standard extension. template set( ordered_unique_range_t, InputIterator first, InputIterator last , const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_tree(ordered_range, first, last, comp, a) + : base_t(ordered_range, first, last, comp, a) {} //! Effects: Copy constructs a set. //! //! Complexity: Linear in x.size(). set(const set& x) - : m_tree(x.m_tree) + : base_t(static_cast(x)) {} //! Effects: Move constructs a set. Constructs *this using x's resources. @@ -151,14 +159,14 @@ class set //! //! Postcondition: x is emptied. set(BOOST_RV_REF(set) x) - : m_tree(boost::move(x.m_tree)) + : base_t(boost::move(static_cast(x))) {} //! Effects: Copy constructs a set using the specified allocator. //! //! Complexity: Linear in x.size(). set(const set& x, const allocator_type &a) - : m_tree(x.m_tree, a) + : base_t(static_cast(x), a) {} //! Effects: Move constructs a set using the specified allocator. @@ -166,27 +174,34 @@ class set //! //! Complexity: Constant if a == x.get_allocator(), linear otherwise. set(BOOST_RV_REF(set) x, const allocator_type &a) - : m_tree(boost::move(x.m_tree), a) + : base_t(boost::move(static_cast(x)), a) {} //! Effects: Makes *this a copy of x. //! //! Complexity: Linear in x.size(). set& operator=(BOOST_COPY_ASSIGN_REF(set) x) - { m_tree = x.m_tree; return *this; } + { return static_cast(this->base_t::operator=(static_cast(x))); } //! Effects: this->swap(x.get()). //! - //! Complexity: Constant. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or value_type's move constructor throws) + //! + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. set& operator=(BOOST_RV_REF(set) x) - { m_tree = boost::move(x.m_tree); return *this; } + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) + { return static_cast(this->base_t::operator=(boost::move(static_cast(x)))); } + + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: Returns a copy of the Allocator that //! was passed to the object's constructor. //! //! Complexity: Constant. - allocator_type get_allocator() const - { return m_tree.get_allocator(); } + allocator_type get_allocator() const; //! Effects: Returns a reference to the internal allocator. //! @@ -195,8 +210,7 @@ class set //! Complexity: Constant. //! //! Note: Non-standard extension. - const stored_allocator_type &get_stored_allocator() const - { return m_tree.get_stored_allocator(); } + stored_allocator_type &get_stored_allocator(); //! Effects: Returns a reference to the internal allocator. //! @@ -205,46 +219,49 @@ class set //! Complexity: Constant. //! //! Note: Non-standard extension. - stored_allocator_type &get_stored_allocator() - { return m_tree.get_stored_allocator(); } - - ////////////////////////////////////////////// - // - // capacity - // - ////////////////////////////////////////////// + const stored_allocator_type &get_stored_allocator() const; //! Effects: Returns an iterator to the first element contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant - iterator begin() - { return m_tree.begin(); } + iterator begin(); //! Effects: Returns a const_iterator to the first element contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - const_iterator begin() const - { return m_tree.begin(); } + const_iterator begin() const; + + //! Effects: Returns a const_iterator to the first element contained in the container. + //! + //! Throws: Nothing. + //! + //! Complexity: Constant. + const_iterator cbegin() const; //! Effects: Returns an iterator to the end of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - iterator end() - { return m_tree.end(); } + iterator end(); //! Effects: Returns a const_iterator to the end of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - const_iterator end() const - { return m_tree.end(); } + const_iterator end() const; + + //! Effects: Returns a const_iterator to the end of the container. + //! + //! Throws: Nothing. + //! + //! Complexity: Constant. + const_iterator cend() const; //! Effects: Returns a reverse_iterator pointing to the beginning //! of the reversed container. @@ -252,8 +269,7 @@ class set //! Throws: Nothing. //! //! Complexity: Constant. - reverse_iterator rbegin() - { return m_tree.rbegin(); } + reverse_iterator rbegin(); //! Effects: Returns a const_reverse_iterator pointing to the beginning //! of the reversed container. @@ -261,8 +277,15 @@ class set //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator rbegin() const - { return m_tree.rbegin(); } + const_reverse_iterator rbegin() const; + + //! Effects: Returns a const_reverse_iterator pointing to the beginning + //! of the reversed container. + //! + //! Throws: Nothing. + //! + //! Complexity: Constant. + const_reverse_iterator crbegin() const; //! Effects: Returns a reverse_iterator pointing to the end //! of the reversed container. @@ -270,8 +293,7 @@ class set //! Throws: Nothing. //! //! Complexity: Constant. - reverse_iterator rend() - { return m_tree.rend(); } + reverse_iterator rend(); //! Effects: Returns a const_reverse_iterator pointing to the end //! of the reversed container. @@ -279,33 +301,7 @@ class set //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator rend() const - { return m_tree.rend(); } - - //! Effects: Returns a const_iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cbegin() const - { return m_tree.cbegin(); } - - //! Effects: Returns a const_iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cend() const - { return m_tree.cend(); } - - //! Effects: Returns a const_reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator crbegin() const - { return m_tree.crbegin(); } + const_reverse_iterator rend() const; //! Effects: Returns a const_reverse_iterator pointing to the end //! of the reversed container. @@ -313,44 +309,29 @@ class set //! Throws: Nothing. //! //! Complexity: Constant. - const_reverse_iterator crend() const - { return m_tree.crend(); } - - ////////////////////////////////////////////// - // - // capacity - // - ////////////////////////////////////////////// + const_reverse_iterator crend() const; //! Effects: Returns true if the container contains no elements. //! //! Throws: Nothing. //! //! Complexity: Constant. - bool empty() const - { return m_tree.empty(); } + bool empty() const; //! Effects: Returns the number of the elements contained in the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - size_type size() const - { return m_tree.size(); } + size_type size() const; //! Effects: Returns the largest possible size of the container. //! //! Throws: Nothing. //! //! Complexity: Constant. - size_type max_size() const - { return m_tree.max_size(); } - - ////////////////////////////////////////////// - // - // modifiers - // - ////////////////////////////////////////////// + size_type max_size() const; + #endif // #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -370,7 +351,7 @@ class set //! Complexity: Logarithmic. template std::pair emplace(Args&&... args) - { return m_tree.emplace_unique(boost::forward(args)...); } + { return this->base_t::emplace_unique(boost::forward(args)...); } //! Effects: Inserts an object of type Key constructed with //! std::forward(args)... if and only if there is @@ -383,19 +364,19 @@ class set //! Complexity: Logarithmic. template iterator emplace_hint(const_iterator hint, Args&&... args) - { return m_tree.emplace_hint_unique(hint, boost::forward(args)...); } + { return this->base_t::emplace_hint_unique(hint, boost::forward(args)...); } #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING #define BOOST_PP_LOCAL_MACRO(n) \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ std::pair emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_tree.emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ + { return this->base_t::emplace_unique(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); }\ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace_hint(const_iterator hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_tree.emplace_hint_unique(hint \ + { return this->base_t::emplace_hint_unique(hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));} \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) @@ -450,7 +431,7 @@ class set //! Complexity: Logarithmic. iterator insert(const_iterator position, value_type &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator, const_iterator) #endif //! Requires: first, last are not iterators into *this. @@ -461,7 +442,9 @@ class set //! Complexity: At most N log(size()+N) (N is the distance from first to last) template void insert(InputIterator first, InputIterator last) - { m_tree.insert_unique(first, last); } + { this->base_t::insert_unique(first, last); } + + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: Erases the element pointed to by p. //! @@ -470,203 +453,197 @@ class set //! returns end(). //! //! Complexity: Amortized constant time - iterator erase(const_iterator p) - { return m_tree.erase(p); } + iterator erase(const_iterator p); //! Effects: Erases all elements in the container with key equivalent to x. //! //! Returns: Returns the number of erased elements. //! //! Complexity: log(size()) + count(k) - size_type erase(const key_type& x) - { return m_tree.erase(x); } + size_type erase(const key_type& x); //! Effects: Erases all the elements in the range [first, last). //! //! Returns: Returns last. //! //! Complexity: log(size())+N where N is the distance from first to last. - iterator erase(const_iterator first, const_iterator last) - { return m_tree.erase(first, last); } + iterator erase(const_iterator first, const_iterator last); //! Effects: Swaps the contents of *this and x. //! //! Throws: Nothing. //! //! Complexity: Constant. - void swap(set& x) - { m_tree.swap(x.m_tree); } + void swap(set& x); //! Effects: erase(a.begin(),a.end()). //! //! Postcondition: size() == 0. //! //! Complexity: linear in size(). - void clear() - { m_tree.clear(); } - - ////////////////////////////////////////////// - // - // observers - // - ////////////////////////////////////////////// + void clear(); //! Effects: Returns the comparison object out //! of which a was constructed. //! //! Complexity: Constant. - key_compare key_comp() const - { return m_tree.key_comp(); } + key_compare key_comp() const; //! Effects: Returns an object of value_compare constructed out //! of the comparison object. //! //! Complexity: Constant. - value_compare value_comp() const - { return m_tree.key_comp(); } - - ////////////////////////////////////////////// - // - // set operations - // - ////////////////////////////////////////////// + value_compare value_comp() const; //! Returns: An iterator pointing to an element with the key //! equivalent to x, or end() if such an element is not found. //! //! Complexity: Logarithmic. - iterator find(const key_type& x) - { return m_tree.find(x); } + iterator find(const key_type& x); //! Returns: Allocator const_iterator pointing to an element with the key //! equivalent to x, or end() if such an element is not found. //! //! Complexity: Logarithmic. - const_iterator find(const key_type& x) const - { return m_tree.find(x); } + const_iterator find(const key_type& x) const; + + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Returns: The number of elements with key equivalent to x. //! //! Complexity: log(size())+count(k) size_type count(const key_type& x) const - { return m_tree.find(x) == m_tree.end() ? 0 : 1; } + { return static_cast(this->base_t::find(x) != this->base_t::cend()); } + + //! Returns: The number of elements with key equivalent to x. + //! + //! Complexity: log(size())+count(k) + size_type count(const key_type& x) + { return static_cast(this->base_t::find(x) != this->base_t::end()); } + + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Returns: An iterator pointing to the first element with key not less //! than k, or a.end() if such an element is not found. //! //! Complexity: Logarithmic - iterator lower_bound(const key_type& x) - { return m_tree.lower_bound(x); } + iterator lower_bound(const key_type& x); //! Returns: Allocator const iterator pointing to the first element with key not //! less than k, or a.end() if such an element is not found. //! //! Complexity: Logarithmic - const_iterator lower_bound(const key_type& x) const - { return m_tree.lower_bound(x); } + const_iterator lower_bound(const key_type& x) const; //! Returns: An iterator pointing to the first element with key not less //! than x, or end() if such an element is not found. //! //! Complexity: Logarithmic - iterator upper_bound(const key_type& x) - { return m_tree.upper_bound(x); } + iterator upper_bound(const key_type& x); //! Returns: Allocator const iterator pointing to the first element with key not //! less than x, or end() if such an element is not found. //! //! Complexity: Logarithmic - const_iterator upper_bound(const key_type& x) const - { return m_tree.upper_bound(x); } + const_iterator upper_bound(const key_type& x) const; + + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic std::pair equal_range(const key_type& x) - { return m_tree.equal_range(x); } + { return this->base_t::lower_bound_range(x); } //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). //! //! Complexity: Logarithmic std::pair equal_range(const key_type& x) const - { return m_tree.equal_range(x); } + { return this->base_t::lower_bound_range(x); } - /// @cond - template - friend bool operator== (const set&, const set&); + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - template - friend bool operator< (const set&, const set&); + //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). + //! + //! Complexity: Logarithmic + std::pair equal_range(const key_type& x); + //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). + //! + //! Complexity: Logarithmic + std::pair equal_range(const key_type& x) const; + + //! Effects: Rebalances the tree. It's a no-op for Red-Black and AVL trees. + //! + //! Complexity: Linear + void rebalance(); + + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const set& x, const set& y); + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const set& x, const set& y); + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const set& x, const set& y); + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const set& x, const set& y); + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const set& x, const set& y); + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const set& x, const set& y); + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(set& x, set& y); + + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: template std::pair priv_insert(BOOST_FWD_REF(KeyType) x) - { return m_tree.insert_unique(::boost::forward(x)); } + { return this->base_t::insert_unique(::boost::forward(x)); } template iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x) - { return m_tree.insert_unique(p, ::boost::forward(x)); } - /// @endcond + { return this->base_t::insert_unique(p, ::boost::forward(x)); } + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool operator==(const set& x, - const set& y) -{ return x.m_tree == y.m_tree; } - -template -inline bool operator<(const set& x, - const set& y) -{ return x.m_tree < y.m_tree; } - -template -inline bool operator!=(const set& x, - const set& y) -{ return !(x == y); } - -template -inline bool operator>(const set& x, - const set& y) -{ return y < x; } - -template -inline bool operator<=(const set& x, - const set& y) -{ return !(y < x); } - -template -inline bool operator>=(const set& x, - const set& y) -{ return !(x < y); } - -template -inline void swap(set& x, set& y) -{ x.swap(y); } - -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED } //namespace container { //!has_trivial_destructor_after_move<> == true_type //!specialization for optimizations -template -struct has_trivial_destructor_after_move > +template +struct has_trivial_destructor_after_move > { static const bool value = has_trivial_destructor_after_move::value && has_trivial_destructor_after_move::value; }; namespace container { -// Forward declaration of operators < and ==, needed for friend declaration. +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED -template -inline bool operator==(const multiset& x, - const multiset& y); - -template -inline bool operator<(const multiset& x, - const multiset& y); -/// @endcond +#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED //! A multiset is a kind of associative container that supports equivalent keys //! (possibly contains multiple copies of the same key value) and provides for @@ -675,20 +652,27 @@ inline bool operator<(const multiset& x, //! A multiset satisfies all of the requirements of a container and of a reversible //! container, and of an associative container). multiset also provides most operations //! described for duplicate keys. -#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED -template , class Allocator = std::allocator > +//! +//! \tparam Key is the type to be inserted in the set, which is also the key_type +//! \tparam Compare is the comparison functor used to order keys +//! \tparam Allocator is the allocator to be used to allocate memory for this container +//! \tparam MultiSetOptions is an packed option type generated using using boost::container::tree_assoc_options. +template , class Allocator = std::allocator, class MultiSetOptions = tree_assoc_defaults > #else -template +template #endif class multiset -{ /// @cond + : public container_detail::tree + , Compare, Allocator, MultiSetOptions> + /// @endcond +{ + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(multiset) - typedef container_detail::rbtree, Compare, Allocator> tree_t; - tree_t m_tree; // red-black tree representing multiset - /// @endcond + typedef container_detail::tree + , Compare, Allocator, MultiSetOptions> base_t; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: @@ -701,6 +685,7 @@ class multiset typedef Key value_type; typedef Compare key_compare; typedef Compare value_compare; + typedef ::boost::container::allocator_traits allocator_traits_type; typedef typename ::boost::container::allocator_traits::pointer pointer; typedef typename ::boost::container::allocator_traits::const_pointer const_pointer; typedef typename ::boost::container::allocator_traits::reference reference; @@ -708,11 +693,11 @@ class multiset typedef typename ::boost::container::allocator_traits::size_type size_type; typedef typename ::boost::container::allocator_traits::difference_type difference_type; typedef Allocator allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::stored_allocator_type) stored_allocator_type; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::iterator) iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_iterator) const_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::reverse_iterator) reverse_iterator; - typedef typename BOOST_CONTAINER_IMPDEF(tree_t::const_reverse_iterator) const_reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::stored_allocator_type) stored_allocator_type; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::iterator) iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_iterator) const_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::reverse_iterator) reverse_iterator; + typedef typename BOOST_CONTAINER_IMPDEF(base_t::const_reverse_iterator) const_reverse_iterator; ////////////////////////////////////////////// // @@ -720,33 +705,28 @@ class multiset // ////////////////////////////////////////////// - //! Effects: Constructs an empty multiset using the specified comparison - //! object and allocator. - //! - //! Complexity: Constant. + //! @copydoc ::boost::container::set::set() multiset() - : m_tree() + : base_t() {} - //! Effects: Constructs an empty multiset using the specified comparison - //! object and allocator. - //! - //! Complexity: Constant. + //! @copydoc ::boost::container::set::set(const Compare&, const allocator_type&) explicit multiset(const Compare& comp, const allocator_type& a = allocator_type()) - : m_tree(comp, a) + : base_t(comp, a) {} - //! Effects: Constructs an empty multiset using the specified comparison object - //! and allocator, and inserts elements from the range [first ,last ). - //! - //! Complexity: Linear in N if the range [first ,last ) is already sorted using - //! comp and otherwise N logN, where N is last - first. + //! @copydoc ::boost::container::set::set(const allocator_type&) + explicit multiset(const allocator_type& a) + : base_t(a) + {} + + //! @copydoc ::boost::container::set::set(InputIterator, InputIterator, const Compare& comp, const allocator_type&) template multiset(InputIterator first, InputIterator last, const Compare& comp = Compare(), const allocator_type& a = allocator_type()) - : m_tree(false, first, last, comp, a) + : base_t(false, first, last, comp, a) {} //! Effects: Constructs an empty multiset using the specified comparison object and @@ -756,228 +736,100 @@ class multiset //! Requires: [first ,last) must be ordered according to the predicate. //! //! Complexity: Linear in N. + //! + //! Note: Non-standard extension. template multiset( ordered_range_t, InputIterator first, InputIterator last , const Compare& comp = Compare() , const allocator_type& a = allocator_type()) - : m_tree(ordered_range, first, last, comp, a) + : base_t(ordered_range, first, last, comp, a) {} - //! Effects: Copy constructs a multiset. - //! - //! Complexity: Linear in x.size(). + //! @copydoc ::boost::container::set::set(const set &) multiset(const multiset& x) - : m_tree(x.m_tree) + : base_t(static_cast(x)) {} - //! Effects: Move constructs a multiset. Constructs *this using x's resources. - //! - //! Complexity: Constant. - //! - //! Postcondition: x is emptied. + //! @copydoc ::boost::container::set(set &&) multiset(BOOST_RV_REF(multiset) x) - : m_tree(boost::move(x.m_tree)) + : base_t(boost::move(static_cast(x))) {} - //! Effects: Copy constructs a multiset using the specified allocator. - //! - //! Complexity: Linear in x.size(). + //! @copydoc ::boost::container::set(const set &, const allocator_type &) multiset(const multiset& x, const allocator_type &a) - : m_tree(x.m_tree, a) + : base_t(static_cast(x), a) {} - //! Effects: Move constructs a multiset using the specified allocator. - //! Constructs *this using x's resources. - //! - //! Complexity: Constant if a == x.get_allocator(), linear otherwise. - //! - //! Postcondition: x is emptied. + //! @copydoc ::boost::container::set(set &&, const allocator_type &) multiset(BOOST_RV_REF(multiset) x, const allocator_type &a) - : m_tree(boost::move(x.m_tree), a) + : base_t(boost::move(static_cast(x)), a) {} - //! Effects: Makes *this a copy of x. - //! - //! Complexity: Linear in x.size(). + //! @copydoc ::boost::container::set::operator=(const set &) multiset& operator=(BOOST_COPY_ASSIGN_REF(multiset) x) - { m_tree = x.m_tree; return *this; } + { return static_cast(this->base_t::operator=(static_cast(x))); } - //! Effects: this->swap(x.get()). - //! - //! Complexity: Constant. + //! @copydoc ::boost::container::set::operator=(set &&) multiset& operator=(BOOST_RV_REF(multiset) x) - { m_tree = boost::move(x.m_tree); return *this; } + { return static_cast(this->base_t::operator=(boost::move(static_cast(x)))); } - //! Effects: Returns a copy of the Allocator that - //! was passed to the object's constructor. - //! - //! Complexity: Constant. - allocator_type get_allocator() const - { return m_tree.get_allocator(); } + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: Returns a reference to the internal allocator. - //! - //! Throws: Nothing - //! - //! Complexity: Constant. - //! - //! Note: Non-standard extension. - stored_allocator_type &get_stored_allocator() - { return m_tree.get_stored_allocator(); } + //! @copydoc ::boost::container::set::get_allocator() + allocator_type get_allocator() const; - //! Effects: Returns a reference to the internal allocator. - //! - //! Throws: Nothing - //! - //! Complexity: Constant. - //! - //! Note: Non-standard extension. - const stored_allocator_type &get_stored_allocator() const - { return m_tree.get_stored_allocator(); } + //! @copydoc ::boost::container::set::get_stored_allocator() + stored_allocator_type &get_stored_allocator(); - ////////////////////////////////////////////// - // - // iterators - // - ////////////////////////////////////////////// + //! @copydoc ::boost::container::set::get_stored_allocator() const + const stored_allocator_type &get_stored_allocator() const; - //! Effects: Returns an iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - iterator begin() - { return m_tree.begin(); } + //! @copydoc ::boost::container::set::begin() + iterator begin(); - //! Effects: Returns a const_iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator begin() const - { return m_tree.begin(); } + //! @copydoc ::boost::container::set::begin() const + const_iterator begin() const; - //! Effects: Returns an iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - iterator end() - { return m_tree.end(); } + //! @copydoc ::boost::container::set::cbegin() const + const_iterator cbegin() const; - //! Effects: Returns a const_iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator end() const - { return m_tree.end(); } + //! @copydoc ::boost::container::set::end() + iterator end() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - reverse_iterator rbegin() - { return m_tree.rbegin(); } + //! @copydoc ::boost::container::set::end() const + const_iterator end() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator rbegin() const - { return m_tree.rbegin(); } + //! @copydoc ::boost::container::set::cend() const + const_iterator cend() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - reverse_iterator rend() - { return m_tree.rend(); } + //! @copydoc ::boost::container::set::rbegin() + reverse_iterator rbegin() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator rend() const - { return m_tree.rend(); } + //! @copydoc ::boost::container::set::rbegin() const + const_reverse_iterator rbegin() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_iterator to the first element contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cbegin() const - { return m_tree.cbegin(); } + //! @copydoc ::boost::container::set::crbegin() const + const_reverse_iterator crbegin() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_iterator to the end of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_iterator cend() const - { return m_tree.cend(); } + //! @copydoc ::boost::container::set::rend() + reverse_iterator rend() BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the beginning - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator crbegin() const - { return m_tree.crbegin(); } + //! @copydoc ::boost::container::set::rend() const + const_reverse_iterator rend() const BOOST_CONTAINER_NOEXCEPT; - //! Effects: Returns a const_reverse_iterator pointing to the end - //! of the reversed container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - const_reverse_iterator crend() const - { return m_tree.crend(); } + //! @copydoc ::boost::container::set::crend() const + const_reverse_iterator crend() const BOOST_CONTAINER_NOEXCEPT; - ////////////////////////////////////////////// - // - // capacity - // - ////////////////////////////////////////////// + //! @copydoc ::boost::container::set::empty() const + bool empty() const; - //! Effects: Returns true if the container contains no elements. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - bool empty() const - { return m_tree.empty(); } + //! @copydoc ::boost::container::set::size() const + size_type size() const; - //! Effects: Returns the number of the elements contained in the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - size_type size() const - { return m_tree.size(); } + //! @copydoc ::boost::container::set::max_size() const + size_type max_size() const; - //! Effects: Returns the largest possible size of the container. - //! - //! Throws: Nothing. - //! - //! Complexity: Constant. - size_type max_size() const - { return m_tree.max_size(); } - - ////////////////////////////////////////////// - // - // modifiers - // - ////////////////////////////////////////////// + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) #if defined(BOOST_CONTAINER_PERFECT_FORWARDING) || defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -988,7 +840,7 @@ class multiset //! Complexity: Logarithmic. template iterator emplace(Args&&... args) - { return m_tree.emplace_equal(boost::forward(args)...); } + { return this->base_t::emplace_equal(boost::forward(args)...); } //! Effects: Inserts an object of type Key constructed with //! std::forward(args)... @@ -1000,19 +852,19 @@ class multiset //! is inserted right before p. template iterator emplace_hint(const_iterator hint, Args&&... args) - { return m_tree.emplace_hint_equal(hint, boost::forward(args)...); } + { return this->base_t::emplace_hint_equal(hint, boost::forward(args)...); } #else //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING #define BOOST_PP_LOCAL_MACRO(n) \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_tree.emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ + { return this->base_t::emplace_equal(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); } \ \ BOOST_PP_EXPR_IF(n, template<) BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IF(n, >) \ iterator emplace_hint(const_iterator hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ - { return m_tree.emplace_hint_equal(hint \ + { return this->base_t::emplace_hint_equal(hint \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _));} \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) @@ -1020,9 +872,6 @@ class multiset #endif //#ifdef BOOST_CONTAINER_PERFECT_FORWARDING - - - #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Effects: Inserts x and returns the iterator pointing to the //! newly inserted element. @@ -1063,7 +912,7 @@ class multiset //! is inserted right before p. iterator insert(const_iterator position, value_type &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, value_type, iterator, this->priv_insert, const_iterator, const_iterator) #endif //! Requires: first, last are not iterators into *this. @@ -1073,204 +922,126 @@ class multiset //! Complexity: At most N log(size()+N) (N is the distance from first to last) template void insert(InputIterator first, InputIterator last) - { m_tree.insert_equal(first, last); } + { this->base_t::insert_equal(first, last); } - //! Effects: Erases the element pointed to by p. - //! - //! Returns: Returns an iterator pointing to the element immediately - //! following q prior to the element being erased. If no such element exists, - //! returns end(). - //! - //! Complexity: Amortized constant time - iterator erase(const_iterator p) - { return m_tree.erase(p); } + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: Erases all elements in the container with key equivalent to x. - //! - //! Returns: Returns the number of erased elements. - //! - //! Complexity: log(size()) + count(k) - size_type erase(const key_type& x) - { return m_tree.erase(x); } + //! @copydoc ::boost::container::set::erase(const_iterator) + iterator erase(const_iterator p); - //! Effects: Erases all the elements in the range [first, last). - //! - //! Returns: Returns last. - //! - //! Complexity: log(size())+N where N is the distance from first to last. - iterator erase(const_iterator first, const_iterator last) - { return m_tree.erase(first, last); } + //! @copydoc ::boost::container::set::erase(const key_type&) + size_type erase(const key_type& x); - //! Effects: Swaps the contents of *this and x. + //! @copydoc ::boost::container::set::erase(const_iterator,const_iterator) + iterator erase(const_iterator first, const_iterator last); + + //! @copydoc ::boost::container::set::swap + void swap(flat_multiset& x); + + //! @copydoc ::boost::container::set::clear + void clear() BOOST_CONTAINER_NOEXCEPT; + + //! @copydoc ::boost::container::set::key_comp + key_compare key_comp() const; + + //! @copydoc ::boost::container::set::value_comp + value_compare value_comp() const; + + //! @copydoc ::boost::container::set::find(const key_type& ) + iterator find(const key_type& x); + + //! @copydoc ::boost::container::set::find(const key_type& ) const + const_iterator find(const key_type& x) const; + + //! @copydoc ::boost::container::set::count(const key_type& ) const + size_type count(const key_type& x) const; + + //! @copydoc ::boost::container::set::lower_bound(const key_type& ) + iterator lower_bound(const key_type& x); + + //! @copydoc ::boost::container::set::lower_bound(const key_type& ) const + const_iterator lower_bound(const key_type& x) const; + + //! @copydoc ::boost::container::set::upper_bound(const key_type& ) + iterator upper_bound(const key_type& x); + + //! @copydoc ::boost::container::set::upper_bound(const key_type& ) const + const_iterator upper_bound(const key_type& x) const; + + //! @copydoc ::boost::container::set::equal_range(const key_type& ) const + std::pair equal_range(const key_type& x) const; + + //! @copydoc ::boost::container::set::equal_range(const key_type& ) + std::pair equal_range(const key_type& x); + + //! @copydoc ::boost::container::set::rebalance() + void rebalance(); + + //! Effects: Returns true if x and y are equal //! - //! Throws: Nothing. + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const multiset& x, const multiset& y); + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const multiset& x, const multiset& y); + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const multiset& x, const multiset& y); + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const multiset& x, const multiset& y); + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const multiset& x, const multiset& y); + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const multiset& x, const multiset& y); + + //! Effects: x.swap(y) //! //! Complexity: Constant. - void swap(multiset& x) - { m_tree.swap(x.m_tree); } + friend void swap(multiset& x, multiset& y); - //! Effects: erase(a.begin(),a.end()). - //! - //! Postcondition: size() == 0. - //! - //! Complexity: linear in size(). - void clear() - { m_tree.clear(); } + #endif //#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - ////////////////////////////////////////////// - // - // observers - // - ////////////////////////////////////////////// - - //! Effects: Returns the comparison object out - //! of which a was constructed. - //! - //! Complexity: Constant. - key_compare key_comp() const - { return m_tree.key_comp(); } - - //! Effects: Returns an object of value_compare constructed out - //! of the comparison object. - //! - //! Complexity: Constant. - value_compare value_comp() const - { return m_tree.key_comp(); } - - ////////////////////////////////////////////// - // - // set operations - // - ////////////////////////////////////////////// - - //! Returns: An iterator pointing to an element with the key - //! equivalent to x, or end() if such an element is not found. - //! - //! Complexity: Logarithmic. - iterator find(const key_type& x) - { return m_tree.find(x); } - - //! Returns: Allocator const iterator pointing to an element with the key - //! equivalent to x, or end() if such an element is not found. - //! - //! Complexity: Logarithmic. - const_iterator find(const key_type& x) const - { return m_tree.find(x); } - - //! Returns: The number of elements with key equivalent to x. - //! - //! Complexity: log(size())+count(k) - size_type count(const key_type& x) const - { return m_tree.count(x); } - - //! Returns: An iterator pointing to the first element with key not less - //! than k, or a.end() if such an element is not found. - //! - //! Complexity: Logarithmic - iterator lower_bound(const key_type& x) - { return m_tree.lower_bound(x); } - - //! Returns: Allocator const iterator pointing to the first element with key not - //! less than k, or a.end() if such an element is not found. - //! - //! Complexity: Logarithmic - const_iterator lower_bound(const key_type& x) const - { return m_tree.lower_bound(x); } - - //! Returns: An iterator pointing to the first element with key not less - //! than x, or end() if such an element is not found. - //! - //! Complexity: Logarithmic - iterator upper_bound(const key_type& x) - { return m_tree.upper_bound(x); } - - //! Returns: Allocator const iterator pointing to the first element with key not - //! less than x, or end() if such an element is not found. - //! - //! Complexity: Logarithmic - const_iterator upper_bound(const key_type& x) const - { return m_tree.upper_bound(x); } - - //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). - //! - //! Complexity: Logarithmic - std::pair equal_range(const key_type& x) - { return m_tree.equal_range(x); } - - //! Effects: Equivalent to std::make_pair(this->lower_bound(k), this->upper_bound(k)). - //! - //! Complexity: Logarithmic - std::pair equal_range(const key_type& x) const - { return m_tree.equal_range(x); } - - /// @cond - template - friend bool operator== (const multiset&, - const multiset&); - template - friend bool operator< (const multiset&, - const multiset&); + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: template iterator priv_insert(BOOST_FWD_REF(KeyType) x) - { return m_tree.insert_equal(::boost::forward(x)); } + { return this->base_t::insert_equal(::boost::forward(x)); } template iterator priv_insert(const_iterator p, BOOST_FWD_REF(KeyType) x) - { return m_tree.insert_equal(p, ::boost::forward(x)); } + { return this->base_t::insert_equal(p, ::boost::forward(x)); } - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool operator==(const multiset& x, - const multiset& y) -{ return x.m_tree == y.m_tree; } - -template -inline bool operator<(const multiset& x, - const multiset& y) -{ return x.m_tree < y.m_tree; } - -template -inline bool operator!=(const multiset& x, - const multiset& y) -{ return !(x == y); } - -template -inline bool operator>(const multiset& x, - const multiset& y) -{ return y < x; } - -template -inline bool operator<=(const multiset& x, - const multiset& y) -{ return !(y < x); } - -template -inline bool operator>=(const multiset& x, - const multiset& y) -{ return !(x < y); } - -template -inline void swap(multiset& x, multiset& y) -{ x.swap(y); } - -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED } //namespace container { //!has_trivial_destructor_after_move<> == true_type //!specialization for optimizations -template -struct has_trivial_destructor_after_move > +template +struct has_trivial_destructor_after_move > { static const bool value = has_trivial_destructor_after_move::value && has_trivial_destructor_after_move::value; }; namespace container { -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }} diff --git a/3party/boost/boost/container/slist.hpp b/3party/boost/boost/container/slist.hpp index a9a4f67781..6941d29ed2 100644 --- a/3party/boost/boost/container/slist.hpp +++ b/3party/boost/boost/container/slist.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2004-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2004-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,7 @@ #ifndef BOOST_CONTAINER_SLIST_HPP #define BOOST_CONTAINER_SLIST_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -47,7 +48,7 @@ namespace boost { namespace container { -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED template class slist; @@ -69,8 +70,16 @@ struct slist_node slist_node(); public: + typedef T value_type; typedef typename slist_hook::type hook_type; + T m_data; + + T &get_data() + { return this->m_data; } + + const T &get_data() const + { return this->m_data; } }; template @@ -95,96 +104,9 @@ struct intrusive_slist_type typedef container_type type ; }; -template -class slist_const_iterator - : public std::iterator< std::forward_iterator_tag, T - , typename iiterator_types::difference_type - , typename iiterator_types::const_pointer - , typename iiterator_types::const_reference> -{ - protected: - - IIterator m_it; - - public: - typedef typename iiterator_types::const_pointer const_pointer; - typedef typename iiterator_types::const_reference const_reference; - - //Constructors - slist_const_iterator() - : m_it() - {} - - explicit slist_const_iterator(const IIterator &it) - : m_it(it) - {} - - //Pointer like operators - const_reference operator*() const - { return this->m_it->m_data; } - - const_pointer operator->() const - { return ::boost::intrusive::pointer_traits::pointer_to(this->m_it->m_data); } - - //Increment / Decrement - slist_const_iterator& operator++() - { ++this->m_it; return *this; } - - slist_const_iterator operator++(int) - { IIterator tmp = this->m_it; ++*this; return slist_const_iterator(tmp); } - - //Comparison operators - friend bool operator== (const slist_const_iterator& l, const slist_const_iterator& r) - { return l.m_it == r.m_it; } - - friend bool operator!= (const slist_const_iterator& l, const slist_const_iterator& r) - { return l.m_it != r.m_it; } - - const IIterator &get() const - { return this->m_it; } -}; - -template -class slist_iterator - : public slist_const_iterator -{ - private: - typedef slist_const_iterator const_iterator; - - public: - typedef typename iiterator_types::pointer pointer; - typedef typename iiterator_types::reference reference; - - //Constructors - slist_iterator() - : const_iterator() - {} - - explicit slist_iterator(const IIterator &it) - : const_iterator(it) - {} - - //Pointer like operators - reference operator*() const - { return this->m_it->m_data; } - - pointer operator->() const - { return ::boost::intrusive::pointer_traits::pointer_to(this->m_it->m_data); } - - //Increment / Decrement - slist_iterator& operator++() - { ++this->m_it; return *this; } - - slist_iterator operator++(int) - { IIterator tmp = this->m_it; ++*this; return slist_iterator(tmp); } - - const IIterator &get() const - { return this->m_it; } -}; - } //namespace container_detail { -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! An slist is a singly linked list: a list where each element is linked to the next //! element, but not to the previous element. That is, it is a Sequence that @@ -218,6 +140,9 @@ class slist_iterator //! possible. If you find that insert_after and erase_after aren't adequate for your //! needs, and that you often need to use insert and erase in the middle of the list, //! then you should probably use list instead of slist. +//! +//! \tparam T The type of object that is stored in the list +//! \tparam Allocator The allocator used for all internal memory management #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED template > #else @@ -227,7 +152,7 @@ class slist : protected container_detail::node_alloc_holder ::type> { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED typedef typename container_detail::intrusive_slist_type::type Icont; typedef container_detail::node_alloc_holder AllocHolder; @@ -271,9 +196,9 @@ class slist }; BOOST_COPYABLE_AND_MOVABLE(slist) - typedef container_detail::slist_iterator iterator_impl; - typedef container_detail::slist_const_iteratorconst_iterator_impl; - /// @endcond + typedef container_detail::iterator iterator_impl; + typedef container_detail::iterator const_iterator_impl; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -327,7 +252,7 @@ class slist //! Effects: Constructs a list that will use a copy of allocator a //! and inserts n copies of value. //! - //! Throws: If allocator_type's default constructor or copy constructor + //! Throws: If allocator_type's default constructor //! throws or T's default or copy constructor throws. //! //! Complexity: Linear to n. @@ -338,8 +263,8 @@ class slist //! Effects: Constructs a list that will use a copy of allocator a //! and inserts a copy of the range [first, last) in the list. //! - //! Throws: If allocator_type's default constructor or copy constructor - //! throws or T's constructor taking an dereferenced InIt throws. + //! Throws: If allocator_type's default constructor + //! throws or T's constructor taking a dereferenced InIt throws. //! //! Complexity: Linear to the range [first, last). template @@ -351,7 +276,7 @@ class slist //! //! Postcondition: x == *this. //! - //! Throws: If allocator_type's default constructor or copy constructor throws. + //! Throws: If allocator_type's default constructor //! //! Complexity: Linear to the elements x contains. slist(const slist& x) @@ -371,7 +296,7 @@ class slist //! //! Postcondition: x == *this. //! - //! Throws: If allocator_type's default constructor or copy constructor throws. + //! Throws: If allocator_type's default constructor //! //! Complexity: Linear to the elements x contains. slist(const slist& x, const allocator_type &a) @@ -391,7 +316,7 @@ class slist this->icont().swap(x.icont()); } else{ - this->insert(this->cbegin(), x.begin(), x.end()); + this->insert_after(this->cbefore_begin(), x.begin(), x.end()); } } @@ -433,28 +358,35 @@ class slist //! Postcondition: this->size() == x.size(). *this contains a copy //! of each of x's elements. //! - //! Throws: If memory allocation throws or T's copy constructor throws. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or value_type's move constructor throws) //! - //! Complexity: Linear to the number of elements in x. + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. slist& operator= (BOOST_RV_REF(slist) x) + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) { - if (&x != this){ - NodeAlloc &this_alloc = this->node_alloc(); - NodeAlloc &x_alloc = x.node_alloc(); - //If allocators a re equal we can just swap pointers - if(this_alloc == x_alloc){ - //Destroy and swap pointers - this->clear(); - this->icont() = boost::move(x.icont()); - //Move allocator if needed - this->AllocHolder::move_assign_alloc(x); - } - //If unequal allocators, then do a one by one move - else{ - typedef typename std::iterator_traits::iterator_category ItCat; - this->assign( boost::make_move_iterator(x.begin()) - , boost::make_move_iterator(x.end())); - } + BOOST_ASSERT(this != &x); + NodeAlloc &this_alloc = this->node_alloc(); + NodeAlloc &x_alloc = x.node_alloc(); + const bool propagate_alloc = allocator_traits_type:: + propagate_on_container_move_assignment::value; + const bool allocators_equal = this_alloc == x_alloc; (void)allocators_equal; + //Resources can be transferred if both allocators are + //going to be equal after this function (either propagated or already equal) + if(propagate_alloc || allocators_equal){ + //Destroy + this->clear(); + //Move allocator if needed + this->AllocHolder::move_assign_alloc(x); + //Obtain resources + this->icont() = boost::move(x.icont()); + } + //Else do a one by one move + else{ + this->assign( boost::make_move_iterator(x.begin()) + , boost::make_move_iterator(x.end())); } return *this; } @@ -667,7 +599,7 @@ class slist { return AllocHolder::max_size(); } //! Effects: Inserts or erases elements at the end such that - //! the size becomes n. New elements are default constructed. + //! the size becomes n. New elements are value initialized. //! //! Throws: If memory allocation throws, or T's copy constructor throws. //! @@ -676,8 +608,8 @@ class slist { const_iterator last_pos; if(!priv_try_shrink(new_size, last_pos)){ - typedef default_construct_iterator default_iterator; - this->insert_after(last_pos, default_iterator(new_size - this->size()), default_iterator()); + typedef value_init_construct_iterator value_init_iterator; + this->insert_after(last_pos, value_init_iterator(new_size - this->size()), value_init_iterator()); } } @@ -832,7 +764,7 @@ class slist //! previous values. iterator insert_after(const_iterator prev_pos, T &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert_after, T, iterator, priv_insert_after, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert_after, T, iterator, priv_insert_after, const_iterator, const_iterator) #endif //! Requires: prev_pos must be a valid iterator of *this. @@ -1345,7 +1277,7 @@ class slist //! Complexity: Linear to the elements before p. iterator insert(const_iterator prev_pos, T &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator, const_iterator) #endif //! Requires: p must be a valid iterator of *this. @@ -1363,7 +1295,7 @@ class slist this->insert_after(prev, n, x); return ++iterator(prev.get()); } - + //! Requires: p must be a valid iterator of *this. //! //! Effects: Insert a copy of the [first, last) range before p. @@ -1502,14 +1434,70 @@ class slist void splice(const_iterator p, BOOST_RV_REF(slist) x, const_iterator first, const_iterator last) BOOST_CONTAINER_NOEXCEPT { this->splice(p, static_cast(x), first, last); } - /// @cond + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const slist& x, const slist& y) + { + if(x.size() != y.size()){ + return false; + } + typedef typename slist::const_iterator const_iterator; + const_iterator end1 = x.end(); + + const_iterator i1 = x.begin(); + const_iterator i2 = y.begin(); + while (i1 != end1 && *i1 == *i2){ + ++i1; + ++i2; + } + return i1 == end1; + } + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const slist& x, const slist& y) + { return !(x == y); } + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const slist& x, const slist& y) + { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const slist& x, const slist& y) + { return y < x; } + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const slist& x, const slist& y) + { return !(y < x); } + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const slist& x, const slist& y) + { return !(x < y); } + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(slist& x, slist& y) + { x.swap(y); } + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: - void priv_push_front (const T &x) - { this->insert(this->cbegin(), x); } + void priv_push_front (const T &x) + { this->insert_after(this->cbefore_begin(), x); } void priv_push_front (BOOST_RV_REF(T) x) - { this->insert(this->cbegin(), ::boost::move(x)); } + { this->insert_after(this->cbefore_begin(), ::boost::move(x)); } bool priv_try_shrink(size_type new_size, const_iterator &last_pos) { @@ -1584,63 +1572,12 @@ class slist const value_type &m_ref; }; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool -operator==(const slist& x, const slist& y) -{ - if(x.size() != y.size()){ - return false; - } - typedef typename slist::const_iterator const_iterator; - const_iterator end1 = x.end(); - - const_iterator i1 = x.begin(); - const_iterator i2 = y.begin(); - while (i1 != end1 && *i1 == *i2){ - ++i1; - ++i2; - } - return i1 == end1; -} - -template -inline bool -operator<(const slist& sL1, const slist& sL2) -{ - return std::lexicographical_compare - (sL1.begin(), sL1.end(), sL2.begin(), sL2.end()); -} - -template -inline bool -operator!=(const slist& sL1, const slist& sL2) - { return !(sL1 == sL2); } - -template -inline bool -operator>(const slist& sL1, const slist& sL2) - { return sL2 < sL1; } - -template -inline bool -operator<=(const slist& sL1, const slist& sL2) - { return !(sL2 < sL1); } - -template -inline bool -operator>=(const slist& sL1, const slist& sL2) - { return !(sL1 < sL2); } - -template -inline void swap(slist& x, slist& y) - { x.swap(y); } - }} -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace boost { @@ -1653,14 +1590,14 @@ struct has_trivial_destructor_after_move > namespace container { -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }} //namespace boost{ namespace container { // Specialization of insert_iterator so that insertions will be constant // time rather than linear time. -///@cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //Ummm, I don't like to define things in namespace std, but //there is no other way @@ -1699,7 +1636,7 @@ class insert_iterator > } //namespace std; -///@endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #include diff --git a/3party/boost/boost/container/stable_vector.hpp b/3party/boost/boost/container/stable_vector.hpp index 3da8c6413c..5348b935bb 100644 --- a/3party/boost/boost/container/stable_vector.hpp +++ b/3party/boost/boost/container/stable_vector.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2008-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -19,15 +19,13 @@ #ifndef BOOST_CONTAINER_STABLE_VECTOR_HPP #define BOOST_CONTAINER_STABLE_VECTOR_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif #include #include #include -#include -#include #include #include #include @@ -47,18 +45,18 @@ #include #include //placement new -///@cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #include //#define STABLE_VECTOR_ENABLE_INVARIANT_CHECKING -///@endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace boost { namespace container { -///@cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace stable_vector_detail{ @@ -77,7 +75,7 @@ class clear_on_destroy { if(do_clear_){ c_.clear(); - c_.priv_clear_pool(); + c_.priv_clear_pool(); } } @@ -88,7 +86,7 @@ class clear_on_destroy bool do_clear_; }; -template +template struct node; template @@ -116,167 +114,18 @@ struct node_base node_base_ptr_ptr up; }; -template +template struct node - : public node_base + : public node_base + ::template + rebind_pointer::type + > { private: node(); public: - T value; -}; - -template -class iterator - : public std::iterator< std::random_access_iterator_tag - , T - , typename boost::intrusive:: - pointer_traits::difference_type - , Pointer - , Reference> -{ - typedef boost::intrusive:: - pointer_traits ptr_traits; - typedef typename ptr_traits::template - rebind_pointer::type void_ptr; - typedef node node_type; - typedef node_base node_base_type; - typedef typename ptr_traits::template - rebind_pointer::type node_ptr; - typedef boost::intrusive:: - pointer_traits node_ptr_traits; - typedef typename ptr_traits::template - rebind_pointer::type node_base_ptr; - typedef typename ptr_traits::template - rebind_pointer::type node_base_ptr_ptr; - typedef typename ptr_traits::template - rebind_pointer::type friend_iterator_pointer; - - friend class iterator; - - public: - typedef std::random_access_iterator_tag iterator_category; - typedef T value_type; - typedef typename ptr_traits::difference_type difference_type; - typedef Pointer pointer; - typedef Reference reference; - - iterator() - {} - - explicit iterator(node_ptr p) - : pn(p) - {} - - iterator(const iterator& x) - : pn(x.pn) - {} - - node_ptr &node_pointer() - { return pn; } - - const node_ptr &node_pointer() const - { return pn; } - - public: - //Pointer like operators - reference operator*() const - { return pn->value; } - - pointer operator->() const - { return ptr_traits::pointer_to(this->operator*()); } - - //Increment / Decrement - iterator& operator++() - { - if(node_base_ptr_ptr p = this->pn->up){ - ++p; - this->pn = node_ptr_traits::static_cast_from(*p); - } - return *this; - } - - iterator operator++(int) - { iterator tmp(*this); ++*this; return iterator(tmp); } - - iterator& operator--() - { - if(node_base_ptr_ptr p = this->pn->up){ - --p; - this->pn = node_ptr_traits::static_cast_from(*p); - } - return *this; - } - - iterator operator--(int) - { iterator tmp(*this); --*this; return iterator(tmp); } - - reference operator[](difference_type off) const - { - iterator tmp(*this); - tmp += off; - return *tmp; - } - - iterator& operator+=(difference_type off) - { - if(node_base_ptr_ptr p = this->pn->up){ - p += off; - this->pn = node_ptr_traits::static_cast_from(*p); - } - return *this; - } - - friend iterator operator+(const iterator &left, difference_type off) - { - iterator tmp(left); - tmp += off; - return tmp; - } - - friend iterator operator+(difference_type off, const iterator& right) - { - iterator tmp(right); - tmp += off; - return tmp; - } - - iterator& operator-=(difference_type off) - { *this += -off; return *this; } - - friend iterator operator-(const iterator &left, difference_type off) - { - iterator tmp(left); - tmp -= off; - return tmp; - } - - friend difference_type operator-(const iterator& left, const iterator& right) - { - return left.pn->up - right.pn->up; - } - - //Comparison operators - friend bool operator== (const iterator& l, const iterator& r) - { return l.pn == r.pn; } - - friend bool operator!= (const iterator& l, const iterator& r) - { return l.pn != r.pn; } - - friend bool operator< (const iterator& l, const iterator& r) - { return l.pn->up < r.pn->up; } - - friend bool operator<= (const iterator& l, const iterator& r) - { return l.pn->up <= r.pn->up; } - - friend bool operator> (const iterator& l, const iterator& r) - { return l.pn->up > r.pn->up; } - - friend bool operator>= (const iterator& l, const iterator& r) - { return l.pn->up >= r.pn->up; } - - node_ptr pn; + typename ::boost::intrusive::pointer_traits::element_type value; }; template @@ -354,7 +203,6 @@ struct index_traits } } - #ifdef STABLE_VECTOR_ENABLE_INVARIANT_CHECKING static bool invariants(index_type &index) { @@ -373,23 +221,153 @@ struct index_traits } //namespace stable_vector_detail -#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) +template +class stable_vector_iterator +{ + typedef boost::intrusive::pointer_traits non_const_ptr_traits; + public: + typedef std::random_access_iterator_tag iterator_category; + typedef typename non_const_ptr_traits::element_type value_type; + typedef typename non_const_ptr_traits::difference_type difference_type; + typedef typename ::boost::container::container_detail::if_c + < IsConst + , typename non_const_ptr_traits::template + rebind_pointer::type + , Pointer + >::type pointer; + typedef boost::intrusive::pointer_traits ptr_traits; + typedef typename ptr_traits::reference reference; + + private: + typedef typename non_const_ptr_traits::template + rebind_pointer::type void_ptr; + typedef stable_vector_detail::node node_type; + typedef stable_vector_detail::node_base node_base_type; + typedef typename non_const_ptr_traits::template + rebind_pointer::type node_ptr; + typedef boost::intrusive:: + pointer_traits node_ptr_traits; + typedef typename non_const_ptr_traits::template + rebind_pointer::type node_base_ptr; + typedef typename non_const_ptr_traits::template + rebind_pointer::type node_base_ptr_ptr; + + node_base_ptr m_pn; + + public: + + explicit stable_vector_iterator(node_base_ptr p) BOOST_CONTAINER_NOEXCEPT + : m_pn(p) + {} + + stable_vector_iterator() BOOST_CONTAINER_NOEXCEPT + {} + + stable_vector_iterator(stable_vector_iterator const& other) BOOST_CONTAINER_NOEXCEPT + : m_pn(other.node_pointer()) + {} + + node_ptr node_pointer() const BOOST_CONTAINER_NOEXCEPT + { return node_ptr_traits::static_cast_from(m_pn); } + + public: + //Pointer like operators + reference operator*() const BOOST_CONTAINER_NOEXCEPT + { return node_pointer()->value; } + + pointer operator->() const BOOST_CONTAINER_NOEXCEPT + { return ptr_traits::pointer_to(this->operator*()); } + + //Increment / Decrement + stable_vector_iterator& operator++() BOOST_CONTAINER_NOEXCEPT + { + node_base_ptr_ptr p(this->m_pn->up); + this->m_pn = *(++p); + return *this; + } + + stable_vector_iterator operator++(int) BOOST_CONTAINER_NOEXCEPT + { stable_vector_iterator tmp(*this); ++*this; return stable_vector_iterator(tmp); } + + stable_vector_iterator& operator--() BOOST_CONTAINER_NOEXCEPT + { + node_base_ptr_ptr p(this->m_pn->up); + this->m_pn = *(--p); + return *this; + } + + stable_vector_iterator operator--(int) BOOST_CONTAINER_NOEXCEPT + { stable_vector_iterator tmp(*this); --*this; return stable_vector_iterator(tmp); } + + reference operator[](difference_type off) const BOOST_CONTAINER_NOEXCEPT + { return node_ptr_traits::static_cast_from(this->m_pn->up[off])->value; } + + stable_vector_iterator& operator+=(difference_type off) BOOST_CONTAINER_NOEXCEPT + { + if(off) this->m_pn = this->m_pn->up[off]; + return *this; + } + + friend stable_vector_iterator operator+(const stable_vector_iterator &left, difference_type off) BOOST_CONTAINER_NOEXCEPT + { + stable_vector_iterator tmp(left); + tmp += off; + return tmp; + } + + friend stable_vector_iterator operator+(difference_type off, const stable_vector_iterator& right) BOOST_CONTAINER_NOEXCEPT + { + stable_vector_iterator tmp(right); + tmp += off; + return tmp; + } + + stable_vector_iterator& operator-=(difference_type off) BOOST_CONTAINER_NOEXCEPT + { *this += -off; return *this; } + + friend stable_vector_iterator operator-(const stable_vector_iterator &left, difference_type off) BOOST_CONTAINER_NOEXCEPT + { + stable_vector_iterator tmp(left); + tmp -= off; + return tmp; + } + + friend difference_type operator-(const stable_vector_iterator& left, const stable_vector_iterator& right) BOOST_CONTAINER_NOEXCEPT + { return left.m_pn->up - right.m_pn->up; } + + //Comparison operators + friend bool operator== (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_pn == r.m_pn; } + + friend bool operator!= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_pn != r.m_pn; } + + friend bool operator< (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_pn->up < r.m_pn->up; } + + friend bool operator<= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_pn->up <= r.m_pn->up; } + + friend bool operator> (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_pn->up > r.m_pn->up; } + + friend bool operator>= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_CONTAINER_NOEXCEPT + { return l.m_pn->up >= r.m_pn->up; } +}; #if defined(STABLE_VECTOR_ENABLE_INVARIANT_CHECKING) - #define STABLE_VECTOR_CHECK_INVARIANT \ - invariant_checker BOOST_JOIN(check_invariant_,__LINE__)(*this); \ - BOOST_JOIN(check_invariant_,__LINE__).touch(); + #define STABLE_VECTOR_CHECK_INVARIANT \ + invariant_checker BOOST_JOIN(check_invariant_,__LINE__)(*this); \ + BOOST_JOIN(check_invariant_,__LINE__).touch(); #else //STABLE_VECTOR_ENABLE_INVARIANT_CHECKING - #define STABLE_VECTOR_CHECK_INVARIANT + #define STABLE_VECTOR_CHECK_INVARIANT #endif //#if defined(STABLE_VECTOR_ENABLE_INVARIANT_CHECKING) -#endif //#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! Originally developed by Joaquin M. Lopez Munoz, stable_vector is a std::vector //! drop-in replacement implemented as a node container, offering iterator and reference @@ -422,6 +400,9 @@ struct index_traits //! //! Exception safety: As stable_vector does not internally copy elements around, some //! operations provide stronger exception safety guarantees than in std::vector. +//! +//! \tparam T The type of object that is stored in the stable_vector +//! \tparam Allocator The allocator used for all internal memory management #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED template > #else @@ -429,10 +410,12 @@ template #endif class stable_vector { - ///@cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED typedef allocator_traits allocator_traits_type; - typedef typename boost::intrusive::pointer_traits - :: + typedef boost::intrusive:: + pointer_traits + ptr_traits; + typedef typename ptr_traits:: template rebind_pointer::type void_ptr; typedef typename allocator_traits_type:: template portable_rebind_alloc @@ -451,10 +434,8 @@ class stable_vector typedef typename index_traits_type::index_iterator index_iterator; typedef typename index_traits_type:: const_index_iterator const_index_iterator; - typedef boost::intrusive:: - pointer_traits - ptr_traits; - typedef stable_vector_detail::node node_type; + typedef stable_vector_detail::node + node_type; typedef typename ptr_traits::template rebind_pointer::type node_ptr; typedef boost::intrusive:: @@ -494,15 +475,13 @@ class stable_vector { allocator_version_traits_t::deallocate_individual(this->priv_node_alloc(), holder); } friend class stable_vector_detail::clear_on_destroy; - typedef stable_vector_detail::iterator - < T - , typename allocator_traits::reference - , typename allocator_traits::pointer> iterator_impl; - typedef stable_vector_detail::iterator - < T - , typename allocator_traits::const_reference - , typename allocator_traits::const_pointer> const_iterator_impl; - ///@endcond + typedef stable_vector_iterator + < typename allocator_traits::pointer + , false> iterator_impl; + typedef stable_vector_iterator + < typename allocator_traits::pointer + , false> const_iterator_impl; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -524,7 +503,7 @@ class stable_vector typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator) reverse_iterator; typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator) const_reverse_iterator; - ///@cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(stable_vector) static const size_type ExtraPointers = index_traits_type::ExtraPointers; @@ -534,7 +513,7 @@ class stable_vector class push_back_rollback; friend class push_back_rollback; - ///@endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -566,9 +545,9 @@ class stable_vector } //! Effects: Constructs a stable_vector that will use a copy of allocator a - //! and inserts n default contructed values. + //! and inserts n value initialized values. //! - //! Throws: If allocator_type's default constructor or copy constructor + //! Throws: If allocator_type's default constructor //! throws or T's default or copy constructor throws. //! //! Complexity: Linear to n. @@ -581,10 +560,28 @@ class stable_vector cod.release(); } + //! Effects: Constructs a stable_vector that will use a copy of allocator a + //! and inserts n default initialized values. + //! + //! Throws: If allocator_type's default constructor + //! throws or T's default or copy constructor throws. + //! + //! Complexity: Linear to n. + //! + //! Note: Non-standard extension + stable_vector(size_type n, default_init_t) + : internal_data(), index() + { + stable_vector_detail::clear_on_destroy cod(*this); + this->resize(n, default_init); + STABLE_VECTOR_CHECK_INVARIANT; + cod.release(); + } + //! Effects: Constructs a stable_vector that will use a copy of allocator a //! and inserts n copies of value. //! - //! Throws: If allocator_type's default constructor or copy constructor + //! Throws: If allocator_type's default constructor //! throws or T's default or copy constructor throws. //! //! Complexity: Linear to n. @@ -600,8 +597,8 @@ class stable_vector //! Effects: Constructs a stable_vector that will use a copy of allocator a //! and inserts a copy of the range [first, last) in the stable_vector. //! - //! Throws: If allocator_type's default constructor or copy constructor - //! throws or T's constructor taking an dereferenced InIt throws. + //! Throws: If allocator_type's default constructor + //! throws or T's constructor taking a dereferenced InIt throws. //! //! Complexity: Linear to the range [first, last). template @@ -685,7 +682,7 @@ class stable_vector ~stable_vector() { this->clear(); - this->priv_clear_pool(); + this->priv_clear_pool(); } //! Effects: Makes *this contain the same elements as x. @@ -720,35 +717,42 @@ class stable_vector //! Postcondition: x.empty(). *this contains a the elements x had //! before the function. //! - //! Throws: If allocator_type's copy constructor throws. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or T's move constructor throws) //! - //! Complexity: Linear. + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. stable_vector& operator=(BOOST_RV_REF(stable_vector) x) + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) { - if (&x != this){ - node_allocator_type &this_alloc = this->priv_node_alloc(); - node_allocator_type &x_alloc = x.priv_node_alloc(); - //If allocators are equal we can just swap pointers - if(this_alloc == x_alloc){ - //Destroy objects but retain memory - this->clear(); - this->index = boost::move(x.index); - this->priv_swap_members(x); - //Move allocator if needed - container_detail::bool_ flag; - container_detail::move_alloc(this->priv_node_alloc(), x.priv_node_alloc(), flag); - } - //If unequal allocators, then do a one by one move - else{ - this->assign( boost::make_move_iterator(x.begin()) - , boost::make_move_iterator(x.end())); - } + //for move constructor, no aliasing (&x != this) is assummed. + BOOST_ASSERT(this != &x); + node_allocator_type &this_alloc = this->priv_node_alloc(); + node_allocator_type &x_alloc = x.priv_node_alloc(); + const bool propagate_alloc = allocator_traits_type:: + propagate_on_container_move_assignment::value; + container_detail::bool_ flag; + const bool allocators_equal = this_alloc == x_alloc; (void)allocators_equal; + //Resources can be transferred if both allocators are + //going to be equal after this function (either propagated or already equal) + if(propagate_alloc || allocators_equal){ + //Destroy objects but retain memory in case x reuses it in the future + this->clear(); + //Move allocator if needed + container_detail::move_alloc(this_alloc, x_alloc, flag); + //Take resources + this->index = boost::move(x.index); + this->priv_swap_members(x); + } + //Else do a one by one move + else{ + this->assign( boost::make_move_iterator(x.begin()) + , boost::make_move_iterator(x.end())); } return *this; } - //! Effects: Assigns the n copies of val to *this. //! //! Throws: If memory allocation throws or T's copy constructor throws. @@ -958,17 +962,35 @@ class stable_vector { return this->index.max_size() - ExtraPointers; } //! Effects: Inserts or erases elements at the end such that - //! the size becomes n. New elements are default constructed. + //! the size becomes n. New elements are value initialized. //! - //! Throws: If memory allocation throws, or T's copy constructor throws. + //! Throws: If memory allocation throws, or T's value initialization throws. //! //! Complexity: Linear to the difference between size() and new_size. void resize(size_type n) { - typedef default_construct_iterator default_iterator; + typedef value_init_construct_iterator value_init_iterator; STABLE_VECTOR_CHECK_INVARIANT; if(n > this->size()) - this->insert(this->cend(), default_iterator(n - this->size()), default_iterator()); + this->insert(this->cend(), value_init_iterator(n - this->size()), value_init_iterator()); + else if(n < this->size()) + this->erase(this->cbegin() + n, this->cend()); + } + + //! Effects: Inserts or erases elements at the end such that + //! the size becomes n. New elements are default initialized. + //! + //! Throws: If memory allocation throws, or T's default initialization throws. + //! + //! Complexity: Linear to the difference between size() and new_size. + //! + //! Note: Non-standard extension + void resize(size_type n, default_init_t) + { + typedef default_init_construct_iterator default_init_iterator; + STABLE_VECTOR_CHECK_INVARIANT; + if(n > this->size()) + this->insert(this->cend(), default_init_iterator(n - this->size()), default_init_iterator()); else if(n < this->size()) this->erase(this->cbegin() + n, this->cend()); } @@ -1020,7 +1042,7 @@ class stable_vector throw_length_error("stable_vector::reserve max_size() exceeded"); } - size_type sz = this->size(); + size_type sz = this->size(); size_type old_capacity = this->capacity(); if(n > old_capacity){ index_traits_type::initialize_end_node(this->index, this->internal_data.end_node, n); @@ -1304,7 +1326,7 @@ class stable_vector //! Linear time otherwise. iterator insert(const_iterator position, T &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator, const_iterator) #endif //! Requires: pos must be a valid iterator of *this. @@ -1472,8 +1494,49 @@ class stable_vector void clear() BOOST_CONTAINER_NOEXCEPT { this->erase(this->cbegin(),this->cend()); } - /// @cond + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const stable_vector& x, const stable_vector& y) + { return x.size() == y.size() && std::equal(x.begin(), x.end(), y.begin()); } + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const stable_vector& x, const stable_vector& y) + { return !(x == y); } + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const stable_vector& x, const stable_vector& y) + { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const stable_vector& x, const stable_vector& y) + { return y < x; } + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const stable_vector& x, const stable_vector& y) + { return !(y < x); } + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const stable_vector& x, const stable_vector& y) + { return !(x < y); } + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(stable_vector& x, stable_vector& y) + { x.swap(y); } + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: class insert_rollback @@ -1674,11 +1737,8 @@ class stable_vector return ret; } - node_ptr priv_get_end_node() const - { - return node_ptr_traits::pointer_to - (static_cast(const_cast(this->internal_data.end_node))); - } + node_base_ptr priv_get_end_node() const + { return node_base_ptr_traits::pointer_to(const_cast(this->internal_data.end_node)); } void priv_destroy_node(const node_type &n) { @@ -1798,58 +1858,14 @@ class stable_vector const node_allocator_type &priv_node_alloc() const { return internal_data; } index_type index; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -bool operator==(const stable_vector& x,const stable_vector& y) -{ - return x.size()==y.size()&&std::equal(x.begin(),x.end(),y.begin()); -} - -template -bool operator< (const stable_vector& x,const stable_vector& y) -{ - return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end()); -} - -template -bool operator!=(const stable_vector& x,const stable_vector& y) -{ - return !(x==y); -} - -template -bool operator> (const stable_vector& x,const stable_vector& y) -{ - return y -bool operator>=(const stable_vector& x,const stable_vector& y) -{ - return !(x -bool operator<=(const stable_vector& x,const stable_vector& y) -{ - return !(x>y); -} - -// specialized algorithms: - -template -void swap(stable_vector& x,stable_vector& y) -{ - x.swap(y); -} - -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #undef STABLE_VECTOR_CHECK_INVARIANT -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED /* diff --git a/3party/boost/boost/container/static_vector.hpp b/3party/boost/boost/container/static_vector.hpp index fb97b7fc5f..234fc266f2 100644 --- a/3party/boost/boost/container/static_vector.hpp +++ b/3party/boost/boost/container/static_vector.hpp @@ -2,6 +2,7 @@ // // Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland. // Copyright (c) 2011-2013 Andrew Hundt. +// Copyright (c) 2013-2014 Ion Gaztanaga // // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -10,7 +11,7 @@ #ifndef BOOST_CONTAINER_STATIC_VECTOR_HPP #define BOOST_CONTAINER_STATIC_VECTOR_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -21,6 +22,8 @@ namespace boost { namespace container { +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + namespace container_detail { template @@ -61,43 +64,46 @@ class static_storage_allocator } //namespace container_detail { -/** - * @defgroup static_vector_non_member static_vector non-member functions - */ +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED -/** - * @brief A variable-size array container with fixed capacity. - * - * static_vector is a sequence container like boost::container::vector with contiguous storage that can - * change in size, along with the static allocation, low overhead, and fixed capacity of boost::array. - * - * A static_vector is a sequence that supports random access to elements, constant time insertion and - * removal of elements at the end, and linear time insertion and removal of elements at the beginning or - * in the middle. The number of elements in a static_vector may vary dynamically up to a fixed capacity - * because elements are stored within the object itself similarly to an array. However, objects are - * initialized as they are inserted into static_vector unlike C arrays or std::array which must construct - * all elements on instantiation. The behavior of static_vector enables the use of statically allocated - * elements in cases with complex object lifetime requirements that would otherwise not be trivially - * possible. - * - * @par Error Handling - * Insertion beyond the capacity and out of bounds errors results in calling throw_bad_alloc(). - * The reason for this is because unlike vectors, static_vector does not perform allocation. - * - * @tparam Value The type of element that will be stored. - * @tparam Capacity The maximum number of elements static_vector can store, fixed at compile time. - */ +//! +//!@brief A variable-size array container with fixed capacity. +//! +//!static_vector is a sequence container like boost::container::vector with contiguous storage that can +//!change in size, along with the static allocation, low overhead, and fixed capacity of boost::array. +//! +//!A static_vector is a sequence that supports random access to elements, constant time insertion and +//!removal of elements at the end, and linear time insertion and removal of elements at the beginning or +//!in the middle. The number of elements in a static_vector may vary dynamically up to a fixed capacity +//!because elements are stored within the object itself similarly to an array. However, objects are +//!initialized as they are inserted into static_vector unlike C arrays or std::array which must construct +//!all elements on instantiation. The behavior of static_vector enables the use of statically allocated +//!elements in cases with complex object lifetime requirements that would otherwise not be trivially +//!possible. +//! +//!@par Error Handling +//! Insertion beyond the capacity result in throwing std::bad_alloc() if exceptions are enabled or +//! calling throw_bad_alloc() if not enabled. +//! +//! std::out_of_range is thrown if out of bound access is performed in at() if exceptions are +//! enabled, throw_out_of_range() if not enabled. +//! +//!@tparam Value The type of element that will be stored. +//!@tparam Capacity The maximum number of elements static_vector can store, fixed at compile time. template class static_vector : public vector > { - typedef vector > base_t; + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + typedef vector > base_t; - BOOST_COPYABLE_AND_MOVABLE(static_vector) + BOOST_COPYABLE_AND_MOVABLE(static_vector) template friend class static_vector; + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + public: //! @brief The type of elements stored in the container. typedef typename base_t::value_type value_type; @@ -135,12 +141,12 @@ public: //! @pre count <= capacity() //! - //! @brief Constructs a static_vector containing count default constructed Values. + //! @brief Constructs a static_vector containing count value initialized values. //! //! @param count The number of values which will be contained in the container. //! //! @par Throws - //! If Value's default constructor throws. + //! If Value's value initialization throws. //! //! @par Complexity //! Linear O(N). @@ -148,6 +154,24 @@ public: : base_t(count) {} + //! @pre count <= capacity() + //! + //! @brief Constructs a static_vector containing count default initialized values. + //! + //! @param count The number of values which will be contained in the container. + //! + //! @par Throws + //! If Value's default initialization throws. + //! + //! @par Complexity + //! Linear O(N). + //! + //! @par Note + //! Non-standard extension + static_vector(size_type count, default_init_t) + : base_t(count, default_init_t()) + {} + //! @pre count <= capacity() //! //! @brief Constructs a static_vector containing count copies of value. @@ -208,45 +232,9 @@ public: //! @par Complexity //! Linear O(N). template - static_vector(static_vector const& other) : base_t(other) {} - - //! @brief Copy assigns Values stored in the other static_vector to this one. - //! - //! @param other The static_vector which content will be copied to this one. - //! - //! @par Throws - //! If Value's copy constructor or copy assignment throws. - //! - //! @par Complexity - //! Linear O(N). - static_vector & operator=(BOOST_COPY_ASSIGN_REF(static_vector) other) - { - base_t::operator=(static_cast(other)); - return *this; - } - - //! @pre other.size() <= capacity() - //! - //! @brief Copy assigns Values stored in the other static_vector to this one. - //! - //! @param other The static_vector which content will be copied to this one. - //! - //! @par Throws - //! If Value's copy constructor or copy assignment throws. - //! - //! @par Complexity - //! Linear O(N). - template -// TEMPORARY WORKAROUND -#if defined(BOOST_NO_RVALUE_REFERENCES) - static_vector & operator=(::boost::rv< static_vector > const& other) -#else - static_vector & operator=(static_vector const& other) -#endif - { - base_t::operator=(static_cast const&>(other)); - return *this; - } + static_vector(static_vector const& other) + : base_t(other) + {} //! @brief Move constructor. Moves Values stored in the other static_vector to this one. //! @@ -279,6 +267,38 @@ public: : base_t(boost::move(static_cast::base_t&>(other))) {} + //! @brief Copy assigns Values stored in the other static_vector to this one. + //! + //! @param other The static_vector which content will be copied to this one. + //! + //! @par Throws + //! If Value's copy constructor or copy assignment throws. + //! + //! @par Complexity + //! Linear O(N). + static_vector & operator=(BOOST_COPY_ASSIGN_REF(static_vector) other) + { + return static_cast(base_t::operator=(static_cast(other))); + } + + //! @pre other.size() <= capacity() + //! + //! @brief Copy assigns Values stored in the other static_vector to this one. + //! + //! @param other The static_vector which content will be copied to this one. + //! + //! @par Throws + //! If Value's copy constructor or copy assignment throws. + //! + //! @par Complexity + //! Linear O(N). + template + static_vector & operator=(static_vector const& other) + { + return static_cast(base_t::operator= + (static_cast::base_t const&>(other))); + } + //! @brief Move assignment. Moves Values stored in the other static_vector to this one. //! //! @param other The static_vector which content will be moved to this one. @@ -291,8 +311,7 @@ public: //! Linear O(N). static_vector & operator=(BOOST_RV_REF(static_vector) other) { - base_t::operator=(boost::move(static_cast(other))); - return *this; + return static_cast(base_t::operator=(boost::move(static_cast(other)))); } //! @pre other.size() <= capacity() @@ -310,8 +329,8 @@ public: template static_vector & operator=(BOOST_RV_REF_BEG static_vector BOOST_RV_REF_END other) { - base_t::operator=(boost::move(static_cast::base_t&>(other))); - return *this; + return static_cast(base_t::operator= + (boost::move(static_cast::base_t&>(other)))); } #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -355,17 +374,34 @@ public: //! @pre count <= capacity() //! //! @brief Inserts or erases elements at the end such that - //! the size becomes count. New elements are default constructed. + //! the size becomes count. New elements are value initialized. //! //! @param count The number of elements which will be stored in the container. //! //! @par Throws - //! If Value's default constructor throws. + //! If Value's value initialization throws. //! //! @par Complexity //! Linear O(N). void resize(size_type count); + //! @pre count <= capacity() + //! + //! @brief Inserts or erases elements at the end such that + //! the size becomes count. New elements are default initialized. + //! + //! @param count The number of elements which will be stored in the container. + //! + //! @par Throws + //! If Value's default initialization throws. + //! + //! @par Complexity + //! Linear O(N). + //! + //! @par Note + //! Non-standard extension + void resize(size_type count, default_init_t); + //! @pre count <= capacity() //! //! @brief Inserts or erases elements at the end such that diff --git a/3party/boost/boost/container/string.hpp b/3party/boost/boost/container/string.hpp index e97f7895ab..89bb5ac2a9 100644 --- a/3party/boost/boost/container/string.hpp +++ b/3party/boost/boost/container/string.hpp @@ -1,34 +1,12 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/container for documentation. // ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 1996,1997 -// Silicon Graphics Computer Systems, Inc. -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appear in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. Silicon Graphics makes no -// representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied warranty. -// -// -// Copyright (c) 1994 -// Hewlett-Packard Company -// -// Permission to use, copy, modify, distribute and sell this software -// and its documentation for any purpose is hereby granted without fee, -// provided that the above copyright notice appear in all copies and -// that both that copyright notice and this permission notice appear -// in supporting documentation. Hewlett-Packard Company makes no -// representations about the suitability of this software for any -// purpose. It is provided "as is" without express or implied warranty. #ifndef BOOST_CONTAINER_STRING_HPP #define BOOST_CONTAINER_STRING_HPP @@ -74,10 +52,10 @@ namespace boost { namespace container { -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace container_detail { // ------------------------------------------------------------ -// Class basic_string_base. +// Class basic_string_base. // basic_string_base is a helper class that makes it it easier to write // an exception-safe version of basic_string. The constructor allocates, @@ -110,20 +88,20 @@ class basic_string_base basic_string_base(const allocator_type& a, size_type n) : members_(a) - { + { this->init(); this->allocate_initial_block(n); } basic_string_base(BOOST_RV_REF(basic_string_base) b) : members_(boost::move(b.alloc())) - { + { this->init(); this->swap_data(b); } ~basic_string_base() - { + { if(!this->is_short()){ this->deallocate_block(); this->is_short(true); @@ -171,7 +149,7 @@ class basic_string_base //This type has the same alignment and size as long_t but it's POD //so, unlike long_t, it can be placed in a union - + typedef typename boost::aligned_storage< sizeof(long_t), container_detail::alignment_of::value>::type long_raw_t; @@ -290,10 +268,15 @@ class basic_string_base } size_type next_capacity(size_type additional_objects) const - { return get_next_capacity(allocator_traits_type::max_size(this->alloc()), this->priv_storage(), additional_objects); } + { + return next_capacity_calculator + :: + get( allocator_traits_type::max_size(this->alloc()) + , this->priv_storage(), additional_objects ); + } void deallocate(pointer p, size_type n) - { + { if (p && (n > InternalBufferChars)) this->alloc().deallocate(p, n); } @@ -342,7 +325,7 @@ class basic_string_base void deallocate_block() { this->deallocate(this->priv_addr(), this->priv_storage()); } - + size_type max_size() const { return allocator_traits_type::max_size(this->alloc()) - 1; } @@ -385,13 +368,13 @@ class basic_string_base { return this->members_.m_repr.long_repr().storage; } void priv_storage(size_type storage) - { + { if(!this->is_short()) this->priv_long_storage(storage); } void priv_long_storage(size_type storage) - { + { this->members_.m_repr.long_repr().storage = storage; } @@ -405,7 +388,7 @@ class basic_string_base { return this->members_.m_repr.long_repr().length; } void priv_size(size_type sz) - { + { if(this->is_short()) this->priv_short_size(sz); else @@ -413,12 +396,12 @@ class basic_string_base } void priv_short_size(size_type sz) - { + { this->members_.m_repr.s.h.length = (unsigned char)sz; } void priv_long_size(size_type sz) - { + { this->members_.m_repr.long_repr().length = sz; } @@ -455,7 +438,7 @@ class basic_string_base } //namespace container_detail { -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! The basic_string class represents a Sequence of characters. It contains all the //! usual operations of a Sequence, and, additionally, it contains standard string @@ -485,6 +468,10 @@ class basic_string_base //! end(), rbegin(), rend(), operator[], c_str(), and data() do not invalidate iterators. //! In this implementation, iterators are only invalidated by member functions that //! explicitly change the string's contents. +//! +//! \tparam CharT The type of character it contains. +//! \tparam Traits The Character Traits type, which encapsulates basic character operations +//! \tparam Allocator The allocator, used for internal memory management. #ifdef BOOST_CONTAINER_DOXYGEN_INVOKED template , class Allocator = std::allocator > #else @@ -493,7 +480,7 @@ template class basic_string : private container_detail::basic_string_base { - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: typedef allocator_traits allocator_traits_type; BOOST_COPYABLE_AND_MOVABLE(basic_string) @@ -505,19 +492,22 @@ class basic_string template struct Eq_traits - : public std::binary_function { - bool operator()(const typename Tr::char_type& x, - const typename Tr::char_type& y) const + //Compatibility with std::binary_function + typedef typename Tr::char_type first_argument_type; + typedef typename Tr::char_type second_argument_type; + typedef bool result_type; + + bool operator()(const first_argument_type& x, const second_argument_type& y) const { return Tr::eq(x, y); } }; template struct Not_within_traits - : public std::unary_function { + typedef typename Tr::char_type argument_type; + typedef bool result_type; + typedef const typename Tr::char_type* Pointer; const Pointer m_first; const Pointer m_last; @@ -531,7 +521,7 @@ class basic_string std::bind1st(Eq_traits(), x)) == m_last; } }; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -555,14 +545,14 @@ class basic_string typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator) const_reverse_iterator; static const size_type npos = size_type(-1); - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: typedef constant_iterator cvalue_iterator; typedef typename base_t::allocator_v1 allocator_v1; typedef typename base_t::allocator_v2 allocator_v2; typedef typename base_t::alloc_version alloc_version; typedef ::boost::intrusive::pointer_traits pointer_traits; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: // Constructor, destructor, assignment. ////////////////////////////////////////////// @@ -570,7 +560,7 @@ class basic_string // construct/copy/destroy // ////////////////////////////////////////////// - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED struct reserve_t {}; basic_string(reserve_t, size_type n, @@ -581,7 +571,7 @@ class basic_string , n + 1) { this->priv_terminate_string(); } - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //! Effects: Default constructs a basic_string. //! @@ -602,7 +592,7 @@ class basic_string //! //! Postcondition: x == *this. //! - //! Throws: If allocator_type's default constructor throws. + //! Throws: If allocator_type's default constructor or allocation throws. basic_string(const basic_string& s) : base_t(allocator_traits_type::select_on_container_copy_construction(s.alloc())) { @@ -690,6 +680,15 @@ class basic_string this->assign(n, c); } + //! Effects: Constructs a basic_string taking the allocator as parameter, + //! and is initialized by n default-initialized characters. + basic_string(size_type n, default_init_t, const allocator_type& a = allocator_type()) + : base_t(a, n + 1) + { + this->priv_size(n); + this->priv_terminate_string(); + } + //! Effects: Constructs a basic_string taking the allocator as parameter, //! and a range of iterators. template @@ -707,7 +706,7 @@ class basic_string //! Complexity: Constant. ~basic_string() BOOST_CONTAINER_NOEXCEPT {} - + //! Effects: Copy constructs a string. //! //! Postcondition: x == *this. @@ -734,30 +733,38 @@ class basic_string return *this; } - //! Effects: Move constructor. Moves mx's resources to *this. + //! Effects: Move constructor. Moves x's resources to *this. //! - //! Throws: If allocator_type's copy constructor throws. + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and allocation throws //! - //! Complexity: Constant. - basic_string& operator=(BOOST_RV_REF(basic_string) x) BOOST_CONTAINER_NOEXCEPT + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. + basic_string& operator=(BOOST_RV_REF(basic_string) x) + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) { - if (&x != this){ - allocator_type &this_alloc = this->alloc(); - allocator_type &x_alloc = x.alloc(); - //If allocators are equal we can just swap pointers - if(this_alloc == x_alloc){ - //Destroy objects but retain memory in case x reuses it in the future - this->clear(); - this->swap_data(x); - //Move allocator if needed - container_detail::bool_ flag; - container_detail::move_alloc(this_alloc, x_alloc, flag); - } - //If unequal allocators, then do a one by one move - else{ - this->assign( x.begin(), x.end()); - } + //for move constructor, no aliasing (&x != this) is assummed. + BOOST_ASSERT(this != &x); + allocator_type &this_alloc = this->alloc(); + allocator_type &x_alloc = x.alloc(); + const bool propagate_alloc = allocator_traits_type:: + propagate_on_container_move_assignment::value; + container_detail::bool_ flag; + const bool allocators_equal = this_alloc == x_alloc; (void)allocators_equal; + //Resources can be transferred if both allocators are + //going to be equal after this function (either propagated or already equal) + if(propagate_alloc || allocators_equal){ + //Destroy objects but retain memory in case x reuses it in the future + this->clear(); + //Move allocator if needed + container_detail::move_alloc(this_alloc, x_alloc, flag); + //Nothrow swap + this->swap_data(x); + } + //Else do a one by one move + else{ + this->assign( x.begin(), x.end()); } return *this; } @@ -959,7 +966,7 @@ class basic_string } //! Effects: Inserts or erases elements at the end such that - //! the size becomes n. New elements are default constructed. + //! the size becomes n. New elements are value initialized. //! //! Throws: If memory allocation throws //! @@ -967,6 +974,26 @@ class basic_string void resize(size_type n) { resize(n, CharT()); } + + //! Effects: Inserts or erases elements at the end such that + //! the size becomes n. New elements are uninitialized. + //! + //! Throws: If memory allocation throws + //! + //! Complexity: Linear to the difference between size() and new_size. + //! + //! Note: Non-standard extension + void resize(size_type n, default_init_t) + { + if (n <= this->size()) + this->erase(this->begin() + n, this->end()); + else{ + this->priv_reserve(n, false); + this->priv_size(n); + this->priv_terminate_string(); + } + } + //! Effects: Number of elements for which memory has been allocated. //! capacity() is always greater than or equal to size(). //! @@ -983,29 +1010,7 @@ class basic_string //! //! Throws: If memory allocation allocation throws void reserve(size_type res_arg) - { - if (res_arg > this->max_size()){ - throw_length_error("basic_string::reserve max_size() exceeded"); - } - - if (this->capacity() < res_arg){ - size_type n = container_detail::max_value(res_arg, this->size()) + 1; - size_type new_cap = this->next_capacity(n); - pointer new_start = this->allocation_command - (allocate_new, n, new_cap, new_cap).first; - size_type new_length = 0; - - const pointer addr = this->priv_addr(); - new_length += priv_uninitialized_copy - (addr, addr + this->priv_size(), new_start); - this->priv_construct_null(new_start + new_length); - this->deallocate_block(); - this->is_short(false); - this->priv_long_addr(new_start); - this->priv_long_size(new_length); - this->priv_storage(new_cap); - } - } + { this->priv_reserve(res_arg); } //! Effects: Tries to deallocate the excess of memory created //! with previous allocations. The size of the string is unchanged @@ -1231,7 +1236,7 @@ class basic_string //! length n whose elements are a copy of those pointed to by s. //! //! Throws: If memory allocation throws or length_error if n > max_size(). - //! + //! //! Returns: *this basic_string& assign(const CharT* s, size_type n) { return this->assign(s, s + n); } @@ -1250,6 +1255,20 @@ class basic_string basic_string& assign(size_type n, CharT c) { return this->assign(cvalue_iterator(c, n), cvalue_iterator()); } + //! Effects: Equivalent to assign(basic_string(first, last)). + //! + //! Returns: *this + basic_string& assign(const CharT* first, const CharT* last) + { + size_type n = static_cast(last - first); + this->reserve(n); + CharT* ptr = container_detail::to_raw_pointer(this->priv_addr()); + Traits::copy(ptr, first, n); + this->priv_construct_null(ptr + n); + this->priv_size(n); + return *this; + } + //! Effects: Equivalent to assign(basic_string(first, last)). //! //! Returns: *this @@ -1416,7 +1435,7 @@ class basic_string for ( ; first != last; ++first, ++p) { p = this->insert(p, *first); } - return this->begin() + n_pos; + return this->begin() + n_pos; } #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -1440,7 +1459,7 @@ class basic_string //Check if we have enough capacity if (remaining >= n){ - enough_capacity = true; + enough_capacity = true; } else { //Otherwise expand current buffer or allocate new storage @@ -1549,7 +1568,7 @@ class basic_string const pointer addr = this->priv_addr(); erase(addr + pos, addr + pos + container_detail::min_value(n, this->size() - pos)); return *this; - } + } //! Effects: Removes the character referred to by p. //! @@ -2318,8 +2337,35 @@ class basic_string int compare(size_type pos1, size_type n1, const CharT* s) const { return this->compare(pos1, n1, s, Traits::length(s)); } - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: + void priv_reserve(size_type res_arg, const bool null_terminate = true) + { + if (res_arg > this->max_size()){ + throw_length_error("basic_string::reserve max_size() exceeded"); + } + + if (this->capacity() < res_arg){ + size_type n = container_detail::max_value(res_arg, this->size()) + 1; + size_type new_cap = this->next_capacity(n); + pointer new_start = this->allocation_command + (allocate_new, n, new_cap, new_cap).first; + size_type new_length = 0; + + const pointer addr = this->priv_addr(); + new_length += priv_uninitialized_copy + (addr, addr + this->priv_size(), new_start); + if(null_terminate){ + this->priv_construct_null(new_start + new_length); + } + this->deallocate_block(); + this->is_short(false); + this->priv_long_addr(new_start); + this->priv_long_size(new_length); + this->priv_storage(new_cap); + } + } + static int s_compare(const_pointer f1, const_pointer l1, const_pointer f2, const_pointer l2) { @@ -2453,9 +2499,11 @@ class basic_string return this->priv_replace(first, last, f, l, Category()); } - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; +#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED + //!Typedef for a basic_string of //!narrow characters typedef basic_string @@ -2472,12 +2520,14 @@ typedef basic_string ,std::allocator > wstring; +#endif + // ------------------------------------------------------------ // Non-member functions. // Operator+ -template inline +template inline basic_string operator+(const basic_string& x ,const basic_string& y) @@ -2526,7 +2576,7 @@ template inline return y; } -template inline +template inline basic_string operator+ (basic_string x, const CharT* s) { @@ -2542,7 +2592,7 @@ template inline return y; } -template inline +template inline basic_string operator+ (basic_string x, const CharT c) { @@ -2685,8 +2735,8 @@ template inline void swap(basic_string& x, basic_string& y) { x.swap(y); } -/// @cond -// I/O. +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED +// I/O. namespace container_detail { template @@ -2705,7 +2755,7 @@ string_fill(std::basic_ostream& os, } } //namespace container_detail { -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED template std::basic_ostream& @@ -2724,9 +2774,9 @@ operator<<(std::basic_ostream& os, const basic_stringsputn(s.data(), std::streamsize(n)) == std::streamsize(n); @@ -2778,7 +2828,7 @@ operator>>(std::basic_istream& is, basic_string>(std::basic_istream& is, basic_string +template std::basic_istream& getline(std::istream& is, basic_string& s,CharT delim) { @@ -2821,7 +2871,7 @@ getline(std::istream& is, basic_string& s,CharT delim) return is; } -template +template inline std::basic_istream& getline(std::basic_istream& is, basic_string& s) { @@ -2836,7 +2886,7 @@ inline std::size_t hash_value(basic_string, Allocator> }} -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace boost { @@ -2849,7 +2899,7 @@ struct has_trivial_destructor_after_move diff --git a/3party/boost/boost/container/throw_exception.hpp b/3party/boost/boost/container/throw_exception.hpp index e22d10422f..ab01c30f3e 100644 --- a/3party/boost/boost/container/throw_exception.hpp +++ b/3party/boost/boost/container/throw_exception.hpp @@ -14,7 +14,7 @@ #include #include -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -76,26 +76,82 @@ namespace container { #else //defined(BOOST_NO_EXCEPTIONS) + //! Exception callback called by Boost.Container when fails to allocate the requested storage space. + //!
    + //!
  • If BOOST_NO_EXCEPTIONS is NOT defined std::bad_alloc() is thrown.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS + //! is NOT defined BOOST_ASSERT(!"boost::container bad_alloc thrown") is called + //! and std::abort() if the former returns.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined + //! the user must provide an implementation and the function should not return.
  • + //!
inline void throw_bad_alloc() { throw std::bad_alloc(); } + //! Exception callback called by Boost.Container to signal arguments out of range. + //!
    + //!
  • If BOOST_NO_EXCEPTIONS is NOT defined std::out_of_range(str) is thrown.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS + //! is NOT defined BOOST_ASSERT_MSG(!"boost::container out_of_range thrown", str) is called + //! and std::abort() if the former returns.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined + //! the user must provide an implementation and the function should not return.
  • + //!
inline void throw_out_of_range(const char* str) { throw std::out_of_range(str); } + //! Exception callback called by Boost.Container to signal errors resizing. + //!
    + //!
  • If BOOST_NO_EXCEPTIONS is NOT defined std::length_error(str) is thrown.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS + //! is NOT defined BOOST_ASSERT_MSG(!"boost::container length_error thrown", str) is called + //! and std::abort() if the former returns.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined + //! the user must provide an implementation and the function should not return.
  • + //!
inline void throw_length_error(const char* str) { throw std::length_error(str); } + //! Exception callback called by Boost.Container to report errors in the internal logical + //! of the program, such as violation of logical preconditions or class invariants. + //!
    + //!
  • If BOOST_NO_EXCEPTIONS is NOT defined std::logic_error(str) is thrown.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS + //! is NOT defined BOOST_ASSERT_MSG(!"boost::container logic_error thrown", str) is called + //! and std::abort() if the former returns.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined + //! the user must provide an implementation and the function should not return.
  • + //!
inline void throw_logic_error(const char* str) { throw std::logic_error(str); } + //! Exception callback called by Boost.Container to report errors that can only be detected during runtime. + //!
    + //!
  • If BOOST_NO_EXCEPTIONS is NOT defined std::runtime_error(str) is thrown.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS + //! is NOT defined BOOST_ASSERT_MSG(!"boost::container runtime_error thrown", str) is called + //! and std::abort() if the former returns.
  • + //! + //!
  • If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined + //! the user must provide an implementation and the function should not return.
  • + //!
inline void throw_runtime_error(const char* str) { throw std::runtime_error(str); diff --git a/3party/boost/boost/container/vector.hpp b/3party/boost/boost/container/vector.hpp index dac536ac65..16f52d3c5c 100644 --- a/3party/boost/boost/container/vector.hpp +++ b/3party/boost/boost/container/vector.hpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost +// (C) Copyright Ion Gaztanaga 2005-2013. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // @@ -11,7 +11,7 @@ #ifndef BOOST_CONTAINER_CONTAINER_VECTOR_HPP #define BOOST_CONTAINER_CONTAINER_VECTOR_HPP -#if (defined _MSC_VER) && (_MSC_VER >= 1200) +#if defined(_MSC_VER) # pragma once #endif @@ -53,7 +53,7 @@ namespace boost { namespace container { -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //#define BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER @@ -61,20 +61,24 @@ namespace container_detail { #ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER -//! Const vector_iterator used to iterate through a vector. -template -class vector_const_iterator +template +class vec_iterator { public: - typedef std::random_access_iterator_tag iterator_category; + typedef std::random_access_iterator_tag iterator_category; typedef typename boost::intrusive::pointer_traits::element_type value_type; typedef typename boost::intrusive::pointer_traits::difference_type difference_type; - typedef typename boost::intrusive::pointer_traits::template - rebind_pointer::type pointer; - typedef const value_type& reference; + typedef typename if_c + < IsConst + , typename boost::intrusive::pointer_traits::template + rebind_pointer::type + , Pointer + >::type pointer; + typedef typename boost::intrusive::pointer_traits ptr_traits; + typedef typename ptr_traits::reference reference; - /// @cond - protected: + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + private: Pointer m_ptr; public: @@ -84,155 +88,96 @@ class vector_const_iterator Pointer &get_ptr() BOOST_CONTAINER_NOEXCEPT { return m_ptr; } - explicit vector_const_iterator(Pointer ptr) BOOST_CONTAINER_NOEXCEPT + explicit vec_iterator(Pointer ptr) BOOST_CONTAINER_NOEXCEPT : m_ptr(ptr) {} - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: //Constructors - vector_const_iterator() BOOST_CONTAINER_NOEXCEPT + vec_iterator() BOOST_CONTAINER_NOEXCEPT #ifndef NDEBUG : m_ptr() #else - // No value initialization of m_ptr() to speed up things a bit: + // No value initialization of m_ptr() to speed up things a bit: #endif {} + vec_iterator(vec_iterator const& other) BOOST_CONTAINER_NOEXCEPT + : m_ptr(other.get_ptr()) + {} + //Pointer like operators reference operator*() const BOOST_CONTAINER_NOEXCEPT { return *m_ptr; } - const value_type * operator->() const BOOST_CONTAINER_NOEXCEPT - { return container_detail::to_raw_pointer(m_ptr); } + pointer operator->() const BOOST_CONTAINER_NOEXCEPT + { return ::boost::intrusive::pointer_traits::pointer_to(this->operator*()); } reference operator[](difference_type off) const BOOST_CONTAINER_NOEXCEPT { return m_ptr[off]; } //Increment / Decrement - vector_const_iterator& operator++() BOOST_CONTAINER_NOEXCEPT + vec_iterator& operator++() BOOST_CONTAINER_NOEXCEPT { ++m_ptr; return *this; } - vector_const_iterator operator++(int) BOOST_CONTAINER_NOEXCEPT - { return vector_const_iterator(m_ptr++); } + vec_iterator operator++(int) BOOST_CONTAINER_NOEXCEPT + { return vec_iterator(m_ptr++); } - vector_const_iterator& operator--() BOOST_CONTAINER_NOEXCEPT + vec_iterator& operator--() BOOST_CONTAINER_NOEXCEPT { --m_ptr; return *this; } - vector_const_iterator operator--(int) BOOST_CONTAINER_NOEXCEPT - { return vector_const_iterator(m_ptr--); } + vec_iterator operator--(int) BOOST_CONTAINER_NOEXCEPT + { return vec_iterator(m_ptr--); } //Arithmetic - vector_const_iterator& operator+=(difference_type off) BOOST_CONTAINER_NOEXCEPT + vec_iterator& operator+=(difference_type off) BOOST_CONTAINER_NOEXCEPT { m_ptr += off; return *this; } - vector_const_iterator& operator-=(difference_type off) BOOST_CONTAINER_NOEXCEPT + vec_iterator& operator-=(difference_type off) BOOST_CONTAINER_NOEXCEPT { m_ptr -= off; return *this; } - friend vector_const_iterator operator+(const vector_const_iterator &x, difference_type off) BOOST_CONTAINER_NOEXCEPT - { return vector_const_iterator(x.m_ptr+off); } + friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_CONTAINER_NOEXCEPT + { return vec_iterator(x.m_ptr+off); } - friend vector_const_iterator operator+(difference_type off, vector_const_iterator right) BOOST_CONTAINER_NOEXCEPT + friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_CONTAINER_NOEXCEPT { right.m_ptr += off; return right; } - friend vector_const_iterator operator-(vector_const_iterator left, difference_type off) BOOST_CONTAINER_NOEXCEPT + friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_CONTAINER_NOEXCEPT { left.m_ptr -= off; return left; } - friend difference_type operator-(const vector_const_iterator &left, const vector_const_iterator& right) BOOST_CONTAINER_NOEXCEPT + friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_CONTAINER_NOEXCEPT { return left.m_ptr - right.m_ptr; } //Comparison operators - friend bool operator== (const vector_const_iterator& l, const vector_const_iterator& r) BOOST_CONTAINER_NOEXCEPT + friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_CONTAINER_NOEXCEPT { return l.m_ptr == r.m_ptr; } - friend bool operator!= (const vector_const_iterator& l, const vector_const_iterator& r) BOOST_CONTAINER_NOEXCEPT + friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_CONTAINER_NOEXCEPT { return l.m_ptr != r.m_ptr; } - friend bool operator< (const vector_const_iterator& l, const vector_const_iterator& r) BOOST_CONTAINER_NOEXCEPT + friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_CONTAINER_NOEXCEPT { return l.m_ptr < r.m_ptr; } - friend bool operator<= (const vector_const_iterator& l, const vector_const_iterator& r) BOOST_CONTAINER_NOEXCEPT + friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_CONTAINER_NOEXCEPT { return l.m_ptr <= r.m_ptr; } - friend bool operator> (const vector_const_iterator& l, const vector_const_iterator& r) BOOST_CONTAINER_NOEXCEPT + friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_CONTAINER_NOEXCEPT { return l.m_ptr > r.m_ptr; } - friend bool operator>= (const vector_const_iterator& l, const vector_const_iterator& r) BOOST_CONTAINER_NOEXCEPT + friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_CONTAINER_NOEXCEPT { return l.m_ptr >= r.m_ptr; } }; -//! Iterator used to iterate through a vector -template -class vector_iterator - : public vector_const_iterator -{ - typedef vector_const_iterator base_t; - public: - explicit vector_iterator(Pointer ptr) BOOST_CONTAINER_NOEXCEPT - : base_t(ptr) - {} - - public: - typedef std::random_access_iterator_tag iterator_category; - typedef typename boost::intrusive::pointer_traits::element_type value_type; - typedef typename boost::intrusive::pointer_traits::difference_type difference_type; - typedef Pointer pointer; - typedef value_type& reference; - - //Constructors - vector_iterator() BOOST_CONTAINER_NOEXCEPT - : base_t() - {} - - //Pointer like operators - reference operator*() const BOOST_CONTAINER_NOEXCEPT - { return *this->m_ptr; } - - value_type* operator->() const BOOST_CONTAINER_NOEXCEPT - { return container_detail::to_raw_pointer(this->m_ptr); } - - reference operator[](difference_type off) const BOOST_CONTAINER_NOEXCEPT - { return this->m_ptr[off]; } - - //Increment / Decrement - vector_iterator& operator++() BOOST_CONTAINER_NOEXCEPT - { ++this->m_ptr; return *this; } - - vector_iterator operator++(int) BOOST_CONTAINER_NOEXCEPT - { return vector_iterator(this->m_ptr++); } - - vector_iterator& operator--() BOOST_CONTAINER_NOEXCEPT - { --this->m_ptr; return *this; } - - vector_iterator operator--(int) BOOST_CONTAINER_NOEXCEPT - { return vector_iterator(this->m_ptr--); } - - // Arithmetic - vector_iterator& operator+=(difference_type off) BOOST_CONTAINER_NOEXCEPT - { this->m_ptr += off; return *this; } - - vector_iterator& operator-=(difference_type off) BOOST_CONTAINER_NOEXCEPT - { this->m_ptr -= off; return *this; } - - friend vector_iterator operator+(vector_iterator left, difference_type off) BOOST_CONTAINER_NOEXCEPT - { left.m_ptr += off; return left; } - - friend vector_iterator operator+(difference_type off, vector_iterator right) BOOST_CONTAINER_NOEXCEPT - { right.m_ptr += off; return right; } - - friend vector_iterator operator-(vector_iterator left, difference_type off) BOOST_CONTAINER_NOEXCEPT - { left.m_ptr -= off; return left; } -}; - } //namespace container_detail { -template -const Pointer &vector_iterator_get_ptr(const container_detail::vector_const_iterator &it) BOOST_CONTAINER_NOEXCEPT +template +const Pointer &vector_iterator_get_ptr(const container_detail::vec_iterator &it) BOOST_CONTAINER_NOEXCEPT { return it.get_ptr(); } -template -Pointer &get_ptr(container_detail::vector_const_iterator &it) BOOST_CONTAINER_NOEXCEPT +template +Pointer &get_ptr(container_detail::vec_iterator &it) BOOST_CONTAINER_NOEXCEPT { return it.get_ptr(); } namespace container_detail { @@ -251,7 +196,7 @@ struct vector_get_ptr_pointer_to_non_const typedef typename pointer_traits_t ::template rebind_pointer::type return_type; - static return_type get_ptr(const const_pointer &ptr) + static return_type get_ptr(const const_pointer &ptr) BOOST_CONTAINER_NOEXCEPT { return boost::intrusive::pointer_traits::const_cast_from(ptr); } }; @@ -259,7 +204,7 @@ template struct vector_get_ptr_pointer_to_non_const { typedef const Pointer & return_type; - static return_type get_ptr(const Pointer &ptr) + static return_type get_ptr(const Pointer &ptr) BOOST_CONTAINER_NOEXCEPT { return ptr; } }; @@ -276,6 +221,9 @@ namespace container_detail { #endif //#ifndef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER +struct uninitialized_size_t {}; +static const uninitialized_size_t uninitialized_size = uninitialized_size_t(); + template struct vector_value_traits { @@ -294,17 +242,10 @@ struct vector_value_traits ,container_detail::scoped_destructor_n - >::type OldArrayDestructor; - //This is the anti-exception array destructor - //to destroy objects created with copy construction - typedef typename container_detail::if_c - - ,container_detail::scoped_destructor_n >::type ArrayDestructor; //This is the anti-exception array deallocator typedef typename container_detail::if_c - ,container_detail::scoped_array_deallocator >::type ArrayDeallocator; @@ -312,10 +253,7 @@ struct vector_value_traits //!This struct deallocates and allocated memory template < class Allocator - , class AllocatorVersion = container_detail::integral_constant - < unsigned - , boost::container::container_detail::version::value - > + , class AllocatorVersion = typename container_detail::version::type > struct vector_alloc_holder : public Allocator @@ -343,20 +281,28 @@ struct vector_alloc_holder //Constructor, does not throw template - explicit vector_alloc_holder(BOOST_FWD_REF(AllocConvertible) a, size_type initial_size) + vector_alloc_holder(uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, size_type initial_size) : Allocator(boost::forward(a)) + , m_start() , m_size(initial_size) //Size is initialized here so vector should only call uninitialized_xxx after this + , m_capacity() { - m_start = this->allocation_command(allocate_new, initial_size, initial_size, m_capacity, m_start).first; + if(initial_size){ + m_start = this->allocation_command(allocate_new, initial_size, initial_size, m_capacity, m_start).first; + } } //Constructor, does not throw - explicit vector_alloc_holder(size_type initial_size) + vector_alloc_holder(uninitialized_size_t, size_type initial_size) : Allocator() + , m_start() , m_size(initial_size) //Size is initialized here so vector should only call uninitialized_xxx after this + , m_capacity() { - m_start = this->allocation_command - (allocate_new, initial_size, initial_size, m_capacity, m_start).first; + if(initial_size){ + m_start = this->allocation_command + (allocate_new, initial_size, initial_size, m_capacity, m_start).first; + } } vector_alloc_holder(BOOST_RV_REF(vector_alloc_holder) holder) BOOST_CONTAINER_NOEXCEPT @@ -371,8 +317,10 @@ struct vector_alloc_holder void first_allocation(size_type cap) { - m_start = this->allocation_command - (allocate_new, cap, cap, m_capacity, m_start).first; + if(cap){ + m_start = this->allocation_command + (allocate_new, cap, cap, m_capacity, m_start).first; + } } void first_allocation_same_allocator_type(size_type cap) @@ -386,7 +334,7 @@ struct vector_alloc_holder } std::pair - allocation_command(allocation_type command, + allocation_command(boost::container::allocation_type command, size_type limit_size, size_type preferred_size, size_type &received_size, const pointer &reuse = pointer()) @@ -397,11 +345,10 @@ struct vector_alloc_holder size_type next_capacity(size_type additional_objects) const { - std::size_t num_objects = this->m_size + additional_objects; - std::size_t next_cap = this->m_capacity + this->m_capacity/2; - return num_objects > next_cap ? num_objects : next_cap;/* - return get_next_capacity( allocator_traits_type::max_size(this->m_holder.alloc()) - , this->m_capacity, additional_objects);*/ + return next_capacity_calculator + :: + get( allocator_traits_type::max_size(this->alloc()) + , this->m_capacity, additional_objects ); } pointer m_start; @@ -417,8 +364,8 @@ struct vector_alloc_holder void move_from_empty(vector_alloc_holder &x) BOOST_CONTAINER_NOEXCEPT { + //this->m_size was previously initialized this->m_start = x.m_start; - this->m_size = x.m_size; this->m_capacity = x.m_capacity; x.m_start = pointer(); x.m_size = x.m_capacity = 0; @@ -467,18 +414,20 @@ struct vector_alloc_holder - explicit vector_alloc_holder(BOOST_FWD_REF(AllocConvertible) a, size_type initial_size) + vector_alloc_holder(uninitialized_size_t, BOOST_FWD_REF(AllocConvertible) a, size_type initial_size) : Allocator(boost::forward(a)) - , m_size(initial_size) //Size is initialized here so vector should only call uninitialized_xxx after this + , m_size(initial_size) //Size is initialized here... { + //... and capacity here, so vector, must call uninitialized_xxx in the derived constructor this->first_allocation(initial_size); } //Constructor, does not throw - explicit vector_alloc_holder(size_type initial_size) + vector_alloc_holder(uninitialized_size_t, size_type initial_size) : Allocator() - , m_size(initial_size) //Size is initialized here so vector should only call uninitialized_xxx after this + , m_size(initial_size) //Size is initialized here... { + //... and capacity here, so vector, must call uninitialized_xxx in the derived constructor this->first_allocation(initial_size); } @@ -565,15 +514,16 @@ struct vector_alloc_holder > #else @@ -581,16 +531,21 @@ template #endif class vector { - /// @cond - typedef container_detail::integral_constant - ::value > alloc_version; - boost::container::container_detail::vector_alloc_holder m_holder; - typedef container_detail::vector_alloc_holder base_t; - typedef allocator_traits allocator_traits_type; + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED + + typedef typename container_detail::version::type alloc_version; + boost::container::container_detail::vector_alloc_holder + m_holder; + typedef allocator_traits allocator_traits_type; template friend class vector; - /// @endcond + + typedef typename ::boost::container::allocator_traits + ::pointer pointer_impl; + typedef container_detail::vec_iterator iterator_impl; + typedef container_detail::vec_iterator const_iterator_impl; + + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// // @@ -611,13 +566,13 @@ class vector typedef BOOST_CONTAINER_IMPDEF(pointer) iterator; typedef BOOST_CONTAINER_IMPDEF(const_pointer) const_iterator; #else - typedef BOOST_CONTAINER_IMPDEF(container_detail::vector_iterator) iterator; - typedef BOOST_CONTAINER_IMPDEF(container_detail::vector_const_iterator) const_iterator; + typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator; + typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator; #endif typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator) reverse_iterator; typedef BOOST_CONTAINER_IMPDEF(std::reverse_iterator) const_reverse_iterator; - /// @cond + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED private: BOOST_COPYABLE_AND_MOVABLE(vector) typedef container_detail::vector_value_traits value_traits; @@ -627,7 +582,7 @@ class vector typedef container_detail::integral_constant allocator_v2; typedef constant_iterator cvalue_iterator; - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED public: ////////////////////////////////////////////// @@ -656,16 +611,33 @@ class vector {} //! Effects: Constructs a vector that will use a copy of allocator a - //! and inserts n default contructed values. + //! and inserts n value initialized values. //! //! Throws: If allocator_type's default constructor or allocation - //! throws or T's default constructor throws. + //! throws or T's value initialization throws. //! //! Complexity: Linear to n. explicit vector(size_type n) - : m_holder(n) + : m_holder(container_detail::uninitialized_size, n) { - boost::container::uninitialized_default_alloc_n(this->m_holder.alloc(), n, container_detail::to_raw_pointer(this->m_holder.start())); + boost::container::uninitialized_value_init_alloc_n + (this->m_holder.alloc(), n, container_detail::to_raw_pointer(this->m_holder.start())); + } + + //! Effects: Constructs a vector that will use a copy of allocator a + //! and inserts n default initialized values. + //! + //! Throws: If allocator_type's default constructor or allocation + //! throws or T's default initialization throws. + //! + //! Complexity: Linear to n. + //! + //! Note: Non-standard extension + vector(size_type n, default_init_t) + : m_holder(container_detail::uninitialized_size, n) + { + boost::container::uninitialized_default_init_alloc_n + (this->m_holder.alloc(), n, container_detail::to_raw_pointer(this->m_holder.start())); } //! Effects: Constructs a vector @@ -676,7 +648,7 @@ class vector //! //! Complexity: Linear to n. vector(size_type n, const T& value) - : m_holder(n) + : m_holder(container_detail::uninitialized_size, n) { boost::container::uninitialized_fill_alloc_n (this->m_holder.alloc(), value, n, container_detail::to_raw_pointer(this->m_holder.start())); @@ -690,7 +662,7 @@ class vector //! //! Complexity: Linear to n. vector(size_type n, const T& value, const allocator_type& a) - : m_holder(a, n) + : m_holder(container_detail::uninitialized_size, a, n) { boost::container::uninitialized_fill_alloc_n (this->m_holder.alloc(), value, n, container_detail::to_raw_pointer(this->m_holder.start())); @@ -700,7 +672,7 @@ class vector //! and inserts a copy of the range [first, last) in the vector. //! //! Throws: If allocator_type's default constructor or allocation - //! throws or T's constructor taking an dereferenced InIt throws. + //! throws or T's constructor taking a dereferenced InIt throws. //! //! Complexity: Linear to the range [first, last). template @@ -712,7 +684,7 @@ class vector //! and inserts a copy of the range [first, last) in the vector. //! //! Throws: If allocator_type's default constructor or allocation - //! throws or T's constructor taking an dereferenced InIt throws. + //! throws or T's constructor taking a dereferenced InIt throws. //! //! Complexity: Linear to the range [first, last). template @@ -729,34 +701,39 @@ class vector //! //! Complexity: Linear to the elements x contains. vector(const vector &x) - : m_holder(allocator_traits_type::select_on_container_copy_construction(x.m_holder.alloc()), x.size()) + : m_holder( container_detail::uninitialized_size + , allocator_traits_type::select_on_container_copy_construction(x.m_holder.alloc()) + , x.size()) { ::boost::container::uninitialized_copy_alloc_n ( this->m_holder.alloc(), container_detail::to_raw_pointer(x.m_holder.start()) , x.size(), container_detail::to_raw_pointer(this->m_holder.start())); } - //! Effects: Move constructor. Moves mx's resources to *this. + //! Effects: Move constructor. Moves x's resources to *this. //! //! Throws: Nothing //! //! Complexity: Constant. - vector(BOOST_RV_REF(vector) mx) BOOST_CONTAINER_NOEXCEPT - : m_holder(boost::move(mx.m_holder)) + vector(BOOST_RV_REF(vector) x) BOOST_CONTAINER_NOEXCEPT + : m_holder(boost::move(x.m_holder)) {} #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: Move constructor. Moves mx's resources to *this. + //! Effects: Move constructor. Moves x's resources to *this. //! //! Throws: If T's move constructor or allocation throws //! //! Complexity: Linear. //! - //! Note: Non-standard extension + //! Note: Non-standard extension to support static_vector template - vector(BOOST_RV_REF_BEG vector BOOST_RV_REF_END mx) - : m_holder(boost::move(mx.m_holder)) + vector(BOOST_RV_REF_BEG vector BOOST_RV_REF_END x + , typename container_detail::enable_if_c + < container_detail::is_version::value>::type * = 0 + ) + : m_holder(boost::move(x.m_holder)) {} #endif //!defined(BOOST_CONTAINER_DOXYGEN_INVOKED) @@ -770,7 +747,7 @@ class vector //! //! Complexity: Linear to the elements x contains. vector(const vector &x, const allocator_type &a) - : m_holder(a, x.size()) + : m_holder(container_detail::uninitialized_size, a, x.size()) { ::boost::container::uninitialized_copy_alloc_n_source ( this->m_holder.alloc(), container_detail::to_raw_pointer(x.m_holder.start()) @@ -778,25 +755,24 @@ class vector } //! Effects: Move constructor using the specified allocator. - //! Moves mx's resources to *this if a == allocator_type(). + //! Moves x's resources to *this if a == allocator_type(). //! Otherwise copies values from x to *this. //! //! Throws: If allocation or T's copy constructor throws. //! - //! Complexity: Constant if a == mx.get_allocator(), linear otherwise. - vector(BOOST_RV_REF(vector) mx, const allocator_type &a) - : m_holder(a) + //! Complexity: Constant if a == x.get_allocator(), linear otherwise. + vector(BOOST_RV_REF(vector) x, const allocator_type &a) + : m_holder(container_detail::uninitialized_size, a, x.size()) { - if(mx.m_holder.alloc() == a){ - this->m_holder.move_from_empty(mx.m_holder); + if(x.m_holder.alloc() == a){ + this->m_holder.move_from_empty(x.m_holder); } else{ - const size_type n = mx.size(); + const size_type n = x.size(); this->m_holder.first_allocation_same_allocator_type(n); ::boost::container::uninitialized_move_alloc_n_source - ( this->m_holder.alloc(), container_detail::to_raw_pointer(mx.m_holder.start()) + ( this->m_holder.alloc(), container_detail::to_raw_pointer(x.m_holder.start()) , n, container_detail::to_raw_pointer(this->m_holder.start())); - this->m_holder.m_size = n; } } @@ -811,7 +787,7 @@ class vector boost::container::destroy_alloc_n (this->get_stored_allocator(), container_detail::to_raw_pointer(this->m_holder.start()), this->m_holder.m_size); //vector_alloc_holder deallocates the data - } + } //! Effects: Makes *this contain the same elements as x. //! @@ -824,30 +800,32 @@ class vector vector& operator=(BOOST_COPY_ASSIGN_REF(vector) x) { if (&x != this){ - this->priv_copy_assign(boost::move(x), alloc_version()); + this->priv_copy_assign(x); } return *this; } - //! Effects: Move assignment. All mx's values are transferred to *this. + //! Effects: Move assignment. All x's values are transferred to *this. //! //! Postcondition: x.empty(). *this contains a the elements x had //! before the function. //! - //! Throws: Nothing + //! Throws: If allocator_traits_type::propagate_on_container_move_assignment + //! is false and (allocation throws or value_type's move constructor throws) //! - //! Complexity: Linear. + //! Complexity: Constant if allocator_traits_type:: + //! propagate_on_container_move_assignment is true or + //! this->get>allocator() == x.get_allocator(). Linear otherwise. vector& operator=(BOOST_RV_REF(vector) x) - //iG BOOST_CONTAINER_NOEXCEPT_IF(!allocator_type::propagate_on_container_move_assignment::value || is_nothrow_move_assignable::value);) - BOOST_CONTAINER_NOEXCEPT + BOOST_CONTAINER_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value) { - this->priv_move_assign(boost::move(x), alloc_version()); + this->priv_move_assign(boost::move(x)); return *this; } #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) - //! Effects: Move assignment. All mx's values are transferred to *this. + //! Effects: Move assignment. All x's values are transferred to *this. //! //! Postcondition: x.empty(). *this contains a the elements x had //! before the function. @@ -855,10 +833,37 @@ class vector //! Throws: If move constructor/assignment of T throws or allocation throws //! //! Complexity: Linear. - template - vector& operator=(BOOST_RV_REF_BEG vector BOOST_RV_REF_END x) + //! + //! Note: Non-standard extension to support static_vector + template + typename container_detail::enable_if_c + < container_detail::is_version::value && + !container_detail::is_same::value + , vector& >::type + operator=(BOOST_RV_REF_BEG vector BOOST_RV_REF_END x) { - this->priv_move_assign(boost::move(x), alloc_version()); + this->priv_move_assign(boost::move(x)); + return *this; + } + + //! Effects: Copy assignment. All x's values are copied to *this. + //! + //! Postcondition: x.empty(). *this contains a the elements x had + //! before the function. + //! + //! Throws: If move constructor/assignment of T throws or allocation throws + //! + //! Complexity: Linear. + //! + //! Note: Non-standard extension to support static_vector + template + typename container_detail::enable_if_c + < container_detail::is_version::value && + !container_detail::is_same::value + , vector& >::type + operator=(const vector &x) + { + this->priv_copy_assign(x); return *this; } @@ -874,8 +879,9 @@ class vector void assign(InIt first, InIt last #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) , typename container_detail::enable_if_c - < !container_detail::is_convertible::value - //&& container_detail::is_input_iterator::value + < !container_detail::is_convertible::value && + ( container_detail::is_input_iterator::value || + container_detail::is_same::value ) >::type * = 0 #endif ) @@ -899,6 +905,64 @@ class vector } } + //! Effects: Assigns the the range [first, last) to *this. + //! + //! Throws: If memory allocation throws or T's copy/move constructor/assignment or + //! T's constructor/assignment from dereferencing InpIt throws. + //! + //! Complexity: Linear to n. + template + void assign(FwdIt first, FwdIt last + #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + , typename container_detail::enable_if_c + < !container_detail::is_convertible::value && + ( !container_detail::is_input_iterator::value && + !container_detail::is_same::value ) + >::type * = 0 + #endif + ) + { + //For Fwd iterators the standard only requires EmplaceConstructible and assignable from *first + //so we can't do any backwards allocation + const size_type input_sz = static_cast(std::distance(first, last)); + const size_type old_capacity = this->capacity(); + if(input_sz > old_capacity){ //If input range is too big, we need to reallocate + size_type real_cap = 0; + std::pair ret = + this->m_holder.allocation_command(allocate_new, input_sz, input_sz, real_cap, this->m_holder.start()); + if(!ret.second){ //New allocation, just emplace new values + pointer const old_p = this->m_holder.start(); + if(old_p){ + this->priv_destroy_all(); + this->m_holder.alloc().deallocate(old_p, old_capacity); + } + this->m_holder.start(ret.first); + this->m_holder.capacity(real_cap); + this->m_holder.m_size = 0; + this->priv_uninitialized_construct_at_end(first, last); + return; + } + else{ + //Forward expansion, use assignment + back deletion/construction that comes later + } + } + //Overwrite all elements we can from [first, last) + iterator cur = this->begin(); + const iterator end_it = this->end(); + for ( ; first != last && cur != end_it; ++cur, ++first){ + *cur = *first; + } + + if (first == last){ + //There are no more elements in the sequence, erase remaining + this->priv_destroy_last_n(this->size() - input_sz); + } + else{ + //Uninitialized construct at end the remaining range + this->priv_uninitialized_construct_at_end(first, last); + } + } + //! Effects: Assigns the n copies of val to *this. //! //! Throws: If memory allocation throws or @@ -1075,44 +1139,33 @@ class vector { return allocator_traits_type::max_size(this->m_holder.alloc()); } //! Effects: Inserts or erases elements at the end such that - //! the size becomes n. New elements are default constructed. + //! the size becomes n. New elements are value initialized. //! - //! Throws: If memory allocation throws, or T's copy constructor throws. + //! Throws: If memory allocation throws, or T's copy/move or value initialization throws. //! //! Complexity: Linear to the difference between size() and new_size. void resize(size_type new_size) - { - const size_type sz = this->size(); - if (new_size < sz){ - //Destroy last elements - this->priv_destroy_last_n(sz - new_size); - } - else{ - const size_type n = new_size - this->size(); - container_detail::insert_default_constructed_n_proxy proxy(this->m_holder.alloc()); - this->priv_forward_range_insert_at_end(n, proxy, alloc_version()); - } - } + { this->priv_resize(new_size, value_init); } + + //! Effects: Inserts or erases elements at the end such that + //! the size becomes n. New elements are default initialized. + //! + //! Throws: If memory allocation throws, or T's copy/move or default initialization throws. + //! + //! Complexity: Linear to the difference between size() and new_size. + //! + //! Note: Non-standard extension + void resize(size_type new_size, default_init_t) + { this->priv_resize(new_size, default_init); } //! Effects: Inserts or erases elements at the end such that //! the size becomes n. New elements are copy constructed from x. //! - //! Throws: If memory allocation throws, or T's copy constructor throws. + //! Throws: If memory allocation throws, or T's copy/move constructor throws. //! //! Complexity: Linear to the difference between size() and new_size. void resize(size_type new_size, const T& x) - { - const size_type sz = this->size(); - if (new_size < sz){ - //Destroy last elements - this->priv_destroy_last_n(sz - new_size); - } - else{ - const size_type n = new_size - this->size(); - container_detail::insert_n_copies_proxy proxy(this->m_holder.alloc(), x); - this->priv_forward_range_insert_at_end(n, proxy, alloc_version()); - } - } + { this->priv_resize(new_size, x); } //! Effects: Number of elements for which memory has been allocated. //! capacity() is always greater than or equal to size(). @@ -1274,7 +1327,7 @@ class vector //! std::forward(args)... in the end of the vector. //! //! Throws: If memory allocation throws or the in-place constructor throws or - //! T's move constructor throws. + //! T's copy/move constructor throws. //! //! Complexity: Amortized constant time. template @@ -1289,7 +1342,7 @@ class vector else{ typedef container_detail::insert_emplace_proxy type; this->priv_forward_range_insert_no_capacity - (vector_iterator_get_ptr(this->cend()), 1, type(this->m_holder.alloc(), ::boost::forward(args)...), alloc_version()); + (vector_iterator_get_ptr(this->cend()), 1, type(::boost::forward(args)...), alloc_version()); } } @@ -1299,7 +1352,7 @@ class vector //! std::forward(args)... before position //! //! Throws: If memory allocation throws or the in-place constructor throws or - //! T's move constructor/assignment throws. + //! T's copy/move constructor/assignment throws. //! //! Complexity: If position is end(), amortized constant time //! Linear time otherwise. @@ -1308,8 +1361,8 @@ class vector { //Just call more general insert(pos, size, value) and return iterator typedef container_detail::insert_emplace_proxy type; - return this->priv_forward_range_insert( vector_iterator_get_ptr(position), 1, type(this->m_holder.alloc() - , ::boost::forward(args)...), alloc_version()); + return this->priv_forward_range_insert( vector_iterator_get_ptr(position), 1 + , type(::boost::forward(args)...), alloc_version()); } #else @@ -1326,11 +1379,11 @@ class vector ++this->m_holder.m_size; \ } \ else{ \ - container_detail::BOOST_PP_CAT(insert_emplace_proxy_arg, n) \ - proxy \ - (this->m_holder.alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \ + typedef container_detail::BOOST_PP_CAT(insert_emplace_proxy_arg, n) \ + type; \ this->priv_forward_range_insert_no_capacity \ - (vector_iterator_get_ptr(this->cend()), 1, proxy, alloc_version()); \ + ( vector_iterator_get_ptr(this->cend()), 1 \ + , type(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)), alloc_version()); \ } \ } \ \ @@ -1338,11 +1391,11 @@ class vector iterator emplace(const_iterator pos \ BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_LIST, _)) \ { \ - container_detail::BOOST_PP_CAT(insert_emplace_proxy_arg, n) \ - proxy \ - (this->m_holder.alloc() BOOST_PP_ENUM_TRAILING(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)); \ + typedef container_detail::BOOST_PP_CAT(insert_emplace_proxy_arg, n) \ + type; \ return this->priv_forward_range_insert \ - (container_detail::to_raw_pointer(vector_iterator_get_ptr(pos)), 1, proxy, alloc_version()); \ + ( container_detail::to_raw_pointer(vector_iterator_get_ptr(pos)), 1 \ + , type(BOOST_PP_ENUM(n, BOOST_CONTAINER_PP_PARAM_FORWARD, _)), alloc_version()); \ } \ //! #define BOOST_PP_LOCAL_LIMITS (0, BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS) @@ -1360,17 +1413,17 @@ class vector void push_back(const T &x); //! Effects: Constructs a new element in the end of the vector - //! and moves the resources of mx to this new element. + //! and moves the resources of x to this new element. //! //! Throws: If memory allocation throws or - //! T's move constructor throws. + //! T's copy/move constructor throws. //! //! Complexity: Amortized constant time. void push_back(T &&x); #else BOOST_MOVE_CONVERSION_AWARE_CATCH(push_back, T, void, priv_push_back) #endif - + #if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) //! Requires: position must be a valid iterator of *this. //! @@ -1384,7 +1437,7 @@ class vector //! Requires: position must be a valid iterator of *this. //! - //! Effects: Insert a new element before position with mx's resources. + //! Effects: Insert a new element before position with x's resources. //! //! Throws: If memory allocation throws. //! @@ -1392,7 +1445,7 @@ class vector //! Linear time otherwise. iterator insert(const_iterator position, T &&x); #else - BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator) + BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert, T, iterator, priv_insert, const_iterator, const_iterator) #endif //! Requires: p must be a valid iterator of *this. @@ -1401,12 +1454,12 @@ class vector //! //! Returns: an iterator to the first inserted element or p if n is 0. //! - //! Throws: If memory allocation throws or T's copy constructor throws. + //! Throws: If memory allocation throws or T's copy/move constructor throws. //! //! Complexity: Linear to n. iterator insert(const_iterator p, size_type n, const T& x) { - container_detail::insert_n_copies_proxy proxy(this->m_holder.alloc(), x); + container_detail::insert_n_copies_proxy proxy(x); return this->priv_forward_range_insert(vector_iterator_get_ptr(p), n, proxy, alloc_version()); } @@ -1448,11 +1501,37 @@ class vector >::type * = 0 ) { - container_detail::insert_range_proxy proxy(this->m_holder.alloc(), first); + container_detail::insert_range_proxy proxy(first); return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), std::distance(first, last), proxy, alloc_version()); } #endif + //! Requires: p must be a valid iterator of *this. num, must + //! be equal to std::distance(first, last) + //! + //! Effects: Insert a copy of the [first, last) range before pos. + //! + //! Returns: an iterator to the first inserted element or pos if first == last. + //! + //! Throws: If memory allocation throws, T's constructor from a + //! dereferenced InpIt throws or T's copy/move constructor/assignment throws. + //! + //! Complexity: Linear to std::distance [first, last). + //! + //! Note: This function avoids a linear operation to calculate std::distance[first, last) + //! for forward and bidirectional iterators, and a one by one insertion for input iterators. This is a + //! a non-standard extension. + #if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED) + template + iterator insert(const_iterator pos, size_type num, InIt first, InIt last) + { + BOOST_ASSERT(container_detail::is_input_iterator::value || + num == static_cast(std::distance(first, last))); + container_detail::insert_range_proxy proxy(first); + return this->priv_forward_range_insert(vector_iterator_get_ptr(pos), num, proxy, alloc_version()); + } + #endif + //! Effects: Removes the last element from the vector. //! //! Throws: Nothing. @@ -1508,7 +1587,7 @@ class vector //! Throws: Nothing. //! //! Complexity: Constant. - void swap(vector& x) BOOST_CONTAINER_NOEXCEPT_IF((!container_detail::is_same::value)) + void swap(vector& x) BOOST_CONTAINER_NOEXCEPT_IF((!container_detail::is_version::value)) { //Just swap internals in case of !allocator_v0. Otherwise, deep swap this->m_holder.swap(x.m_holder); @@ -1521,16 +1600,18 @@ class vector //! Effects: Swaps the contents of *this and x. //! - //! Throws: If T's move constructor throws. + //! Throws: Nothing. //! //! Complexity: Linear //! - //! Note: non-standard extension. + //! Note: Non-standard extension to support static_vector template - void swap(vector & x) - { - this->m_holder.swap(x.m_holder); - } + void swap(vector & x + , typename container_detail::enable_if_c + < container_detail::is_version::value && + !container_detail::is_same::value >::type * = 0 + ) + { this->m_holder.swap(x.m_holder); } #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED @@ -1538,61 +1619,81 @@ class vector //! //! Throws: Nothing. //! - //! Complexity: Linear to the number of elements in the vector. + //! Complexity: Linear to the number of elements in the container. void clear() BOOST_CONTAINER_NOEXCEPT { this->priv_destroy_all(); } - /// @cond + //! Effects: Returns true if x and y are equal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator==(const vector& x, const vector& y) + { return x.size() == y.size() && std::equal(x.begin(), x.end(), y.begin()); } + + //! Effects: Returns true if x and y are unequal + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator!=(const vector& x, const vector& y) + { return !(x == y); } + + //! Effects: Returns true if x is less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<(const vector& x, const vector& y) + { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } + + //! Effects: Returns true if x is greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>(const vector& x, const vector& y) + { return y < x; } + + //! Effects: Returns true if x is equal or less than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator<=(const vector& x, const vector& y) + { return !(y < x); } + + //! Effects: Returns true if x is equal or greater than y + //! + //! Complexity: Linear to the number of elements in the container. + friend bool operator>=(const vector& x, const vector& y) + { return !(x < y); } + + //! Effects: x.swap(y) + //! + //! Complexity: Constant. + friend void swap(vector& x, vector& y) + { x.swap(y); } + + #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED //Absolutely experimental. This function might change, disappear or simply crash! template void insert_ordered_at(size_type element_count, BiDirPosConstIt last_position_it, BiDirValueIt last_value_it) { const size_type *dummy = 0; - this->priv_insert_ordered_at(element_count, last_position_it, false, &dummy[0], last_value_it); + this->priv_insert_ordered_at(element_count, last_position_it, false, dummy, last_value_it); } //Absolutely experimental. This function might change, disappear or simply crash! template - void insert_ordered_at(size_type element_count, BiDirPosConstIt last_position_it, BiDirSkipConstIt last_skip_it, BiDirValueIt last_value_it) + void insert_ordered_at( size_type element_count, BiDirPosConstIt last_position_it + , BiDirSkipConstIt last_skip_it, BiDirValueIt last_value_it) { this->priv_insert_ordered_at(element_count, last_position_it, true, last_skip_it, last_value_it); } private: - template + template void priv_move_assign(BOOST_RV_REF_BEG vector BOOST_RV_REF_END x - , AllocVersion , typename container_detail::enable_if_c - < container_detail::is_same::value && - !container_detail::is_same::value - >::type * = 0) + < container_detail::is_version::value >::type * = 0) { - if(this->capacity() < x.size()){ + if(!container_detail::is_same::value && + this->capacity() < x.size()){ throw_bad_alloc(); } - this->priv_move_assign_impl(boost::move(x), AllocVersion()); - } - - template - void priv_move_assign(BOOST_RV_REF_BEG vector BOOST_RV_REF_END x - , AllocVersion - , typename container_detail::enable_if_c - < !container_detail::is_same::value || - container_detail::is_same::value - >::type * = 0) - { - this->priv_move_assign_impl(boost::move(x), AllocVersion()); - } - - template - void priv_move_assign_impl(BOOST_RV_REF_BEG vector BOOST_RV_REF_END x - , AllocVersion - , typename container_detail::enable_if_c - < container_detail::is_same::value - >::type * = 0) - { T* const this_start = container_detail::to_raw_pointer(m_holder.start()); T* const other_start = container_detail::to_raw_pointer(x.m_holder.start()); const size_type this_sz = m_holder.m_size; @@ -1601,40 +1702,46 @@ class vector this->m_holder.m_size = other_sz; } - template - void priv_move_assign_impl(BOOST_RV_REF_BEG vector BOOST_RV_REF_END x - , AllocVersion + template + void priv_move_assign(BOOST_RV_REF_BEG vector BOOST_RV_REF_END x , typename container_detail::enable_if_c - < !container_detail::is_same::value - >::type * = 0) + < !container_detail::is_version::value && + container_detail::is_same::value>::type * = 0) { //for move constructor, no aliasing (&x != this) is assummed. + BOOST_ASSERT(this != &x); allocator_type &this_alloc = this->m_holder.alloc(); allocator_type &x_alloc = x.m_holder.alloc(); - //If allocators are equal we can just swap pointers - if(this_alloc == x_alloc){ + const bool propagate_alloc = allocator_traits_type:: + propagate_on_container_move_assignment::value; + container_detail::bool_ flag; + const bool allocators_equal = this_alloc == x_alloc; (void)allocators_equal; + //Resources can be transferred if both allocators are + //going to be equal after this function (either propagated or already equal) + if(propagate_alloc || allocators_equal){ //Destroy objects but retain memory in case x reuses it in the future this->clear(); - this->m_holder.swap(x.m_holder); //Move allocator if needed - container_detail::bool_ flag; container_detail::move_alloc(this_alloc, x_alloc, flag); + //Nothrow swap + this->m_holder.swap(x.m_holder); } - //If unequal allocators, then do a one by one move + //Else do a one by one move else{ - //TO-DO: optimize this - this->assign( boost::make_move_iterator(container_detail::to_raw_pointer(x.m_holder.start())) - , boost::make_move_iterator(container_detail::to_raw_pointer(x.m_holder.start() + x.m_holder.m_size))); + this->assign( boost::make_move_iterator(x.begin()) + , boost::make_move_iterator(x.end())); } } - template - void priv_copy_assign(const vector &x, AllocVersion + template + void priv_copy_assign(const vector &x , typename container_detail::enable_if_c - < container_detail::is_same::value - >::type * = 0) + < container_detail::is_version::value >::type * = 0) { + if(!container_detail::is_same::value && + this->capacity() < x.size()){ + throw_bad_alloc(); + } T* const this_start = container_detail::to_raw_pointer(m_holder.start()); T* const other_start = container_detail::to_raw_pointer(x.m_holder.start()); const size_type this_sz = m_holder.m_size; @@ -1643,11 +1750,11 @@ class vector this->m_holder.m_size = other_sz; } - template - void priv_copy_assign(const vector &x, AllocVersion + template + void priv_copy_assign(const vector &x , typename container_detail::enable_if_c - < !container_detail::is_same::value - >::type * = 0) + < !container_detail::is_version::value && + container_detail::is_same::value >::type * = 0) { allocator_type &this_alloc = this->m_holder.alloc(); const allocator_type &x_alloc = x.m_holder.alloc(); @@ -1663,25 +1770,23 @@ class vector } void priv_reserve(size_type, allocator_v0) + { throw_bad_alloc(); } + + container_detail::insert_range_proxy, T*> priv_dummy_empty_proxy() { - throw_bad_alloc(); + return container_detail::insert_range_proxy, T*> + (::boost::make_move_iterator((T *)0)); } void priv_reserve(size_type new_cap, allocator_v1) { //There is not enough memory, allocate a new buffer pointer p = this->m_holder.allocate(new_cap); - //Backwards (and possibly forward) expansion - #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS - ++this->num_alloc; - #endif - T * const raw_beg = container_detail::to_raw_pointer(this->m_holder.start()); - const size_type sz = m_holder.m_size; - ::boost::container::uninitialized_move_alloc_n_source - ( this->m_holder.alloc(), raw_beg, sz, container_detail::to_raw_pointer(p) ); - boost::container::destroy_alloc_n(this->m_holder.alloc(), raw_beg, sz); - this->m_holder.start(p); - this->m_holder.capacity(new_cap); + //We will reuse insert code, so create a dummy input iterator + this->priv_forward_range_insert_new_allocation + ( container_detail::to_raw_pointer(p), new_cap + , container_detail::to_raw_pointer(this->m_holder.start()) + this->m_holder.m_size + , 0, this->priv_dummy_empty_proxy()); } void priv_reserve(size_type new_cap, allocator_v2) @@ -1690,10 +1795,8 @@ class vector //buffer or expand the old one. bool same_buffer_start; size_type real_cap = 0; - std::pair ret = - this->m_holder.allocation_command - (allocate_new | expand_fwd | expand_bwd, - new_cap, new_cap, real_cap, this->m_holder.start()); + std::pair ret = this->m_holder.allocation_command + (allocate_new | expand_fwd | expand_bwd, new_cap, new_cap, real_cap, this->m_holder.start()); //Check for forward expansion same_buffer_start = ret.second && this->m_holder.start() == ret.first; @@ -1703,49 +1806,26 @@ class vector #endif this->m_holder.capacity(real_cap); } - //If there is no forward expansion, move objects - else{ - //Backwards (and possibly forward) expansion - if(ret.second){ - //We will reuse insert code, so create a dummy input iterator - container_detail::insert_range_proxy, T*> - proxy(this->m_holder.alloc(), ::boost::make_move_iterator((T *)0)); + else{ //If there is no forward expansion, move objects, we will reuse insertion code + T * const new_mem = container_detail::to_raw_pointer(ret.first); + T * const ins_pos = container_detail::to_raw_pointer(this->m_holder.start()) + this->m_holder.m_size; + if(ret.second){ //Backwards (and possibly forward) expansion #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS ++this->num_expand_bwd; #endif this->priv_forward_range_insert_expand_backwards - ( container_detail::to_raw_pointer(ret.first) - , real_cap - , container_detail::to_raw_pointer(this->m_holder.start()) - , 0 - , proxy); + ( new_mem , real_cap, ins_pos, 0, this->priv_dummy_empty_proxy()); } - //New buffer - else{ - //Backwards (and possibly forward) expansion + else{ //New buffer #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS ++this->num_alloc; #endif - T * const raw_beg = container_detail::to_raw_pointer(this->m_holder.start()); - const size_type sz = m_holder.m_size; - ::boost::container::uninitialized_move_alloc_n_source - ( this->m_holder.alloc(), raw_beg, sz, container_detail::to_raw_pointer(ret.first) ); - boost::container::destroy_alloc_n(this->m_holder.alloc(), raw_beg, sz); - this->m_holder.start(ret.first); - this->m_holder.capacity(real_cap); + this->priv_forward_range_insert_new_allocation + ( new_mem, real_cap, ins_pos, 0, this->priv_dummy_empty_proxy()); } } } - template - void priv_uninitialized_fill(Proxy proxy, size_type n) const - { - //Copy first new elements in pos - proxy.uninitialized_copy_n_and_update - (container_detail::to_raw_pointer(this->m_holder.start()), n); - //m_holder.size was already initialized to n in vector_alloc_holder's constructor - } - void priv_destroy(value_type* p) BOOST_CONTAINER_NOEXCEPT { if(!value_traits::trivial_dctr) @@ -1759,6 +1839,16 @@ class vector this->m_holder.m_size -= n; } + template + void priv_uninitialized_construct_at_end(InpIt first, InpIt last) + { + T* end_pos = container_detail::to_raw_pointer(this->m_holder.start()) + this->m_holder.m_size; + for(; first != last; ++first, ++end_pos, ++this->m_holder.m_size){ + //There is more memory, just construct a new object at the end + allocator_traits_type::construct(this->m_holder.alloc(), end_pos, *first); + } + } + void priv_destroy_all() BOOST_CONTAINER_NOEXCEPT { boost::container::destroy_alloc_n @@ -1770,39 +1860,54 @@ class vector iterator priv_insert(const const_iterator &p, BOOST_FWD_REF(U) x) { return this->priv_forward_range_insert - ( vector_iterator_get_ptr(p), 1, container_detail::get_insert_value_proxy(this->m_holder.alloc() - , ::boost::forward(x)), alloc_version()); + ( vector_iterator_get_ptr(p), 1, container_detail::get_insert_value_proxy + (::boost::forward(x)), alloc_version()); } - void priv_push_back(const T &x) + container_detail::insert_copy_proxy priv_single_insert_proxy(const T &x) + { return container_detail::insert_copy_proxy (x); } + + container_detail::insert_move_proxy priv_single_insert_proxy(BOOST_RV_REF(T) x) + { return container_detail::insert_move_proxy (x); } + + template + void priv_push_back(BOOST_FWD_REF(U) u) { if (this->m_holder.m_size < this->m_holder.capacity()){ //There is more memory, just construct a new object at the end allocator_traits_type::construct ( this->m_holder.alloc() , container_detail::to_raw_pointer(this->m_holder.start() + this->m_holder.m_size) - , x ); + , ::boost::forward(u) ); ++this->m_holder.m_size; } else{ - container_detail::insert_copy_proxy proxy(this->m_holder.alloc(), x); - this->priv_forward_range_insert_no_capacity(vector_iterator_get_ptr(this->cend()), 1, proxy, alloc_version()); + this->priv_forward_range_insert_no_capacity + ( vector_iterator_get_ptr(this->cend()), 1 + , this->priv_single_insert_proxy(::boost::forward(u)), alloc_version()); } } - void priv_push_back(BOOST_RV_REF(T) x) + container_detail::insert_n_copies_proxy priv_resize_proxy(const T &x) + { return container_detail::insert_n_copies_proxy(x); } + + container_detail::insert_default_initialized_n_proxy priv_resize_proxy(default_init_t) + { return container_detail::insert_default_initialized_n_proxy(); } + + container_detail::insert_value_initialized_n_proxy priv_resize_proxy(value_init_t) + { return container_detail::insert_value_initialized_n_proxy(); } + + template + void priv_resize(size_type new_size, const U& u) { - if (this->m_holder.m_size < this->m_holder.capacity()){ - //There is more memory, just construct a new object at the end - allocator_traits_type::construct - ( this->m_holder.alloc() - , container_detail::to_raw_pointer(this->m_holder.start() + this->m_holder.m_size) - , ::boost::move(x) ); - ++this->m_holder.m_size; + const size_type sz = this->size(); + if (new_size < sz){ + //Destroy last elements + this->priv_destroy_last_n(sz - new_size); } else{ - container_detail::insert_move_proxy proxy(this->m_holder.alloc(), x); - this->priv_forward_range_insert_no_capacity(vector_iterator_get_ptr(this->cend()), 1, proxy, alloc_version()); + const size_type n = new_size - this->size(); + this->priv_forward_range_insert_at_end(n, this->priv_resize_proxy(u), alloc_version()); } } @@ -1824,17 +1929,13 @@ class vector pointer p = this->m_holder.allocate(sz); //We will reuse insert code, so create a dummy input iterator - container_detail::insert_range_proxy, T*> - proxy(this->m_holder.alloc(), ::boost::make_move_iterator((T *)0)); #ifdef BOOST_CONTAINER_VECTOR_ALLOC_STATS ++this->num_alloc; #endif this->priv_forward_range_insert_new_allocation - ( container_detail::to_raw_pointer(p) - , sz + ( container_detail::to_raw_pointer(p), sz , container_detail::to_raw_pointer(this->m_holder.start()) - , 0 - , proxy); + , 0, this->priv_dummy_empty_proxy()); } } } @@ -1889,7 +1990,6 @@ class vector return iterator(this->m_holder.start() + n_pos); } - template iterator priv_forward_range_insert_no_capacity (const pointer &pos, const size_type n, const InsertionProxy insert_range_proxy, allocator_v2) @@ -1966,8 +2066,7 @@ class vector if (n <= remaining){ const size_type n_pos = raw_pos - container_detail::to_raw_pointer(this->m_holder.start()); - this->priv_forward_range_insert_expand_forward - (raw_pos, n, insert_range_proxy); + this->priv_forward_range_insert_expand_forward(raw_pos, n, insert_range_proxy); return iterator(this->m_holder.start() + n_pos); } else{ @@ -2100,7 +2199,7 @@ class vector // //Old situation: // first_pos last_pos old_limit - // | | | + // | | | // ____________V_______V__________________V_____________ //| prefix | range | suffix |raw_mem ~ //|____________|_______|__________________|_____________~ @@ -2109,19 +2208,19 @@ class vector // range is moved through move assignments // // first_pos last_pos limit_pos - // | | | + // | | | // ____________V_______V__________________V_____________ //| prefix' | | | range |suffix'|raw_mem ~ //|________________+______|___^___|_______|_____________~ // | | - // |_>_>_>_>_>^ + // |_>_>_>_>_>^ // // //New situation in Case B (hole_size > 0): // range is moved through uninitialized moves // // first_pos last_pos limit_pos - // | | | + // | | | // ____________V_______V__________________V________________ //| prefix' | | | [hole] | range | //|_______________________________________|________|___^___| @@ -2132,7 +2231,7 @@ class vector // range is moved through move assignments and uninitialized moves // // first_pos last_pos limit_pos - // | | | + // | | | // ____________V_______V__________________V___ //| prefix' | | | range | //|___________________________________|___^___| @@ -2149,7 +2248,7 @@ class vector T* const last_ptr = begin_ptr + last_pos; size_type hole_size = 0; - //Case Allocator: + //Case A: if((last_pos + shift_count) <= limit_pos){ //All move assigned boost::move_backward(first_ptr, last_ptr, last_ptr + shift_count); @@ -2178,7 +2277,7 @@ class vector void priv_forward_range_insert_at_end_expand_forward(const size_type n, InsertionProxy insert_range_proxy) { T* const old_finish = container_detail::to_raw_pointer(this->m_holder.start()) + this->m_holder.m_size; - insert_range_proxy.uninitialized_copy_n_and_update(old_finish, n); + insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n); this->m_holder.m_size += n; } @@ -2192,7 +2291,7 @@ class vector const size_type elems_after = old_finish - pos; if (!elems_after){ - insert_range_proxy.uninitialized_copy_n_and_update(old_finish, n); + insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n); this->m_holder.m_size += n; } else if (elems_after >= n){ @@ -2204,7 +2303,7 @@ class vector //Copy previous to last objects to the initialized end boost::move_backward(pos, old_finish - n, old_finish); //Insert new objects in the pos - insert_range_proxy.copy_n_and_update(pos, n); + insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, n); } else { //The new elements don't fit in the [pos, end()) range. @@ -2213,9 +2312,9 @@ class vector ::boost::container::uninitialized_move_alloc(this->m_holder.alloc(), pos, old_finish, pos + n); BOOST_TRY{ //Copy first new elements in pos (gap is still there) - insert_range_proxy.copy_n_and_update(pos, elems_after); + insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, elems_after); //Copy to the beginning of the unallocated zone the last new elements (the gap is closed). - insert_range_proxy.uninitialized_copy_n_and_update(old_finish, n - elems_after); + insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n - elems_after); this->m_holder.m_size += n; } BOOST_CATCH(...){ @@ -2234,21 +2333,22 @@ class vector T *new_finish = new_start; T *old_finish; //Anti-exception rollbacks - typename value_traits::ArrayDeallocator scoped_alloc(new_start, this->m_holder.alloc(), new_cap); - typename value_traits::ArrayDestructor constructed_values_destroyer(new_start, this->m_holder.alloc(), 0u); + typename value_traits::ArrayDeallocator new_buffer_deallocator(new_start, this->m_holder.alloc(), new_cap); + typename value_traits::ArrayDestructor new_values_destroyer(new_start, this->m_holder.alloc(), 0u); //Initialize with [begin(), pos) old buffer //the start of the new buffer - T *old_buffer = container_detail::to_raw_pointer(this->m_holder.start()); + T * const old_buffer = container_detail::to_raw_pointer(this->m_holder.start()); if(old_buffer){ new_finish = ::boost::container::uninitialized_move_alloc (this->m_holder.alloc(), container_detail::to_raw_pointer(this->m_holder.start()), pos, old_finish = new_finish); - constructed_values_destroyer.increment_size(new_finish - old_finish); + new_values_destroyer.increment_size(new_finish - old_finish); } //Initialize new objects, starting from previous point - insert_range_proxy.uninitialized_copy_n_and_update(old_finish = new_finish, n); + old_finish = new_finish; + insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, n); new_finish += n; - constructed_values_destroyer.increment_size(new_finish - old_finish); + new_values_destroyer.increment_size(new_finish - old_finish); //Initialize from the rest of the old buffer, //starting from previous point if(old_buffer){ @@ -2264,8 +2364,8 @@ class vector this->m_holder.m_size = new_finish - new_start; this->m_holder.capacity(new_cap); //All construction successful, disable rollbacks - constructed_values_destroyer.release(); - scoped_alloc.release(); + new_values_destroyer.release(); + new_buffer_deallocator.release(); } template @@ -2276,8 +2376,8 @@ class vector //n can be zero to just expand capacity //Backup old data T* const old_start = container_detail::to_raw_pointer(this->m_holder.start()); - T* const old_finish = old_start + this->m_holder.m_size; const size_type old_size = this->m_holder.m_size; + T* const old_finish = old_start + old_size; //We can have 8 possibilities: const size_type elemsbefore = static_cast(pos - old_start); @@ -2291,17 +2391,18 @@ class vector //If anything goes wrong, this object will destroy //all the old objects to fulfill previous vector state - typename value_traits::OldArrayDestructor old_values_destroyer(old_start, this->m_holder.alloc(), old_size); + typename value_traits::ArrayDestructor old_values_destroyer(old_start, this->m_holder.alloc(), old_size); //Check if s_before is big enough to hold the beginning of old data + new data if(s_before >= before_plus_new){ //Copy first old values before pos, after that the new objects - T *const new_elem_pos = ::boost::container::uninitialized_move_alloc(this->m_holder.alloc(), old_start, pos, new_start); + T *const new_elem_pos = + ::boost::container::uninitialized_move_alloc(this->m_holder.alloc(), old_start, pos, new_start); this->m_holder.m_size = elemsbefore; - insert_range_proxy.uninitialized_copy_n_and_update(new_elem_pos, n); - this->m_holder.m_size += n; + insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), new_elem_pos, n); + this->m_holder.m_size = before_plus_new; + const size_type new_size = old_size + n; //Check if s_before is so big that even copying the old data + new data //there is a gap between the new data and the old data - const size_type new_size = old_size + n; if(s_before >= new_size){ //Old situation: // _________________________________________________________ @@ -2314,10 +2415,12 @@ class vector //|___________|__________|_________|________________________| // //Now initialize the rest of memory with the last old values - ::boost::container::uninitialized_move_alloc - (this->m_holder.alloc(), pos, old_finish, new_start + before_plus_new); - //All new elements correctly constructed, avoid new element destruction - this->m_holder.m_size = new_size; + if(before_plus_new != new_size){ //Special case to avoid operations in back insertion + ::boost::container::uninitialized_move_alloc + (this->m_holder.alloc(), pos, old_finish, new_start + before_plus_new); + //All new elements correctly constructed, avoid new element destruction + this->m_holder.m_size = new_size; + } //Old values destroyed automatically with "old_values_destroyer" //when "old_values_destroyer" goes out of scope unless the have trivial //destructor after move. @@ -2339,22 +2442,28 @@ class vector //Now initialize the rest of memory with the last old values //All new elements correctly constructed, avoid new element destruction const size_type raw_gap = s_before - before_plus_new; - //Now initialize the rest of s_before memory with the - //first of elements after new values - ::boost::container::uninitialized_move_alloc_n - (this->m_holder.alloc(), pos, raw_gap, new_start + before_plus_new); - //Update size since we have a contiguous buffer - this->m_holder.m_size = old_size + s_before; - //All new elements correctly constructed, avoid old element destruction - old_values_destroyer.release(); - //Now copy remaining last objects in the old buffer begin - T * const to_destroy = ::boost::move(pos + raw_gap, old_finish, old_start); - //Now destroy redundant elements except if they were moved and - //they have trivial destructor after move - size_type n_destroy = old_finish - to_destroy; - if(!value_traits::trivial_dctr_after_move) - boost::container::destroy_alloc_n(this->get_stored_allocator(), to_destroy, n_destroy); - this->m_holder.m_size -= n_destroy; + if(!value_traits::trivial_dctr){ + //Now initialize the rest of s_before memory with the + //first of elements after new values + ::boost::container::uninitialized_move_alloc_n + (this->m_holder.alloc(), pos, raw_gap, new_start + before_plus_new); + //Now we have a contiguous buffer so program trailing element destruction + //and update size to the final size. + old_values_destroyer.shrink_forward(elemsbefore + raw_gap); + this->m_holder.m_size = new_size; + //Now move remaining last objects in the old buffer begin + ::boost::move(pos + raw_gap, old_finish, old_start); + //Once moved, avoid calling the destructors if trivial after move + if(value_traits::trivial_dctr_after_move){ + old_values_destroyer.release(); + } + } + else{ //If trivial destructor, we can uninitialized copy + copy in a single uninitialized copy + ::boost::container::uninitialized_move_alloc_n + (this->m_holder.alloc(), pos, old_finish - pos, new_start + before_plus_new); + this->m_holder.m_size = new_size; + old_values_destroyer.release(); + } } } else{ @@ -2408,27 +2517,30 @@ class vector //Copy the first part of old_begin to raw_mem ::boost::container::uninitialized_move_alloc_n (this->m_holder.alloc(), old_start, s_before, new_start); - //The buffer is all constructed until old_end, - //release destroyer and update size - old_values_destroyer.release(); - this->m_holder.m_size = old_size + s_before; - //Now copy the second part of old_begin overwriting itself - T *const next = ::boost::move(old_start + s_before, pos, old_start); + //The buffer is all constructed until old_end if(do_after){ + //release destroyer and update size + old_values_destroyer.release(); + this->m_holder.m_size = old_size + s_before; + //Now copy the second part of old_begin overwriting itself + T *const next = ::boost::move(old_start + s_before, pos, old_start); //Now copy the new_beg elements - insert_range_proxy.copy_n_and_update(next, s_before); + insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), next, s_before); } else{ - //Now copy the all the new elements - insert_range_proxy.copy_n_and_update(next, n); - //Now displace old_end elements - T* const move_end = ::boost::move(pos, old_finish, next + n); - //Destroy remaining moved elements from old_end except if - //they have trivial destructor after being moved + //The buffer is all constructed until old_end, + //so program trailing destruction and assign final size + this->m_holder.m_size = old_size + n; const size_type n_destroy = s_before - n; - if(!value_traits::trivial_dctr_after_move) - boost::container::destroy_alloc_n(this->get_stored_allocator(), move_end, n_destroy); - this->m_holder.m_size -= n_destroy; + old_values_destroyer.shrink_forward(old_size - n_destroy); + //Now copy the second part of old_begin overwriting itself + T *const next = ::boost::move(old_start + s_before, pos, old_start); + //Now copy the all the new elements + insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), next, n); + //Now displace old_end elements + ::boost::move(pos, old_finish, next + n); + if(value_traits::trivial_dctr_after_move) + old_values_destroyer.release(); } } else { @@ -2462,7 +2574,7 @@ class vector (this->m_holder.alloc(), old_start, pos, new_start); this->m_holder.m_size = elemsbefore; const size_type mid_n = s_before - elemsbefore; - insert_range_proxy.uninitialized_copy_n_and_update(new_pos, mid_n); + insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), new_pos, mid_n); //The buffer is all constructed until old_end, //release destroyer this->m_holder.m_size = old_size + s_before; @@ -2470,15 +2582,15 @@ class vector if(do_after){ //Copy new_beg part - insert_range_proxy.copy_n_and_update(old_start, elemsbefore); + insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), old_start, elemsbefore); } else{ //Copy all new elements const size_type rest_new = n - mid_n; - insert_range_proxy.copy_n_and_update(old_start, rest_new); - T* move_start = old_start + rest_new; + insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), old_start, rest_new); + T* const move_start = old_start + rest_new; //Displace old_end - T* move_end = ::boost::move(pos, old_finish, move_start); + T* const move_end = ::boost::move(pos, old_finish, move_start); //Destroy remaining moved elements from old_end except if they //have trivial destructor after being moved size_type n_destroy = s_before - n; @@ -2533,7 +2645,7 @@ class vector boost::move_backward(pos, finish_n, old_finish); //Now overwrite with new_end //The new_end part is [first + (n - n_after), last) - insert_range_proxy.copy_n_and_update(pos, n_after); + insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, n_after); } else { //The raw_mem from end will divide new_end part @@ -2558,9 +2670,9 @@ class vector BOOST_TRY{ //Copy the first part to the already constructed old_end zone - insert_range_proxy.copy_n_and_update(pos, elemsafter); + insert_range_proxy.copy_n_and_update(this->m_holder.alloc(), pos, elemsafter); //Copy the rest to the uninitialized zone filling the gap - insert_range_proxy.uninitialized_copy_n_and_update(old_finish, mid_last_dist); + insert_range_proxy.uninitialized_copy_n_and_update(this->m_holder.alloc(), old_finish, mid_last_dist); this->m_holder.m_size += n_after; } BOOST_CATCH(...){ @@ -2602,39 +2714,12 @@ class vector void reset_alloc_stats() { num_expand_fwd = num_expand_bwd = num_alloc = 0, num_shrink = 0; } #endif - /// @endcond + #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED }; -template -inline bool -operator==(const vector& x, const vector& y) -{ - //Check first size and each element if needed - return x.size() == y.size() && std::equal(x.begin(), x.end(), y.begin()); -} - -template -inline bool -operator!=(const vector& x, const vector& y) -{ - //Check first size and each element if needed - return x.size() != y.size() || !std::equal(x.begin(), x.end(), y.begin()); -} - -template -inline bool -operator<(const vector& x, const vector& y) -{ - return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); -} - -template -inline void swap(vector& x, vector& y) -{ x.swap(y); } - }} -/// @cond +#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED namespace boost { @@ -2663,9 +2748,8 @@ inline void swap(boost::container::vector& x, boost::container::ve #endif -/// @endcond +#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED #include #endif // #ifndef BOOST_CONTAINER_CONTAINER_VECTOR_HPP - diff --git a/3party/boost/boost/context/detail/config.hpp b/3party/boost/boost/context/detail/config.hpp index 0d7b7fce6b..c30c8f8b84 100644 --- a/3party/boost/boost/context/detail/config.hpp +++ b/3party/boost/boost/context/detail/config.hpp @@ -14,16 +14,12 @@ # undef BOOST_CONTEXT_DECL #endif -#if defined(BOOST_HAS_DECLSPEC) -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_CONTEXT_DYN_LINK) -# if ! defined(BOOST_DYN_LINK) -# define BOOST_DYN_LINK -# endif -# if defined(BOOST_CONTEXT_SOURCE) -# define BOOST_CONTEXT_DECL BOOST_SYMBOL_EXPORT -# else -# define BOOST_CONTEXT_DECL BOOST_SYMBOL_IMPORT -# endif +#if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_CONTEXT_DYN_LINK) ) && ! defined(BOOST_CONTEXT_STATIC_LINK) +# if defined(BOOST_CONTEXT_SOURCE) +# define BOOST_CONTEXT_DECL BOOST_SYMBOL_EXPORT +# define BOOST_CONTEXT_BUILD_DLL +# else +# define BOOST_CONTEXT_DECL BOOST_SYMBOL_IMPORT # endif #endif @@ -39,4 +35,15 @@ # include #endif +#undef BOOST_CONTEXT_CALLDECL +#if (defined(i386) || defined(__i386__) || defined(__i386) \ + || defined(__i486__) || defined(__i586__) || defined(__i686__) \ + || defined(__X86__) || defined(_X86_) || defined(__THW_INTEL__) \ + || defined(__I86__) || defined(__INTEL__) || defined(__IA32__) \ + || defined(_M_IX86) || defined(_I86_)) && defined(BOOST_WINDOWS) +# define BOOST_CONTEXT_CALLDECL __cdecl +#else +# define BOOST_CONTEXT_CALLDECL +#endif + #endif // BOOST_CONTEXT_DETAIL_CONFIG_H diff --git a/3party/boost/boost/context/detail/fcontext_arm_mac.hpp b/3party/boost/boost/context/detail/fcontext_arm_mac.hpp new file mode 100644 index 0000000000..a8416efd0c --- /dev/null +++ b/3party/boost/boost/context/detail/fcontext_arm_mac.hpp @@ -0,0 +1,70 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_CONTEXT_DETAIL_FCONTEXT_ARM_MAC_H +#define BOOST_CONTEXT_DETAIL_FCONTEXT_ARM_MAC_H + +#include + +#include +#include + +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace context { + +extern "C" { + +#define BOOST_CONTEXT_CALLDECL + +struct stack_t +{ + void * sp; + std::size_t size; + + stack_t() : + sp( 0), size( 0) + {} +}; + +struct fp_t +{ + boost::uint32_t fc_freg[16]; + + fp_t() : + fc_freg() + {} +}; + +struct fcontext_t +{ + boost::uint32_t fc_greg[11]; + stack_t fc_stack; + fp_t fc_fp; + void * fc_unwind_sjlj; + + fcontext_t() : + fc_greg(), + fc_stack(), + fc_fp(), + fc_unwind_sjlj( 0) + {} +}; + +} + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_CONTEXT_DETAIL_FCONTEXT_ARM_MAC_H diff --git a/3party/boost/boost/context/detail/fcontext_arm_win.hpp b/3party/boost/boost/context/detail/fcontext_arm_win.hpp new file mode 100644 index 0000000000..5449ae763f --- /dev/null +++ b/3party/boost/boost/context/detail/fcontext_arm_win.hpp @@ -0,0 +1,71 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_CONTEXT_DETAIL_FCONTEXT_ARM_WIN_H +#define BOOST_CONTEXT_DETAIL_FCONTEXT_ARM_WIN_H + +#include + +#include +#include + +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace context { + +extern "C" { + +#define BOOST_CONTEXT_CALLDECL + +struct stack_t +{ + void * sp; + std::size_t size; + void * limit; + + stack_t() : + sp( 0), size( 0), limit( 0) + {} +}; + +struct fp_t +{ + boost::uint32_t fc_freg[16]; + + fp_t() : + fc_freg() + {} +}; + +struct fcontext_t +{ + boost::uint32_t fc_greg[11]; + stack_t fc_stack; + fp_t fc_fp; + boost::uint32_t fc_dealloc; + + fcontext_t() : + fc_greg(), + fc_stack(), + fc_fp(), + fc_dealloc( 0) + {} +}; + +} + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_CONTEXT_DETAIL_FCONTEXT_ARM_WIN_H diff --git a/3party/boost/boost/context/fcontext.hpp b/3party/boost/boost/context/fcontext.hpp index c7e809e4d9..d054df290c 100644 --- a/3party/boost/boost/context/fcontext.hpp +++ b/3party/boost/boost/context/fcontext.hpp @@ -24,55 +24,16 @@ typedef int intptr_t; # include BOOST_ABI_PREFIX #endif -// x86_64 -// test x86_64 before i386 because icc might -// define __i686__ for x86_64 too -#if defined(__x86_64__) || defined(__x86_64) \ - || defined(__amd64__) || defined(__amd64) \ - || defined(_M_X64) || defined(_M_AMD64) -# if defined(BOOST_WINDOWS) -# include -# else -# include -# endif -// i386 -#elif defined(i386) || defined(__i386__) || defined(__i386) \ - || defined(__i486__) || defined(__i586__) || defined(__i686__) \ - || defined(__X86__) || defined(_X86_) || defined(__THW_INTEL__) \ - || defined(__I86__) || defined(__INTEL__) || defined(__IA32__) \ - || defined(_M_IX86) || defined(_I86_) -# if defined(BOOST_WINDOWS) -# include -# else -# include -# endif -// arm -#elif defined(__arm__) || defined(__thumb__) || defined(__TARGET_ARCH_ARM) \ - || defined(__TARGET_ARCH_THUMB) || defined(_ARM) || defined(_M_ARM) -# include -// mips -#elif (defined(__mips) && __mips == 1) || defined(_MIPS_ISA_MIPS1) \ - || defined(_R3000) -# include -// powerpc -#elif defined(__powerpc) || defined(__powerpc__) || defined(__ppc) \ - || defined(__ppc__) || defined(_ARCH_PPC) || defined(__POWERPC__) \ - || defined(__PPCGECKO__) || defined(__PPCBROADWAY) || defined(_XENON) -# include -#elif defined(__sparc__) || defined(__sparc) -// sparc or sparc64 -# include -#else -# error "platform not supported" -#endif - namespace boost { namespace context { +typedef void* fcontext_t; + extern "C" BOOST_CONTEXT_DECL -intptr_t BOOST_CONTEXT_CALLDECL jump_fcontext( fcontext_t * ofc, fcontext_t const* nfc, intptr_t vp, bool preserve_fpu = true); +intptr_t BOOST_CONTEXT_CALLDECL jump_fcontext( fcontext_t * ofc, fcontext_t nfc, + intptr_t vp, bool preserve_fpu = true); extern "C" BOOST_CONTEXT_DECL -fcontext_t * BOOST_CONTEXT_CALLDECL make_fcontext( void * sp, std::size_t size, void (* fn)( intptr_t) ); +fcontext_t BOOST_CONTEXT_CALLDECL make_fcontext( void * sp, std::size_t size, void (* fn)( intptr_t) ); }} diff --git a/3party/boost/boost/core/addressof.hpp b/3party/boost/boost/core/addressof.hpp new file mode 100644 index 0000000000..a90fcc3e24 --- /dev/null +++ b/3party/boost/boost/core/addressof.hpp @@ -0,0 +1,162 @@ +// Copyright (C) 2002 Brad King (brad.king@kitware.com) +// Douglas Gregor (gregod@cs.rpi.edu) +// +// Copyright (C) 2002, 2008, 2013 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// For more information, see http://www.boost.org + +#ifndef BOOST_CORE_ADDRESSOF_HPP +#define BOOST_CORE_ADDRESSOF_HPP + +# include +# include +# include + +namespace boost +{ + +namespace detail +{ + +template struct addr_impl_ref +{ + T & v_; + + BOOST_FORCEINLINE addr_impl_ref( T & v ): v_( v ) {} + BOOST_FORCEINLINE operator T& () const { return v_; } + +private: + addr_impl_ref & operator=(const addr_impl_ref &); +}; + +template struct addressof_impl +{ + static BOOST_FORCEINLINE T * f( T & v, long ) + { + return reinterpret_cast( + &const_cast(reinterpret_cast(v))); + } + + static BOOST_FORCEINLINE T * f( T * v, int ) + { + return v; + } +}; + +#if !defined( BOOST_NO_CXX11_NULLPTR ) + +#if defined( __clang__ ) && !defined( _LIBCPP_VERSION ) && !defined( BOOST_NO_CXX11_DECLTYPE ) + + typedef decltype(nullptr) addr_nullptr_t; + +#else + + typedef std::nullptr_t addr_nullptr_t; + +#endif + +template<> struct addressof_impl< addr_nullptr_t > +{ + typedef addr_nullptr_t T; + + static BOOST_FORCEINLINE T * f( T & v, int ) + { + return &v; + } +}; + +template<> struct addressof_impl< addr_nullptr_t const > +{ + typedef addr_nullptr_t const T; + + static BOOST_FORCEINLINE T * f( T & v, int ) + { + return &v; + } +}; + +template<> struct addressof_impl< addr_nullptr_t volatile > +{ + typedef addr_nullptr_t volatile T; + + static BOOST_FORCEINLINE T * f( T & v, int ) + { + return &v; + } +}; + +template<> struct addressof_impl< addr_nullptr_t const volatile > +{ + typedef addr_nullptr_t const volatile T; + + static BOOST_FORCEINLINE T * f( T & v, int ) + { + return &v; + } +}; + +#endif + +} // namespace detail + +template +BOOST_FORCEINLINE +T * addressof( T & v ) +{ +#if (defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) ) ) || defined( __SUNPRO_CC ) + + return boost::detail::addressof_impl::f( v, 0 ); + +#else + + return boost::detail::addressof_impl::f( boost::detail::addr_impl_ref( v ), 0 ); + +#endif +} + +#if defined( __SUNPRO_CC ) && BOOST_WORKAROUND( __SUNPRO_CC, BOOST_TESTED_AT( 0x590 ) ) + +namespace detail +{ + +template struct addressof_addp +{ + typedef T * type; +}; + +} // namespace detail + +template< class T, std::size_t N > +BOOST_FORCEINLINE +typename detail::addressof_addp< T[N] >::type addressof( T (&t)[N] ) +{ + return &t; +} + +#endif + +// Borland doesn't like casting an array reference to a char reference +// but these overloads work around the problem. +#if defined( __BORLANDC__ ) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +template +BOOST_FORCEINLINE +T (*addressof(T (&t)[N]))[N] +{ + return reinterpret_cast(&t); +} + +template +BOOST_FORCEINLINE +const T (*addressof(const T (&t)[N]))[N] +{ + return reinterpret_cast(&t); +} +#endif + +} // namespace boost + +#endif // BOOST_CORE_ADDRESSOF_HPP diff --git a/3party/boost/boost/core/checked_delete.hpp b/3party/boost/boost/core/checked_delete.hpp new file mode 100644 index 0000000000..b086e03e88 --- /dev/null +++ b/3party/boost/boost/core/checked_delete.hpp @@ -0,0 +1,69 @@ +#ifndef BOOST_CORE_CHECKED_DELETE_HPP +#define BOOST_CORE_CHECKED_DELETE_HPP + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// +// boost/checked_delete.hpp +// +// Copyright (c) 2002, 2003 Peter Dimov +// Copyright (c) 2003 Daniel Frey +// Copyright (c) 2003 Howard Hinnant +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/core/doc/html/core/checked_delete.html for documentation. +// + +namespace boost +{ + +// verify that types are complete for increased safety + +template inline void checked_delete(T * x) +{ + // intentionally complex - simplification causes regressions + typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; + (void) sizeof(type_must_be_complete); + delete x; +} + +template inline void checked_array_delete(T * x) +{ + typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; + (void) sizeof(type_must_be_complete); + delete [] x; +} + +template struct checked_deleter +{ + typedef void result_type; + typedef T * argument_type; + + void operator()(T * x) const + { + // boost:: disables ADL + boost::checked_delete(x); + } +}; + +template struct checked_array_deleter +{ + typedef void result_type; + typedef T * argument_type; + + void operator()(T * x) const + { + boost::checked_array_delete(x); + } +}; + +} // namespace boost + +#endif // #ifndef BOOST_CORE_CHECKED_DELETE_HPP diff --git a/3party/boost/boost/core/demangle.hpp b/3party/boost/boost/core/demangle.hpp new file mode 100644 index 0000000000..eebd0ce0f1 --- /dev/null +++ b/3party/boost/boost/core/demangle.hpp @@ -0,0 +1,121 @@ +#ifndef BOOST_CORE_DEMANGLE_HPP_INCLUDED +#define BOOST_CORE_DEMANGLE_HPP_INCLUDED + +// core::demangle +// +// Copyright 2014 Peter Dimov +// Copyright 2014 Andrey Semashev +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include + +#if defined(BOOST_HAS_PRAGMA_ONCE) +# pragma once +#endif + +#if defined( __clang__ ) && defined( __has_include ) +# if __has_include() +# define BOOST_CORE_HAS_CXXABI_H +# endif +#elif defined( __GLIBCXX__ ) || defined( __GLIBCPP__ ) +# define BOOST_CORE_HAS_CXXABI_H +#endif + +#if defined( BOOST_CORE_HAS_CXXABI_H ) +# include +# include +# include +#endif + +namespace boost +{ + +namespace core +{ + +inline char const * demangle_alloc( char const * name ) BOOST_NOEXCEPT; +inline void demangle_free( char const * name ) BOOST_NOEXCEPT; + +class scoped_demangled_name +{ +private: + char const * m_p; + +public: + explicit scoped_demangled_name( char const * name ) BOOST_NOEXCEPT : + m_p( demangle_alloc( name ) ) + { + } + + ~scoped_demangled_name() BOOST_NOEXCEPT + { + demangle_free( m_p ); + } + + char const * get() const BOOST_NOEXCEPT + { + return m_p; + } + + BOOST_DELETED_FUNCTION(scoped_demangled_name( scoped_demangled_name const& )) + BOOST_DELETED_FUNCTION(scoped_demangled_name& operator= ( scoped_demangled_name const& )) +}; + + +#if defined( BOOST_CORE_HAS_CXXABI_H ) + +inline char const * demangle_alloc( char const * name ) BOOST_NOEXCEPT +{ + int status = 0; + std::size_t size = 0; + return abi::__cxa_demangle( name, NULL, &size, &status ); +} + +inline void demangle_free( char const * name ) BOOST_NOEXCEPT +{ + std::free( const_cast< char* >( name ) ); +} + +inline std::string demangle( char const * name ) +{ + scoped_demangled_name demangled_name( name ); + char const * const p = demangled_name.get(); + if( p ) + { + return p; + } + else + { + return name; + } +} + +#else + +inline char const * demangle_alloc( char const * name ) BOOST_NOEXCEPT +{ + return name; +} + +inline void demangle_free( char const * ) BOOST_NOEXCEPT +{ +} + +inline std::string demangle( char const * name ) +{ + return name; +} + +#endif + +} // namespace core + +} // namespace boost + +#undef BOOST_CORE_HAS_CXXABI_H + +#endif // #ifndef BOOST_CORE_DEMANGLE_HPP_INCLUDED diff --git a/3party/boost/boost/core/enable_if.hpp b/3party/boost/boost/core/enable_if.hpp new file mode 100644 index 0000000000..a3302b18a1 --- /dev/null +++ b/3party/boost/boost/core/enable_if.hpp @@ -0,0 +1,119 @@ +// Boost enable_if library + +// Copyright 2003 (c) The Trustees of Indiana University. + +// Use, modification, and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Authors: Jaakko Jarvi (jajarvi at osl.iu.edu) +// Jeremiah Willcock (jewillco at osl.iu.edu) +// Andrew Lumsdaine (lums at osl.iu.edu) + + +#ifndef BOOST_CORE_ENABLE_IF_HPP +#define BOOST_CORE_ENABLE_IF_HPP + +#include "boost/config.hpp" + +// Even the definition of enable_if causes problems on some compilers, +// so it's macroed out for all compilers that do not support SFINAE + +#ifndef BOOST_NO_SFINAE + +namespace boost +{ + + template + struct enable_if_c { + typedef T type; + }; + + template + struct enable_if_c {}; + + template + struct enable_if : public enable_if_c {}; + + template + struct lazy_enable_if_c { + typedef typename T::type type; + }; + + template + struct lazy_enable_if_c {}; + + template + struct lazy_enable_if : public lazy_enable_if_c {}; + + + template + struct disable_if_c { + typedef T type; + }; + + template + struct disable_if_c {}; + + template + struct disable_if : public disable_if_c {}; + + template + struct lazy_disable_if_c { + typedef typename T::type type; + }; + + template + struct lazy_disable_if_c {}; + + template + struct lazy_disable_if : public lazy_disable_if_c {}; + +} // namespace boost + +#else + +namespace boost { + + namespace detail { typedef void enable_if_default_T; } + + template + struct enable_if_does_not_work_on_this_compiler; + + template + struct enable_if_c : enable_if_does_not_work_on_this_compiler + { }; + + template + struct disable_if_c : enable_if_does_not_work_on_this_compiler + { }; + + template + struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler + { }; + + template + struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler + { }; + + template + struct enable_if : enable_if_does_not_work_on_this_compiler + { }; + + template + struct disable_if : enable_if_does_not_work_on_this_compiler + { }; + + template + struct lazy_enable_if : enable_if_does_not_work_on_this_compiler + { }; + + template + struct lazy_disable_if : enable_if_does_not_work_on_this_compiler + { }; + +} // namespace boost + +#endif // BOOST_NO_SFINAE + +#endif diff --git a/3party/boost/boost/core/explicit_operator_bool.hpp b/3party/boost/boost/core/explicit_operator_bool.hpp new file mode 100644 index 0000000000..a8936e2cd6 --- /dev/null +++ b/3party/boost/boost/core/explicit_operator_bool.hpp @@ -0,0 +1,154 @@ +/* + * Copyright Andrey Semashev 2007 - 2013. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ + +/*! + * \file explicit_operator_bool.hpp + * \author Andrey Semashev + * \date 08.03.2009 + * + * This header defines a compatibility macro that implements an unspecified + * \c bool operator idiom, which is superseded with explicit conversion operators in + * C++11. + */ + +#ifndef BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP +#define BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) + +/*! + * \brief The macro defines an explicit operator of conversion to \c bool + * + * The macro should be used inside the definition of a class that has to + * support the conversion. The class should also implement operator!, + * in terms of which the conversion operator will be implemented. + */ +#define BOOST_EXPLICIT_OPERATOR_BOOL()\ + BOOST_FORCEINLINE explicit operator bool () const\ + {\ + return !this->operator! ();\ + } + +/*! + * \brief The macro defines a noexcept explicit operator of conversion to \c bool + * + * The macro should be used inside the definition of a class that has to + * support the conversion. The class should also implement operator!, + * in terms of which the conversion operator will be implemented. + */ +#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\ + BOOST_FORCEINLINE explicit operator bool () const BOOST_NOEXCEPT\ + {\ + return !this->operator! ();\ + } + +/*! + * \brief The macro defines a constexpr explicit operator of conversion to \c bool + * + * The macro should be used inside the definition of a class that has to + * support the conversion. The class should also implement operator!, + * in terms of which the conversion operator will be implemented. + */ +#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\ + BOOST_FORCEINLINE BOOST_CONSTEXPR explicit operator bool () const BOOST_NOEXCEPT\ + {\ + return !this->operator! ();\ + } + +#else // !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) + +#if (defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)) && !defined(BOOST_NO_COMPILER_CONFIG) +// Sun C++ 5.3 can't handle the safe_bool idiom, so don't use it +#define BOOST_NO_UNSPECIFIED_BOOL +#endif // (defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)) && !defined(BOOST_NO_COMPILER_CONFIG) + +#if !defined(BOOST_NO_UNSPECIFIED_BOOL) + +namespace boost { + +namespace detail { + +#if !defined(_MSC_VER) && !defined(__IBMCPP__) + + struct unspecified_bool + { + // NOTE TO THE USER: If you see this in error messages then you tried + // to apply an unsupported operator on the object that supports + // explicit conversion to bool. + struct OPERATORS_NOT_ALLOWED; + static void true_value(OPERATORS_NOT_ALLOWED*) {} + }; + typedef void (*unspecified_bool_type)(unspecified_bool::OPERATORS_NOT_ALLOWED*); + +#else + + // MSVC and VACPP are too eager to convert pointer to function to void* even though they shouldn't + struct unspecified_bool + { + // NOTE TO THE USER: If you see this in error messages then you tried + // to apply an unsupported operator on the object that supports + // explicit conversion to bool. + struct OPERATORS_NOT_ALLOWED; + void true_value(OPERATORS_NOT_ALLOWED*) {} + }; + typedef void (unspecified_bool::*unspecified_bool_type)(unspecified_bool::OPERATORS_NOT_ALLOWED*); + +#endif + +} // namespace detail + +} // namespace boost + +#define BOOST_EXPLICIT_OPERATOR_BOOL()\ + BOOST_FORCEINLINE operator boost::detail::unspecified_bool_type () const\ + {\ + return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\ + } + +#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\ + BOOST_FORCEINLINE operator boost::detail::unspecified_bool_type () const BOOST_NOEXCEPT\ + {\ + return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\ + } + +#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\ + BOOST_FORCEINLINE BOOST_CONSTEXPR operator boost::detail::unspecified_bool_type () const BOOST_NOEXCEPT\ + {\ + return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\ + } + +#else // !defined(BOOST_NO_UNSPECIFIED_BOOL) + +#define BOOST_EXPLICIT_OPERATOR_BOOL()\ + BOOST_FORCEINLINE operator bool () const\ + {\ + return !this->operator! ();\ + } + +#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\ + BOOST_FORCEINLINE operator bool () const BOOST_NOEXCEPT\ + {\ + return !this->operator! ();\ + } + +#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\ + BOOST_FORCEINLINE BOOST_CONSTEXPR operator bool () const BOOST_NOEXCEPT\ + {\ + return !this->operator! ();\ + } + +#endif // !defined(BOOST_NO_UNSPECIFIED_BOOL) + +#endif // !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) + +#endif // BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP diff --git a/3party/boost/boost/core/ignore_unused.hpp b/3party/boost/boost/core/ignore_unused.hpp new file mode 100644 index 0000000000..22047c2e54 --- /dev/null +++ b/3party/boost/boost/core/ignore_unused.hpp @@ -0,0 +1,70 @@ +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. +// +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_CORE_IGNORE_UNUSED_HPP +#define BOOST_CORE_IGNORE_UNUSED_HPP + +#include + +namespace boost { + +#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES + +template +inline void ignore_unused(Ts const& ...) +{} + +template +inline void ignore_unused() +{} + +#else + +template +inline void ignore_unused(T1 const&) +{} + +template +inline void ignore_unused(T1 const&, T2 const&) +{} + +template +inline void ignore_unused(T1 const&, T2 const&, T3 const&) +{} + +template +inline void ignore_unused(T1 const&, T2 const&, T3 const&, T4 const&) +{} + +template +inline void ignore_unused(T1 const&, T2 const&, T3 const&, T4 const&, T5 const&) +{} + +template +inline void ignore_unused() +{} + +template +inline void ignore_unused() +{} + +template +inline void ignore_unused() +{} + +template +inline void ignore_unused() +{} + +template +inline void ignore_unused() +{} + +#endif + +} // namespace boost + +#endif // BOOST_CORE_IGNORE_UNUSED_HPP diff --git a/3party/boost/boost/core/is_same.hpp b/3party/boost/boost/core/is_same.hpp new file mode 100644 index 0000000000..f373c654d5 --- /dev/null +++ b/3party/boost/boost/core/is_same.hpp @@ -0,0 +1,40 @@ +#ifndef BOOST_CORE_IS_SAME_HPP_INCLUDED +#define BOOST_CORE_IS_SAME_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// is_same::value is true when T1 == T2 +// +// Copyright 2014 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +#include + +namespace boost +{ + +namespace core +{ + +template< class T1, class T2 > struct is_same +{ + BOOST_STATIC_CONSTANT( bool, value = false ); +}; + +template< class T > struct is_same< T, T > +{ + BOOST_STATIC_CONSTANT( bool, value = true ); +}; + +} // namespace core + +} // namespace boost + +#endif // #ifndef BOOST_CORE_IS_SAME_HPP_INCLUDED diff --git a/3party/boost/boost/core/lightweight_test.hpp b/3party/boost/boost/core/lightweight_test.hpp new file mode 100644 index 0000000000..f5943b3db2 --- /dev/null +++ b/3party/boost/boost/core/lightweight_test.hpp @@ -0,0 +1,171 @@ +#ifndef BOOST_CORE_LIGHTWEIGHT_TEST_HPP +#define BOOST_CORE_LIGHTWEIGHT_TEST_HPP + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) +# pragma once +#endif + +// +// boost/core/lightweight_test.hpp - lightweight test library +// +// Copyright (c) 2002, 2009, 2014 Peter Dimov +// Copyright (2) Beman Dawes 2010, 2011 +// Copyright (3) Ion Gaztanaga 2013 +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt +// + +#include +#include +#include +#include + +// IDE's like Visual Studio perform better if output goes to std::cout or +// some other stream, so allow user to configure output stream: +#ifndef BOOST_LIGHTWEIGHT_TEST_OSTREAM +# define BOOST_LIGHTWEIGHT_TEST_OSTREAM std::cerr +#endif + +namespace boost +{ + +namespace detail +{ + +struct report_errors_reminder +{ + bool called_report_errors_function; + + report_errors_reminder() : called_report_errors_function(false) {} + + ~report_errors_reminder() + { + BOOST_ASSERT(called_report_errors_function); // verify report_errors() was called + } +}; + +inline report_errors_reminder& report_errors_remind() +{ + static report_errors_reminder r; + return r; +} + +inline int & test_errors() +{ + static int x = 0; + report_errors_remind(); + return x; +} + +inline void test_failed_impl(char const * expr, char const * file, int line, char const * function) +{ + BOOST_LIGHTWEIGHT_TEST_OSTREAM + << file << "(" << line << "): test '" << expr << "' failed in function '" + << function << "'" << std::endl; + ++test_errors(); +} + +inline void error_impl(char const * msg, char const * file, int line, char const * function) +{ + BOOST_LIGHTWEIGHT_TEST_OSTREAM + << file << "(" << line << "): " << msg << " in function '" + << function << "'" << std::endl; + ++test_errors(); +} + +inline void throw_failed_impl(char const * excep, char const * file, int line, char const * function) +{ + BOOST_LIGHTWEIGHT_TEST_OSTREAM + << file << "(" << line << "): Exception '" << excep << "' not thrown in function '" + << function << "'" << std::endl; + ++test_errors(); +} + +template inline void test_eq_impl( char const * expr1, char const * expr2, + char const * file, int line, char const * function, T const & t, U const & u ) +{ + if( t == u ) + { + report_errors_remind(); + } + else + { + BOOST_LIGHTWEIGHT_TEST_OSTREAM + << file << "(" << line << "): test '" << expr1 << " == " << expr2 + << "' failed in function '" << function << "': " + << "'" << t << "' != '" << u << "'" << std::endl; + ++test_errors(); + } +} + +template inline void test_ne_impl( char const * expr1, char const * expr2, + char const * file, int line, char const * function, T const & t, U const & u ) +{ + if( t != u ) + { + report_errors_remind(); + } + else + { + BOOST_LIGHTWEIGHT_TEST_OSTREAM + << file << "(" << line << "): test '" << expr1 << " != " << expr2 + << "' failed in function '" << function << "': " + << "'" << t << "' == '" << u << "'" << std::endl; + ++test_errors(); + } +} + +} // namespace detail + +inline int report_errors() +{ + detail::report_errors_remind().called_report_errors_function = true; + + int errors = detail::test_errors(); + + if( errors == 0 ) + { + BOOST_LIGHTWEIGHT_TEST_OSTREAM + << "No errors detected." << std::endl; + return 0; + } + else + { + BOOST_LIGHTWEIGHT_TEST_OSTREAM + << errors << " error" << (errors == 1? "": "s") << " detected." << std::endl; + return 1; + } +} + +} // namespace boost + +#define BOOST_TEST(expr) ((expr)? (void)0: ::boost::detail::test_failed_impl(#expr, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION)) + +#define BOOST_ERROR(msg) ( ::boost::detail::error_impl(msg, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) ) + +#define BOOST_TEST_EQ(expr1,expr2) ( ::boost::detail::test_eq_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2) ) +#define BOOST_TEST_NE(expr1,expr2) ( ::boost::detail::test_ne_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2) ) + +#ifndef BOOST_NO_EXCEPTIONS + #define BOOST_TEST_THROWS( EXPR, EXCEP ) \ + try { \ + EXPR; \ + ::boost::detail::throw_failed_impl \ + (#EXCEP, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION); \ + } \ + catch(EXCEP const&) { \ + } \ + catch(...) { \ + ::boost::detail::throw_failed_impl \ + (#EXCEP, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION); \ + } \ + // +#else + #define BOOST_TEST_THROWS( EXPR, EXCEP ) +#endif + +#endif // #ifndef BOOST_CORE_LIGHTWEIGHT_TEST_HPP diff --git a/3party/boost/boost/core/lightweight_test_trait.hpp b/3party/boost/boost/core/lightweight_test_trait.hpp new file mode 100644 index 0000000000..0e2aab4435 --- /dev/null +++ b/3party/boost/boost/core/lightweight_test_trait.hpp @@ -0,0 +1,56 @@ +#ifndef BOOST_CORE_LIGHTWEIGHT_TEST_TRAIT_HPP +#define BOOST_CORE_LIGHTWEIGHT_TEST_TRAIT_HPP + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) +# pragma once +#endif + +// boost/core/lightweight_test_trait.hpp +// +// BOOST_TEST_TRAIT_TRUE, BOOST_TEST_TRAIT_FALSE +// +// Copyright 2014 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt + +#include +#include + +namespace boost +{ + +namespace detail +{ + +template< class T > inline void test_trait_impl( char const * trait, void (*)( T ), + bool expected, char const * file, int line, char const * function ) +{ + if( T::value == expected ) + { + report_errors_remind(); + } + else + { + BOOST_LIGHTWEIGHT_TEST_OSTREAM + << file << "(" << line << "): predicate '" << trait << "' [" + << boost::core::demangled_name( BOOST_CORE_TYPEID(T) ) << "]" + << " test failed in function '" << function + << "' (should have been " << ( expected? "true": "false" ) << ")" + << std::endl; + + ++test_errors(); + } +} + +} // namespace detail + +} // namespace boost + +#define BOOST_TEST_TRAIT_TRUE(type) ( ::boost::detail::test_trait_impl(#type, (void(*)type)0, true, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) ) +#define BOOST_TEST_TRAIT_FALSE(type) ( ::boost::detail::test_trait_impl(#type, (void(*)type)0, false, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) ) + +#endif // #ifndef BOOST_CORE_LIGHTWEIGHT_TEST_TRAIT_HPP diff --git a/3party/boost/boost/core/no_exceptions_support.hpp b/3party/boost/boost/core/no_exceptions_support.hpp new file mode 100644 index 0000000000..a697f01a52 --- /dev/null +++ b/3party/boost/boost/core/no_exceptions_support.hpp @@ -0,0 +1,44 @@ +#ifndef BOOST_CORE_NO_EXCEPTIONS_SUPPORT_HPP +#define BOOST_CORE_NO_EXCEPTIONS_SUPPORT_HPP + +#if defined(_MSC_VER) +# pragma once +#endif + +//---------------------------------------------------------------------- +// (C) Copyright 2004 Pavel Vozenilek. +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// +// This file contains helper macros used when exception support may be +// disabled (as indicated by macro BOOST_NO_EXCEPTIONS). +// +// Before picking up these macros you may consider using RAII techniques +// to deal with exceptions - their syntax can be always the same with +// or without exception support enabled. +//---------------------------------------------------------------------- + +#include +#include + +#if !(defined BOOST_NO_EXCEPTIONS) +# define BOOST_TRY { try +# define BOOST_CATCH(x) catch(x) +# define BOOST_RETHROW throw; +# define BOOST_CATCH_END } +#else +# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +# define BOOST_TRY { if ("") +# define BOOST_CATCH(x) else if (!"") +# else +# define BOOST_TRY { if (true) +# define BOOST_CATCH(x) else if (false) +# endif +# define BOOST_RETHROW +# define BOOST_CATCH_END } +#endif + + +#endif diff --git a/3party/boost/boost/core/noncopyable.hpp b/3party/boost/boost/core/noncopyable.hpp new file mode 100644 index 0000000000..6ae8c244dd --- /dev/null +++ b/3party/boost/boost/core/noncopyable.hpp @@ -0,0 +1,48 @@ +// Boost noncopyable.hpp header file --------------------------------------// + +// (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost +// Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org/libs/utility for documentation. + +#ifndef BOOST_CORE_NONCOPYABLE_HPP +#define BOOST_CORE_NONCOPYABLE_HPP + +#include + +namespace boost { + +// Private copy constructor and copy assignment ensure classes derived from +// class noncopyable cannot be copied. + +// Contributed by Dave Abrahams + +namespace noncopyable_ // protection from unintended ADL +{ + class noncopyable + { + protected: +#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS) + BOOST_CONSTEXPR noncopyable() = default; + ~noncopyable() = default; +#else + noncopyable() {} + ~noncopyable() {} +#endif +#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) + noncopyable( const noncopyable& ) = delete; + noncopyable& operator=( const noncopyable& ) = delete; +#else + private: // emphasize the following members are private + noncopyable( const noncopyable& ); + noncopyable& operator=( const noncopyable& ); +#endif + }; +} + +typedef noncopyable_::noncopyable noncopyable; + +} // namespace boost + +#endif // BOOST_CORE_NONCOPYABLE_HPP diff --git a/3party/boost/boost/core/null_deleter.hpp b/3party/boost/boost/core/null_deleter.hpp new file mode 100644 index 0000000000..f0af59034e --- /dev/null +++ b/3party/boost/boost/core/null_deleter.hpp @@ -0,0 +1,44 @@ +/* + * Copyright Andrey Semashev 2007 - 2014. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +/*! + * \file null_deleter.hpp + * \author Andrey Semashev + * \date 22.04.2007 + * + * This header contains a \c null_deleter implementation. This is an empty + * function object that receives a pointer and does nothing with it. + * Such empty deletion strategy may be convenient, for example, when + * constructing shared_ptrs that point to some object that should not be + * deleted (i.e. a variable on the stack or some global singleton, like std::cout). + */ + +#ifndef BOOST_CORE_NULL_DELETER_HPP +#define BOOST_CORE_NULL_DELETER_HPP + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { + +//! A function object that does nothing and can be used as an empty deleter for \c shared_ptr +struct null_deleter +{ + //! Function object result type + typedef void result_type; + /*! + * Does nothing + */ + template< typename T > + void operator() (T*) const BOOST_NOEXCEPT {} +}; + +} // namespace boost + +#endif // BOOST_CORE_NULL_DELETER_HPP diff --git a/3party/boost/boost/core/ref.hpp b/3party/boost/boost/core/ref.hpp new file mode 100644 index 0000000000..47dc858007 --- /dev/null +++ b/3party/boost/boost/core/ref.hpp @@ -0,0 +1,301 @@ +#ifndef BOOST_CORE_REF_HPP +#define BOOST_CORE_REF_HPP + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +#include +#include +#include + +// +// ref.hpp - ref/cref, useful helper functions +// +// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) +// Copyright (C) 2001, 2002 Peter Dimov +// Copyright (C) 2002 David Abrahams +// +// Copyright (C) 2014 Glen Joseph Fernandes +// glenfe at live dot com +// Copyright (C) 2014 Agustin Berge +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/libs/core/doc/html/core/ref.html for documentation. +// + +/** + @file +*/ + +/** + Boost namespace. +*/ +namespace boost +{ + +#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, == 1600 ) + + struct ref_workaround_tag {}; + +#endif + +// reference_wrapper + +/** + @brief Contains a reference to an object of type `T`. + + `reference_wrapper` is primarily used to "feed" references to + function templates (algorithms) that take their parameter by + value. It provides an implicit conversion to `T&`, which + usually allows the function templates to work on references + unmodified. +*/ +template class reference_wrapper +{ +public: + /** + Type `T`. + */ + typedef T type; + + /** + Constructs a `reference_wrapper` object that stores a + reference to `t`. + + @remark Does not throw. + */ + BOOST_FORCEINLINE explicit reference_wrapper(T& t): t_(boost::addressof(t)) {} + +#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, == 1600 ) + + BOOST_FORCEINLINE explicit reference_wrapper( T & t, ref_workaround_tag ): t_( boost::addressof( t ) ) {} + +#endif + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + /** + @remark Construction from a temporary object is disabled. + */ + BOOST_DELETED_FUNCTION(reference_wrapper(T&& t)) +public: +#endif + + /** + @return The stored reference. + @remark Does not throw. + */ + BOOST_FORCEINLINE operator T& () const { return *t_; } + + /** + @return The stored reference. + @remark Does not throw. + */ + BOOST_FORCEINLINE T& get() const { return *t_; } + + /** + @return A pointer to the object referenced by the stored + reference. + @remark Does not throw. + */ + BOOST_FORCEINLINE T* get_pointer() const { return t_; } + +private: + + T* t_; +}; + +// ref + +/** + @cond +*/ +#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) +# define BOOST_REF_CONST +#else +# define BOOST_REF_CONST const +#endif +/** + @endcond +*/ + +/** + @return `reference_wrapper(t)` + @remark Does not throw. +*/ +template BOOST_FORCEINLINE reference_wrapper BOOST_REF_CONST ref( T & t ) +{ +#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, == 1600 ) + + return reference_wrapper( t, ref_workaround_tag() ); + +#else + + return reference_wrapper( t ); + +#endif +} + +// cref + +/** + @return `reference_wrapper(t)` + @remark Does not throw. +*/ +template BOOST_FORCEINLINE reference_wrapper BOOST_REF_CONST cref( T const & t ) +{ + return reference_wrapper(t); +} + +#undef BOOST_REF_CONST + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + +/** + @cond +*/ +#if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) +# define BOOST_REF_DELETE +#else +# define BOOST_REF_DELETE = delete +#endif +/** + @endcond +*/ + +/** + @remark Construction from a temporary object is disabled. +*/ +template void ref(T const&&) BOOST_REF_DELETE; + +/** + @remark Construction from a temporary object is disabled. +*/ +template void cref(T const&&) BOOST_REF_DELETE; + +#undef BOOST_REF_DELETE + +#endif + +// is_reference_wrapper + +/** + @brief Determine if a type `T` is an instantiation of + `reference_wrapper`. + + The value static constant will be true if the type `T` is a + specialization of `reference_wrapper`. +*/ +template struct is_reference_wrapper +{ + BOOST_STATIC_CONSTANT( bool, value = false ); +}; + +/** + @cond +*/ +template struct is_reference_wrapper< reference_wrapper > +{ + BOOST_STATIC_CONSTANT( bool, value = true ); +}; + +#if !defined(BOOST_NO_CV_SPECIALIZATIONS) + +template struct is_reference_wrapper< reference_wrapper const > +{ + BOOST_STATIC_CONSTANT( bool, value = true ); +}; + +template struct is_reference_wrapper< reference_wrapper volatile > +{ + BOOST_STATIC_CONSTANT( bool, value = true ); +}; + +template struct is_reference_wrapper< reference_wrapper const volatile > +{ + BOOST_STATIC_CONSTANT( bool, value = true ); +}; + +#endif // !defined(BOOST_NO_CV_SPECIALIZATIONS) + +/** + @endcond +*/ + + +// unwrap_reference + +/** + @brief Find the type in a `reference_wrapper`. + + The `typedef` type is `T::type` if `T` is a + `reference_wrapper`, `T` otherwise. +*/ +template struct unwrap_reference +{ + typedef T type; +}; + +/** + @cond +*/ +template struct unwrap_reference< reference_wrapper > +{ + typedef T type; +}; + +#if !defined(BOOST_NO_CV_SPECIALIZATIONS) + +template struct unwrap_reference< reference_wrapper const > +{ + typedef T type; +}; + +template struct unwrap_reference< reference_wrapper volatile > +{ + typedef T type; +}; + +template struct unwrap_reference< reference_wrapper const volatile > +{ + typedef T type; +}; + +#endif // !defined(BOOST_NO_CV_SPECIALIZATIONS) + +/** + @endcond +*/ + +// unwrap_ref + +/** + @return `unwrap_reference::type&(t)` + @remark Does not throw. +*/ +template BOOST_FORCEINLINE typename unwrap_reference::type& unwrap_ref( T & t ) +{ + return t; +} + +// get_pointer + +/** + @cond +*/ +template BOOST_FORCEINLINE T* get_pointer( reference_wrapper const & r ) +{ + return r.get_pointer(); +} +/** + @endcond +*/ + +} // namespace boost + +#endif // #ifndef BOOST_CORE_REF_HPP diff --git a/3party/boost/boost/core/scoped_enum.hpp b/3party/boost/boost/core/scoped_enum.hpp new file mode 100644 index 0000000000..78c548bf81 --- /dev/null +++ b/3party/boost/boost/core/scoped_enum.hpp @@ -0,0 +1,192 @@ +// scoped_enum.hpp ---------------------------------------------------------// + +// Copyright Beman Dawes, 2009 +// Copyright (C) 2011-2012 Vicente J. Botet Escriba +// Copyright (C) 2012 Anthony Williams + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_CORE_SCOPED_ENUM_HPP +#define BOOST_CORE_SCOPED_ENUM_HPP + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost +{ + +#ifdef BOOST_NO_CXX11_SCOPED_ENUMS + + /** + * Meta-function to get the native enum type associated to an enum class or its emulation. + */ + template + struct native_type + { + /** + * The member typedef type names the native enum type associated to the scoped enum, + * which is it self if the compiler supports scoped enums or EnumType::enum_type if it is an emulated scoped enum. + */ + typedef typename EnumType::enum_type type; + }; + + /** + * Casts a scoped enum to its underlying type. + * + * This function is useful when working with scoped enum classes, which doens't implicitly convert to the underlying type. + * @param v A scoped enum. + * @returns The underlying type. + * @throws No-throws. + */ + template + UnderlyingType underlying_cast(EnumType v) + { + return v.get_underlying_value_(); + } + + /** + * Casts a scoped enum to its native enum type. + * + * This function is useful to make programs portable when the scoped enum emulation can not be use where native enums can. + * + * EnumType the scoped enum type + * + * @param v A scoped enum. + * @returns The native enum value. + * @throws No-throws. + */ + template + inline + typename EnumType::enum_type native_value(EnumType e) + { + return e.get_native_value_(); + } + +#else // BOOST_NO_CXX11_SCOPED_ENUMS + + template + struct native_type + { + typedef EnumType type; + }; + + template + UnderlyingType underlying_cast(EnumType v) + { + return static_cast(v); + } + + template + inline + EnumType native_value(EnumType e) + { + return e; + } + +#endif // BOOST_NO_CXX11_SCOPED_ENUMS +} + + +#ifdef BOOST_NO_CXX11_SCOPED_ENUMS + +#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS + +#define BOOST_SCOPED_ENUM_UT_DECLARE_CONVERSION_OPERATOR \ + explicit operator underlying_type() const BOOST_NOEXCEPT { return get_underlying_value_(); } + +#else + +#define BOOST_SCOPED_ENUM_UT_DECLARE_CONVERSION_OPERATOR + +#endif + +/** + * Start a declaration of a scoped enum. + * + * @param EnumType The new scoped enum. + * @param UnderlyingType The underlying type. + */ +#define BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(EnumType, UnderlyingType) \ + struct EnumType { \ + typedef void is_boost_scoped_enum_tag; \ + typedef UnderlyingType underlying_type; \ + EnumType() BOOST_NOEXCEPT {} \ + explicit EnumType(underlying_type v) BOOST_NOEXCEPT : v_(v) {} \ + underlying_type get_underlying_value_() const BOOST_NOEXCEPT { return v_; } \ + BOOST_SCOPED_ENUM_UT_DECLARE_CONVERSION_OPERATOR \ + private: \ + underlying_type v_; \ + typedef EnumType self_type; \ + public: \ + enum enum_type + +#define BOOST_SCOPED_ENUM_DECLARE_END2() \ + enum_type get_native_value_() const BOOST_NOEXCEPT { return enum_type(v_); } \ + friend bool operator ==(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)==enum_type(rhs.v_); } \ + friend bool operator ==(self_type lhs, enum_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)==rhs; } \ + friend bool operator ==(enum_type lhs, self_type rhs) BOOST_NOEXCEPT { return lhs==enum_type(rhs.v_); } \ + friend bool operator !=(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)!=enum_type(rhs.v_); } \ + friend bool operator !=(self_type lhs, enum_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)!=rhs; } \ + friend bool operator !=(enum_type lhs, self_type rhs) BOOST_NOEXCEPT { return lhs!=enum_type(rhs.v_); } \ + friend bool operator <(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)>enum_type(rhs.v_); } \ + friend bool operator >(self_type lhs, enum_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)>rhs; } \ + friend bool operator >(enum_type lhs, self_type rhs) BOOST_NOEXCEPT { return lhs>enum_type(rhs.v_); } \ + friend bool operator >=(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)>=enum_type(rhs.v_); } \ + friend bool operator >=(self_type lhs, enum_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)>=rhs; } \ + friend bool operator >=(enum_type lhs, self_type rhs) BOOST_NOEXCEPT { return lhs>=enum_type(rhs.v_); } \ + }; + +#define BOOST_SCOPED_ENUM_DECLARE_END(EnumType) \ + ; \ + EnumType(enum_type v) BOOST_NOEXCEPT : v_(v) {} \ + BOOST_SCOPED_ENUM_DECLARE_END2() + +/** + * Starts a declaration of a scoped enum with the default int underlying type. + * + * @param EnumType The new scoped enum. + */ +#define BOOST_SCOPED_ENUM_DECLARE_BEGIN(EnumType) \ + BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(EnumType,int) + +/** + * Name of the native enum type. + * + * @param EnumType The new scoped enum. + */ +#define BOOST_SCOPED_ENUM_NATIVE(EnumType) EnumType::enum_type +/** + * Forward declares an scoped enum. + * + * @param EnumType The scoped enum. + */ +#define BOOST_SCOPED_ENUM_FORWARD_DECLARE(EnumType) struct EnumType + +#else // BOOST_NO_CXX11_SCOPED_ENUMS + +#define BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(EnumType,UnderlyingType) enum class EnumType : UnderlyingType +#define BOOST_SCOPED_ENUM_DECLARE_BEGIN(EnumType) enum class EnumType +#define BOOST_SCOPED_ENUM_DECLARE_END2() +#define BOOST_SCOPED_ENUM_DECLARE_END(EnumType) ; + +#define BOOST_SCOPED_ENUM_NATIVE(EnumType) EnumType +#define BOOST_SCOPED_ENUM_FORWARD_DECLARE(EnumType) enum class EnumType + +#endif // BOOST_NO_CXX11_SCOPED_ENUMS + +// Deprecated macros +#define BOOST_SCOPED_ENUM_START(name) BOOST_SCOPED_ENUM_DECLARE_BEGIN(name) +#define BOOST_SCOPED_ENUM_END BOOST_SCOPED_ENUM_DECLARE_END2() +#define BOOST_SCOPED_ENUM(name) BOOST_SCOPED_ENUM_NATIVE(name) + +#endif // BOOST_CORE_SCOPED_ENUM_HPP diff --git a/3party/boost/boost/core/swap.hpp b/3party/boost/boost/core/swap.hpp new file mode 100644 index 0000000000..baa1be970d --- /dev/null +++ b/3party/boost/boost/core/swap.hpp @@ -0,0 +1,60 @@ +// Copyright (C) 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// For more information, see http://www.boost.org + + +#ifndef BOOST_CORE_SWAP_HPP +#define BOOST_CORE_SWAP_HPP + +// Note: the implementation of this utility contains various workarounds: +// - swap_impl is put outside the boost namespace, to avoid infinite +// recursion (causing stack overflow) when swapping objects of a primitive +// type. +// - swap_impl has a using-directive, rather than a using-declaration, +// because some compilers (including MSVC 7.1, Borland 5.9.3, and +// Intel 8.1) don't do argument-dependent lookup when it has a +// using-declaration instead. +// - boost::swap has two template arguments, instead of one, to +// avoid ambiguity when swapping objects of a Boost type that does +// not have its own boost::swap overload. + +#include //for std::swap (C++11) +#include //for std::swap (C++98) +#include //for std::size_t +#include + +namespace boost_swap_impl +{ + template + BOOST_GPU_ENABLED + void swap_impl(T& left, T& right) + { + using namespace std;//use std::swap if argument dependent lookup fails + swap(left,right); + } + + template + BOOST_GPU_ENABLED + void swap_impl(T (& left)[N], T (& right)[N]) + { + for (std::size_t i = 0; i < N; ++i) + { + ::boost_swap_impl::swap_impl(left[i], right[i]); + } + } +} + +namespace boost +{ + template + BOOST_GPU_ENABLED + void swap(T1& left, T2& right) + { + ::boost_swap_impl::swap_impl(left, right); + } +} + +#endif diff --git a/3party/boost/boost/core/typeinfo.hpp b/3party/boost/boost/core/typeinfo.hpp new file mode 100644 index 0000000000..e67b4a3198 --- /dev/null +++ b/3party/boost/boost/core/typeinfo.hpp @@ -0,0 +1,151 @@ +#ifndef BOOST_CORE_TYPEINFO_HPP_INCLUDED +#define BOOST_CORE_TYPEINFO_HPP_INCLUDED + +// MS compatible compilers support #pragma once + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +// core::typeinfo, BOOST_CORE_TYPEID +// +// Copyright 2007, 2014 Peter Dimov +// +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include + +#if defined( BOOST_NO_TYPEID ) + +#include +#include + +namespace boost +{ + +namespace core +{ + +class typeinfo +{ +private: + + typeinfo( typeinfo const& ); + typeinfo& operator=( typeinfo const& ); + + char const * name_; + +public: + + explicit typeinfo( char const * name ): name_( name ) + { + } + + bool operator==( typeinfo const& rhs ) const + { + return this == &rhs; + } + + bool operator!=( typeinfo const& rhs ) const + { + return this != &rhs; + } + + bool before( typeinfo const& rhs ) const + { + return std::less< typeinfo const* >()( this, &rhs ); + } + + char const* name() const + { + return name_; + } +}; + +inline char const * demangled_name( core::typeinfo const & ti ) +{ + return ti.name(); +} + +} // namespace core + +namespace detail +{ + +template struct core_typeid_ +{ + static boost::core::typeinfo ti_; + + static char const * name() + { + return BOOST_CURRENT_FUNCTION; + } +}; + +#if defined(__SUNPRO_CC) +// see #4199, the Sun Studio compiler gets confused about static initialization +// constructor arguments. But an assignment works just fine. +template boost::core::typeinfo core_typeid_< T >::ti_ = core_typeid_< T >::name(); +#else +template boost::core::typeinfo core_typeid_< T >::ti_(core_typeid_< T >::name()); +#endif + +template struct core_typeid_< T & >: core_typeid_< T > +{ +}; + +template struct core_typeid_< T const >: core_typeid_< T > +{ +}; + +template struct core_typeid_< T volatile >: core_typeid_< T > +{ +}; + +template struct core_typeid_< T const volatile >: core_typeid_< T > +{ +}; + +} // namespace detail + +} // namespace boost + +#define BOOST_CORE_TYPEID(T) (boost::detail::core_typeid_::ti_) + +#else + +#include +#include + +namespace boost +{ + +namespace core +{ + +#if defined( BOOST_NO_STD_TYPEINFO ) + +typedef ::type_info typeinfo; + +#else + +typedef std::type_info typeinfo; + +#endif + +inline std::string demangled_name( core::typeinfo const & ti ) +{ + return core::demangle( ti.name() ); +} + +} // namespace core + +} // namespace boost + +#define BOOST_CORE_TYPEID(T) typeid(T) + +#endif + +#endif // #ifndef BOOST_CORE_TYPEINFO_HPP_INCLUDED diff --git a/3party/boost/boost/core/underlying_type.hpp b/3party/boost/boost/core/underlying_type.hpp new file mode 100644 index 0000000000..c79a0a6e56 --- /dev/null +++ b/3party/boost/boost/core/underlying_type.hpp @@ -0,0 +1,79 @@ +// underlying_type.hpp ---------------------------------------------------------// + +// Copyright Beman Dawes, 2009 +// Copyright (C) 2011-2012 Vicente J. Botet Escriba +// Copyright (C) 2012 Anthony Williams +// Copyright (C) 2014 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + +#ifndef BOOST_CORE_UNDERLYING_TYPE_HPP +#define BOOST_CORE_UNDERLYING_TYPE_HPP + +#include + +// GCC 4.7 and later seem to provide std::underlying_type +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) || (defined(BOOST_GCC) && BOOST_GCC >= 40700 && defined(__GXX_EXPERIMENTAL_CXX0X__)) +#include +#define BOOST_DETAIL_HAS_STD_UNDERLYING_TYPE +#endif + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost { + +namespace detail { + +template< typename EnumType, typename Void = void > +struct underlying_type_impl; + +#if defined(BOOST_NO_CXX11_SCOPED_ENUMS) + +// Support for boost/core/scoped_enum.hpp +template< typename EnumType > +struct underlying_type_impl< EnumType, typename EnumType::is_boost_scoped_enum_tag > +{ + /** + * The member typedef type names the underlying type of EnumType. It is EnumType::underlying_type when the EnumType is an emulated scoped enum, + */ + typedef typename EnumType::underlying_type type; +}; + +#endif + +#if defined(BOOST_DETAIL_HAS_STD_UNDERLYING_TYPE) + +template< typename EnumType, typename Void > +struct underlying_type_impl +{ + typedef typename std::underlying_type< EnumType >::type type; +}; + +#endif + +} // namespace detail + +#if !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && !defined(BOOST_DETAIL_HAS_STD_UNDERLYING_TYPE) +#define BOOST_NO_UNDERLYING_TYPE +#endif + +/** + * Meta-function to get the underlying type of a scoped enum. + * + * Requires EnumType must be an enum type or the emulation of a scoped enum. + * If BOOST_NO_UNDERLYING_TYPE is defined, the implementation will not be able + * to deduce the underlying type of enums. The used is expected to specialize + * this trait. + */ +template< typename EnumType > +struct underlying_type : + public detail::underlying_type_impl< EnumType > +{ +}; + +} // namespace boost + +#endif // BOOST_CORE_UNDERLYING_TYPE_HPP diff --git a/3party/boost/boost/coroutine/all.hpp b/3party/boost/boost/coroutine/all.hpp index d80ca206be..42f63a0a73 100644 --- a/3party/boost/boost/coroutine/all.hpp +++ b/3party/boost/boost/coroutine/all.hpp @@ -9,7 +9,13 @@ #include #include +#include #include +#include +#include #include +#include +#include +#include #endif // BOOST_COROUTINES_ALL_H diff --git a/3party/boost/boost/coroutine/asymmetric_coroutine.hpp b/3party/boost/boost/coroutine/asymmetric_coroutine.hpp new file mode 100644 index 0000000000..38ad3ab939 --- /dev/null +++ b/3party/boost/boost/coroutine/asymmetric_coroutine.hpp @@ -0,0 +1,2269 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_ASYMMETRIC_COROUTINE_H +#define BOOST_COROUTINES_ASYMMETRIC_COROUTINE_H + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +template< typename R > +class pull_coroutine; + +template< typename Arg > +class push_coroutine +{ +private: + template< typename V, typename X, typename Y, typename Z > + friend class detail::pull_coroutine_object; + + typedef detail::push_coroutine_impl< Arg > impl_type; + typedef detail::push_coroutine_synthesized< Arg > synth_type; + typedef detail::parameters< Arg > param_type; + + struct dummy {}; + + impl_type * impl_; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( push_coroutine) + + explicit push_coroutine( detail::synthesized_t::flag_t, impl_type & impl) : + impl_( & impl) + { BOOST_ASSERT( impl_); } + +public: + push_coroutine() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( pull_coroutine< Arg > &); + + explicit push_coroutine( coroutine_fn, + attributes const& = attributes() ); + + template< typename StackAllocator > + explicit push_coroutine( coroutine_fn, + attributes const&, + StackAllocator); +# endif + template< typename Fn > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const&, + StackAllocator); +#else + template< typename Fn > + explicit push_coroutine( Fn fn, + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( Fn fn, + attributes const&, + StackAllocator); + + template< typename Fn > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const&, + StackAllocator); +#endif + + ~push_coroutine() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + push_coroutine( BOOST_RV_REF( push_coroutine) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + push_coroutine & operator=( BOOST_RV_REF( push_coroutine) other) BOOST_NOEXCEPT + { + push_coroutine tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete(); } + + void swap( push_coroutine & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + push_coroutine & operator()( Arg arg) + { + BOOST_ASSERT( * this); + + impl_->push( arg); + return * this; + } + + class iterator : public std::iterator< std::output_iterator_tag, void, void, void, void > + { + private: + push_coroutine< Arg > * c_; + + public: + iterator() : + c_( 0) + {} + + explicit iterator( push_coroutine< Arg > * c) : + c_( c) + {} + + iterator & operator=( Arg a) + { + BOOST_ASSERT( c_); + if ( ! ( * c_)( a) ) c_ = 0; + return * this; + } + + bool operator==( iterator const& other) const + { return other.c_ == c_; } + + bool operator!=( iterator const& other) const + { return other.c_ != c_; } + + iterator & operator*() + { return * this; } + + iterator & operator++() + { return * this; } + }; + + struct const_iterator; +}; + +template< typename Arg > +class push_coroutine< Arg & > +{ +private: + template< typename V, typename X, typename Y, typename Z > + friend class detail::pull_coroutine_object; + + typedef detail::push_coroutine_impl< Arg & > impl_type; + typedef detail::push_coroutine_synthesized< Arg & > synth_type; + typedef detail::parameters< Arg & > param_type; + + struct dummy {}; + + impl_type * impl_; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( push_coroutine) + + explicit push_coroutine( detail::synthesized_t::flag_t, impl_type & impl) : + impl_( & impl) + { BOOST_ASSERT( impl_); } + +public: + push_coroutine() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( pull_coroutine< Arg & > &); + + explicit push_coroutine( coroutine_fn, + attributes const& = attributes() ); + + template< typename StackAllocator > + explicit push_coroutine( coroutine_fn, + attributes const&, + StackAllocator); +# endif + template< typename Fn > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const&, + StackAllocator); +#else + template< typename Fn > + explicit push_coroutine( Fn, + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( Fn, + attributes const&, + StackAllocator); + + template< typename Fn > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const&, + StackAllocator); +#endif + + ~push_coroutine() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + push_coroutine( BOOST_RV_REF( push_coroutine) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + push_coroutine & operator=( BOOST_RV_REF( push_coroutine) other) BOOST_NOEXCEPT + { + push_coroutine tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete(); } + + void swap( push_coroutine & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + push_coroutine & operator()( Arg & arg) + { + BOOST_ASSERT( * this); + + impl_->push( arg); + return * this; + } + + class iterator : public std::iterator< std::output_iterator_tag, void, void, void, void > + { + private: + push_coroutine< Arg & > * c_; + + public: + iterator() : + c_( 0) + {} + + explicit iterator( push_coroutine< Arg & > * c) : + c_( c) + {} + + iterator & operator=( Arg & a) + { + BOOST_ASSERT( c_); + if ( ! ( * c_)( a) ) c_ = 0; + return * this; + } + + bool operator==( iterator const& other) const + { return other.c_ == c_; } + + bool operator!=( iterator const& other) const + { return other.c_ != c_; } + + iterator & operator*() + { return * this; } + + iterator & operator++() + { return * this; } + }; + + struct const_iterator; +}; + +template<> +class push_coroutine< void > +{ +private: + template< typename V, typename X, typename Y, typename Z > + friend class detail::pull_coroutine_object; + + typedef detail::push_coroutine_impl< void > impl_type; + typedef detail::push_coroutine_synthesized< void > synth_type; + typedef detail::parameters< void > param_type; + + struct dummy {}; + + impl_type * impl_; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( push_coroutine) + + explicit push_coroutine( detail::synthesized_t::flag_t, impl_type & impl) : + impl_( & impl) + { BOOST_ASSERT( impl_); } + +public: + push_coroutine() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( pull_coroutine< void > &); + + explicit push_coroutine( coroutine_fn, + attributes const& = attributes() ); + + template< typename StackAllocator > + explicit push_coroutine( coroutine_fn, + attributes const&, + StackAllocator); +# endif + template< typename Fn > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const&, + StackAllocator); +#else + template< typename Fn > + explicit push_coroutine( Fn, + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( Fn, + attributes const&, + StackAllocator); + + template< typename Fn > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const& = attributes() ); + + template< typename Fn, typename StackAllocator > + explicit push_coroutine( BOOST_RV_REF( Fn), + attributes const&, + StackAllocator); +#endif + + ~push_coroutine() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + push_coroutine( BOOST_RV_REF( push_coroutine) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + push_coroutine & operator=( BOOST_RV_REF( push_coroutine) other) BOOST_NOEXCEPT + { + push_coroutine tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete(); } + + void swap( push_coroutine & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + push_coroutine & operator()() + { + BOOST_ASSERT( * this); + + impl_->push(); + return * this; + } + + struct iterator; + struct const_iterator; +}; + + + +template< typename R > +class pull_coroutine +{ +private: + template< typename V, typename X, typename Y, typename Z > + friend class detail::push_coroutine_object; + + typedef detail::pull_coroutine_impl< R > impl_type; + typedef detail::pull_coroutine_synthesized< R > synth_type; + typedef detail::parameters< R > param_type; + + struct dummy {}; + + impl_type * impl_; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( pull_coroutine) + + explicit pull_coroutine( detail::synthesized_t::flag_t, impl_type & impl) : + impl_( & impl) + { BOOST_ASSERT( impl_); } + +public: + pull_coroutine() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( push_coroutine< R > &); + + explicit pull_coroutine( coroutine_fn fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R >, R, coroutine_fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename StackAllocator > + explicit pull_coroutine( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R >, R, coroutine_fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +# endif + template< typename Fn > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R >, R, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R >, R, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +#else + template< typename Fn > + explicit pull_coroutine( Fn fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R >, R, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R >, R, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R >, R, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R >, R, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +#endif + + ~pull_coroutine() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + pull_coroutine( BOOST_RV_REF( pull_coroutine) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + pull_coroutine & operator=( BOOST_RV_REF( pull_coroutine) other) BOOST_NOEXCEPT + { + pull_coroutine tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete(); } + + void swap( pull_coroutine & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + pull_coroutine & operator()() + { + BOOST_ASSERT( * this); + + impl_->pull(); + return * this; + } + + R get() const + { + BOOST_ASSERT( 0 != impl_); + + return impl_->get(); + } + + class iterator : public std::iterator< std::input_iterator_tag, typename remove_reference< R >::type > + { + private: + pull_coroutine< R > * c_; + R * val_; + + void fetch_() + { + BOOST_ASSERT( c_); + + if ( ! ( * c_) ) + { + c_ = 0; + val_ = 0; + return; + } + val_ = c_->impl_->get_pointer(); + } + + void increment_() + { + BOOST_ASSERT( c_); + BOOST_ASSERT( * c_); + + ( * c_)(); + fetch_(); + } + + public: + typedef typename iterator::pointer pointer_t; + typedef typename iterator::reference reference_t; + + iterator() : + c_( 0), val_( 0) + {} + + explicit iterator( pull_coroutine< R > * c) : + c_( c), val_( 0) + { fetch_(); } + + iterator( iterator const& other) : + c_( other.c_), val_( other.val_) + {} + + iterator & operator=( iterator const& other) + { + if ( this == & other) return * this; + c_ = other.c_; + val_ = other.val_; + return * this; + } + + bool operator==( iterator const& other) const + { return other.c_ == c_ && other.val_ == val_; } + + bool operator!=( iterator const& other) const + { return other.c_ != c_ || other.val_ != val_; } + + iterator & operator++() + { + increment_(); + return * this; + } + + iterator operator++( int) + { + iterator tmp( * this); + ++*this; + return tmp; + } + + reference_t operator*() const + { + if ( ! val_) + boost::throw_exception( + invalid_result() ); + return * val_; + } + + pointer_t operator->() const + { + if ( ! val_) + boost::throw_exception( + invalid_result() ); + return val_; + } + }; + + friend class iterator; + + struct const_iterator; +}; + +template< typename R > +class pull_coroutine< R & > +{ +private: + template< typename V, typename X, typename Y, typename Z > + friend class detail::push_coroutine_object; + + typedef detail::pull_coroutine_impl< R & > impl_type; + typedef detail::pull_coroutine_synthesized< R & > synth_type; + typedef detail::parameters< R & > param_type; + + struct dummy {}; + + impl_type * impl_; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( pull_coroutine) + + explicit pull_coroutine( detail::synthesized_t::flag_t, impl_type & impl) : + impl_( & impl) + { BOOST_ASSERT( impl_); } + +public: + pull_coroutine() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( push_coroutine< R & > &); + + explicit pull_coroutine( coroutine_fn fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R & >, R &, coroutine_fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename StackAllocator > + explicit pull_coroutine( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R & >, R &, coroutine_fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +# endif + template< typename Fn > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R & >, R &, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R & >, R &, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +#else + template< typename Fn > + explicit pull_coroutine( Fn fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R & >, R &, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R & >, R &, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R & >, R &, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< R & >, R &, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +#endif + + ~pull_coroutine() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + pull_coroutine( BOOST_RV_REF( pull_coroutine) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + pull_coroutine & operator=( BOOST_RV_REF( pull_coroutine) other) BOOST_NOEXCEPT + { + pull_coroutine tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete(); } + + void swap( pull_coroutine & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + pull_coroutine & operator()() + { + BOOST_ASSERT( * this); + + impl_->pull(); + return * this; + } + + R & get() const + { return impl_->get(); } + + class iterator : public std::iterator< std::input_iterator_tag, R > + { + private: + pull_coroutine< R & > * c_; + R * val_; + + void fetch_() + { + BOOST_ASSERT( c_); + + if ( ! ( * c_) ) + { + c_ = 0; + val_ = 0; + return; + } + val_ = c_->impl_->get_pointer(); + } + + void increment_() + { + BOOST_ASSERT( c_); + BOOST_ASSERT( * c_); + + ( * c_)(); + fetch_(); + } + + public: + typedef typename iterator::pointer pointer_t; + typedef typename iterator::reference reference_t; + + iterator() : + c_( 0), val_( 0) + {} + + explicit iterator( pull_coroutine< R & > * c) : + c_( c), val_( 0) + { fetch_(); } + + iterator( iterator const& other) : + c_( other.c_), val_( other.val_) + {} + + iterator & operator=( iterator const& other) + { + if ( this == & other) return * this; + c_ = other.c_; + val_ = other.val_; + return * this; + } + + bool operator==( iterator const& other) const + { return other.c_ == c_ && other.val_ == val_; } + + bool operator!=( iterator const& other) const + { return other.c_ != c_ || other.val_ != val_; } + + iterator & operator++() + { + increment_(); + return * this; + } + + iterator operator++( int) + { + iterator tmp( * this); + ++*this; + return tmp; + } + + reference_t operator*() const + { + if ( ! val_) + boost::throw_exception( + invalid_result() ); + return * val_; + } + + pointer_t operator->() const + { + if ( ! val_) + boost::throw_exception( + invalid_result() ); + return val_; + } + }; + + friend class iterator; + + struct const_iterator; +}; + +template<> +class pull_coroutine< void > +{ +private: + template< typename V, typename X, typename Y, typename Z > + friend class detail::push_coroutine_object; + + typedef detail::pull_coroutine_impl< void > impl_type; + typedef detail::pull_coroutine_synthesized< void > synth_type; + typedef detail::parameters< void > param_type; + + struct dummy {}; + + impl_type * impl_; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( pull_coroutine) + + explicit pull_coroutine( detail::synthesized_t::flag_t, impl_type & impl) : + impl_( & impl) + { BOOST_ASSERT( impl_); } + +public: + pull_coroutine() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( push_coroutine< void > &); + + explicit pull_coroutine( coroutine_fn fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< void >, void, coroutine_fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename StackAllocator > + explicit pull_coroutine( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< void >, void, coroutine_fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +# endif + template< typename Fn > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< void >, void, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< void >, void, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +#else + template< typename Fn > + explicit pull_coroutine( Fn fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< void >, void, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< void >, void, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< void >, void, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } + + template< typename Fn, typename StackAllocator > + explicit pull_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::pull_coroutine_object< + push_coroutine< void >, void, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + impl_->pull(); + } +#endif + + ~pull_coroutine() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + pull_coroutine( BOOST_RV_REF( pull_coroutine) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + pull_coroutine & operator=( BOOST_RV_REF( pull_coroutine) other) BOOST_NOEXCEPT + { + pull_coroutine tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete(); } + + void swap( pull_coroutine & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + pull_coroutine & operator()() + { + BOOST_ASSERT( * this); + + impl_->pull(); + return * this; + } + + struct iterator; + struct const_iterator; +}; + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC +template< typename Arg > +push_coroutine< Arg >::push_coroutine( coroutine_fn fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg >, Arg, coroutine_fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename StackAllocator > +push_coroutine< Arg >::push_coroutine( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg >, Arg, coroutine_fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +push_coroutine< Arg & >::push_coroutine( coroutine_fn fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg & >, Arg &, coroutine_fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename StackAllocator > +push_coroutine< Arg & >::push_coroutine( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg & >, Arg &, coroutine_fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +push_coroutine< void >::push_coroutine( coroutine_fn fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< void >, void, coroutine_fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename StackAllocator > +push_coroutine< void >::push_coroutine( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< void >, void, coroutine_fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} +# endif +template< typename Arg > +template< typename Fn > +push_coroutine< Arg >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg >, Arg, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn, typename StackAllocator > +push_coroutine< Arg >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg >, Arg, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn > +push_coroutine< Arg & >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg & >, Arg &, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn, typename StackAllocator > +push_coroutine< Arg & >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg & >, Arg &, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Fn > +push_coroutine< void >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< void >, void, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Fn, typename StackAllocator > +push_coroutine< void >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< void >, void, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} +#else +template< typename Arg > +template< typename Fn > +push_coroutine< Arg >::push_coroutine( Fn fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg >, Arg, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn, typename StackAllocator > +push_coroutine< Arg >::push_coroutine( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg >, Arg, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn > +push_coroutine< Arg & >::push_coroutine( Fn fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg & >, Arg &, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn, typename StackAllocator > +push_coroutine< Arg & >::push_coroutine( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg & >, Arg &, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Fn > +push_coroutine< void >::push_coroutine( Fn fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< void >, void, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Fn, typename StackAllocator > +push_coroutine< void >::push_coroutine( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< void >, void, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn > +push_coroutine< Arg >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg >, Arg, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn, typename StackAllocator > +push_coroutine< Arg >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg >, Arg, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn > +push_coroutine< Arg & >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg & >, Arg &, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Arg > +template< typename Fn, typename StackAllocator > +push_coroutine< Arg & >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< Arg & >, Arg &, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Fn > +push_coroutine< void >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + stack_allocator stack_alloc; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< void >, void, Fn, stack_allocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} + +template< typename Fn, typename StackAllocator > +push_coroutine< void >::push_coroutine( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) +{ + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef detail::push_coroutine_object< + pull_coroutine< void >, void, Fn, StackAllocator + > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); +} +#endif + +template< typename R > +void swap( pull_coroutine< R > & l, pull_coroutine< R > & r) BOOST_NOEXCEPT +{ l.swap( r); } + +template< typename Arg > +void swap( push_coroutine< Arg > & l, push_coroutine< Arg > & r) BOOST_NOEXCEPT +{ l.swap( r); } + +template< typename R > +typename pull_coroutine< R >::iterator +range_begin( pull_coroutine< R > & c) +{ return typename pull_coroutine< R >::iterator( & c); } + +template< typename R > +typename pull_coroutine< R >::iterator +range_end( pull_coroutine< R > &) +{ return typename pull_coroutine< R >::iterator(); } + +template< typename Arg > +typename push_coroutine< Arg >::iterator +range_begin( push_coroutine< Arg > & c) +{ return typename push_coroutine< Arg >::iterator( & c); } + +template< typename Arg > +typename push_coroutine< Arg >::iterator +range_end( push_coroutine< Arg > &) +{ return typename push_coroutine< Arg >::iterator(); } + +template< typename T > +struct asymmetric_coroutine +{ + typedef push_coroutine< T > push_type; + typedef pull_coroutine< T > pull_type; +}; + +// deprecated +template< typename T > +struct coroutine +{ + typedef push_coroutine< T > push_type; + typedef pull_coroutine< T > pull_type; +}; + +#if defined(__clang__) +template< typename R > +typename pull_coroutine< R >::iterator +begin( pull_coroutine< R > & c) +{ return boost::begin( c); } + +template< typename R > +typename pull_coroutine< R >::iterator +end( pull_coroutine< R > & c) +{ return boost::end( c); } + +template< typename R > +typename push_coroutine< R >::iterator +begin( push_coroutine< R > & c) +{ return boost::begin( c); } + +template< typename R > +typename push_coroutine< R >::iterator +end( push_coroutine< R > & c) +{ return boost::end( c); } +#endif + +} + +template< typename Arg > +struct range_mutable_iterator< coroutines::push_coroutine< Arg > > +{ typedef typename coroutines::push_coroutine< Arg >::iterator type; }; + +template< typename R > +struct range_mutable_iterator< coroutines::pull_coroutine< R > > +{ typedef typename coroutines::pull_coroutine< R >::iterator type; }; + +} + +namespace std { + +template< typename R > +typename boost::coroutines::pull_coroutine< R >::iterator +begin( boost::coroutines::pull_coroutine< R > & c) +{ return boost::begin( c); } + +template< typename R > +typename boost::coroutines::pull_coroutine< R >::iterator +end( boost::coroutines::pull_coroutine< R > & c) +{ return boost::end( c); } + +template< typename R > +typename boost::coroutines::push_coroutine< R >::iterator +begin( boost::coroutines::push_coroutine< R > & c) +{ return boost::begin( c); } + +template< typename R > +typename boost::coroutines::push_coroutine< R >::iterator +end( boost::coroutines::push_coroutine< R > & c) +{ return boost::end( c); } + +} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_ASYMMETRIC_COROUTINE_H diff --git a/3party/boost/boost/coroutine/attributes.hpp b/3party/boost/boost/coroutine/attributes.hpp index 2855082423..065a4c66e3 100644 --- a/3party/boost/boost/coroutine/attributes.hpp +++ b/3party/boost/boost/coroutine/attributes.hpp @@ -28,7 +28,7 @@ struct attributes flag_fpu_t preserve_fpu; attributes() BOOST_NOEXCEPT : - size( stack_allocator::default_stacksize() ), + size( stack_allocator::traits_type::default_size() ), do_unwind( stack_unwind), preserve_fpu( fpu_preserved) {} @@ -40,13 +40,13 @@ struct attributes {} explicit attributes( flag_unwind_t do_unwind_) BOOST_NOEXCEPT : - size( stack_allocator::default_stacksize() ), + size( stack_allocator::traits_type::default_size() ), do_unwind( do_unwind_), preserve_fpu( fpu_preserved) {} explicit attributes( flag_fpu_t preserve_fpu_) BOOST_NOEXCEPT : - size( stack_allocator::default_stacksize() ), + size( stack_allocator::traits_type::default_size() ), do_unwind( stack_unwind), preserve_fpu( preserve_fpu_) {} @@ -70,7 +70,16 @@ struct attributes explicit attributes( flag_unwind_t do_unwind_, flag_fpu_t preserve_fpu_) BOOST_NOEXCEPT : - size( stack_allocator::default_stacksize() ), + size( stack_allocator::traits_type::default_size() ), + do_unwind( do_unwind_), + preserve_fpu( preserve_fpu_) + {} + + explicit attributes( + std::size_t size_, + flag_unwind_t do_unwind_, + flag_fpu_t preserve_fpu_) BOOST_NOEXCEPT : + size( size_), do_unwind( do_unwind_), preserve_fpu( preserve_fpu_) {} diff --git a/3party/boost/boost/coroutine/checkpoint.hpp b/3party/boost/boost/coroutine/checkpoint.hpp deleted file mode 100644 index e7134142fa..0000000000 --- a/3party/boost/boost/coroutine/checkpoint.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_CHECKPOINT_H -#define BOOST_COROUTINES_CHECKPOINT_H - -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { - -class checkpoint -{ -public: -private: - context::fcontext_t ctx_; - void * sp_; -}; - -}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_CHECKPOINT_H diff --git a/3party/boost/boost/coroutine/coroutine.hpp b/3party/boost/boost/coroutine/coroutine.hpp index bfb89d9fe5..076ffd26ea 100644 --- a/3party/boost/boost/coroutine/coroutine.hpp +++ b/3party/boost/boost/coroutine/coroutine.hpp @@ -7,10 +7,7 @@ #ifndef BOOST_COROUTINES_COROUTINE_H #define BOOST_COROUTINES_COROUTINE_H -#ifdef BOOST_COROUTINES_V2 -#include -#else -#include -#endif +#include +#include #endif // BOOST_COROUTINES_COROUTINE_H diff --git a/3party/boost/boost/coroutine/detail/config.hpp b/3party/boost/boost/coroutine/detail/config.hpp index 04527304c7..9a3f4bf334 100644 --- a/3party/boost/boost/coroutine/detail/config.hpp +++ b/3party/boost/boost/coroutine/detail/config.hpp @@ -14,16 +14,12 @@ # undef BOOST_COROUTINES_DECL #endif -#if defined(BOOST_HAS_DECLSPEC) -# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_COROUTINES_DYN_LINK) -# if ! defined(BOOST_DYN_LINK) -# define BOOST_DYN_LINK -# endif -# if defined(BOOST_COROUTINES_SOURCE) -# define BOOST_COROUTINES_DECL BOOST_SYMBOL_EXPORT -# else -# define BOOST_COROUTINES_DECL BOOST_SYMBOL_IMPORT -# endif +#if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_COROUTINES_DYN_LINK) ) && ! defined(BOOST_COROUTINES_STATIC_LINK) +# if defined(BOOST_COROUTINES_SOURCE) +# define BOOST_COROUTINES_DECL BOOST_SYMBOL_EXPORT +# define BOOST_COROUTINES_BUILD_DLL +# else +# define BOOST_COROUTINES_DECL BOOST_SYMBOL_IMPORT # endif #endif @@ -32,7 +28,7 @@ #endif #if ! defined(BOOST_COROUTINES_SOURCE) && ! defined(BOOST_ALL_NO_LIB) && ! defined(BOOST_COROUTINES_NO_LIB) -# define BOOST_LIB_NAME boost_context +# define BOOST_LIB_NAME boost_coroutine # if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_COROUTINES_DYN_LINK) # define BOOST_DYN_LINK # endif @@ -40,14 +36,14 @@ #endif #if defined(BOOST_USE_SEGMENTED_STACKS) -# if ! (defined(__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 6) +# if ! ( (defined(__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 6) || \ + (defined(__clang__) && __clang_major__ > 2 && __clang_minor__ > 3) ) # error "compiler does not support segmented stacks" # endif # define BOOST_COROUTINES_SEGMENTS 10 #endif -//#ifndef BOOST_COROUTINES_V1 -//# define BOOST_COROUTINES_V2 -//#endif +#define BOOST_COROUTINES_UNIDIRECT +#define BOOST_COROUTINES_SYMMETRIC #endif // BOOST_COROUTINES_DETAIL_CONFIG_H diff --git a/3party/boost/boost/coroutine/detail/coroutine_context.hpp b/3party/boost/boost/coroutine/detail/coroutine_context.hpp index d02ab1a955..6c4ebb68b1 100644 --- a/3party/boost/boost/coroutine/detail/coroutine_context.hpp +++ b/3party/boost/boost/coroutine/detail/coroutine_context.hpp @@ -14,42 +14,43 @@ #include #include -#include "boost/coroutine/stack_context.hpp" +#include #ifdef BOOST_HAS_ABI_HEADERS # include BOOST_ABI_PREFIX #endif -#if defined(BOOST_USE_SEGMENTED_STACKS) -extern "C" void *__splitstack_makecontext( - std::size_t, void * [BOOST_COROUTINES_SEGMENTS], std::size_t *); -#endif - namespace boost { namespace coroutines { namespace detail { - -class BOOST_COROUTINES_DECL coroutine_context : private context::fcontext_t, - private stack_context +// class hold stack-context and coroutines execution-context +class BOOST_COROUTINES_DECL coroutine_context { private: - stack_context * stack_ctx_; - context::fcontext_t * ctx_; + stack_context stack_ctx_; + context::fcontext_t ctx_; public: typedef void( * ctx_fn)( intptr_t); + // default ctor represents the current execution-context coroutine_context(); - explicit coroutine_context( ctx_fn, stack_context *); + // ctor creates a new execution-context running coroutine-fn `fn` + // `ctx_` will be allocated on top of the stack managed by parameter + // `stack_ctx` + coroutine_context( ctx_fn fn, stack_context const& stack_ctx); coroutine_context( coroutine_context const&); coroutine_context& operator=( coroutine_context const&); intptr_t jump( coroutine_context &, intptr_t = 0, bool = true); + + stack_context & stack_ctx() + { return stack_ctx_; } }; }}} diff --git a/3party/boost/boost/coroutine/detail/exceptions.hpp b/3party/boost/boost/coroutine/detail/exceptions.hpp deleted file mode 100644 index 39f385407c..0000000000 --- a/3party/boost/boost/coroutine/detail/exceptions.hpp +++ /dev/null @@ -1,28 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_DETAIL_EXCEPTIONs_H -#define BOOST_COROUTINES_DETAIL_EXCEPTIONs_H - -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -struct forced_unwind {}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_DETAIL_EXCEPTIONs_H diff --git a/3party/boost/boost/coroutine/detail/flags.hpp b/3party/boost/boost/coroutine/detail/flags.hpp index 33f2142f75..8d19757ee8 100644 --- a/3party/boost/boost/coroutine/detail/flags.hpp +++ b/3party/boost/boost/coroutine/detail/flags.hpp @@ -19,10 +19,24 @@ namespace detail { enum flag_t { - flag_complete = 1 << 1, - flag_unwind_stack = 1 << 2, - flag_force_unwind = 1 << 3, - flag_preserve_fpu = 1 << 4 + flag_started = 1 << 1, + flag_running = 1 << 2, + flag_complete = 1 << 3, + flag_unwind_stack = 1 << 4, + flag_force_unwind = 1 << 5, + flag_preserve_fpu = 1 << 6 +}; + +struct unwind_t +{ + enum flag_t + { force_unwind = 1 }; +}; + +struct synthesized_t +{ + enum flag_t + { syntesized = 1 }; }; }}} diff --git a/3party/boost/boost/coroutine/detail/holder.hpp b/3party/boost/boost/coroutine/detail/holder.hpp deleted file mode 100644 index 0d2d4f08f8..0000000000 --- a/3party/boost/boost/coroutine/detail/holder.hpp +++ /dev/null @@ -1,90 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_DETAIL_HOLDER_H -#define BOOST_COROUTINES_DETAIL_HOLDER_H - -#include -#include -#include - -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< typename Data > -struct holder -{ - coroutine_context * ctx; - optional< Data > data; - bool force_unwind; - - explicit holder( coroutine_context * ctx_) : - ctx( ctx_), data(), force_unwind( false) - { BOOST_ASSERT( ctx); } - - explicit holder( coroutine_context * ctx_, Data data_) : - ctx( ctx_), data( data_), force_unwind( false) - { BOOST_ASSERT( ctx); } - - explicit holder( coroutine_context * ctx_, bool force_unwind_) : - ctx( ctx_), data(), force_unwind( force_unwind_) - { - BOOST_ASSERT( ctx); - BOOST_ASSERT( force_unwind); - } - - holder( holder const& other) : - ctx( other.ctx), data( other.data), - force_unwind( other.force_unwind) - {} - - holder & operator=( holder const& other) - { - if ( this == & other) return * this; - ctx = other.ctx; - data = other.data; - force_unwind = other.force_unwind; - return * this; - } -}; - -template<> -struct holder< void > -{ - coroutine_context * ctx; - bool force_unwind; - - explicit holder( coroutine_context * ctx_, bool force_unwind_ = false) : - ctx( ctx_), force_unwind( force_unwind_) - { BOOST_ASSERT( ctx); } - - holder( holder const& other) : - ctx( other.ctx), force_unwind( other.force_unwind) - {} - - holder & operator=( holder const& other) - { - if ( this == & other) return * this; - ctx = other.ctx; - force_unwind = other.force_unwind; - return * this; - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_DETAIL_HOLDER_H diff --git a/3party/boost/boost/coroutine/detail/param.hpp b/3party/boost/boost/coroutine/detail/param.hpp deleted file mode 100644 index 4e8f1fecb3..0000000000 --- a/3party/boost/boost/coroutine/detail/param.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_DETAIL_PARAM_H -#define BOOST_COROUTINES_DETAIL_PARAM_H - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< typename T > -struct param : - public mpl::eval_if< - mpl::or_< - is_scalar< T >, - is_stateless< T >, - is_reference< T > - >, - mpl::identity< T >, - add_reference< T > - > -{}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_DETAIL_PARAM_H diff --git a/3party/boost/boost/coroutine/detail/parameters.hpp b/3party/boost/boost/coroutine/detail/parameters.hpp new file mode 100644 index 0000000000..8bad3910a9 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/parameters.hpp @@ -0,0 +1,102 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_PARAMETERS_H +#define BOOST_COROUTINES_DETAIL_PARAMETERS_H + +#include +#include + +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename Data > +struct parameters +{ + Data * data; + bool do_unwind; + void * coro; + + parameters() : + data( 0), do_unwind( false), coro( 0) + {} + + explicit parameters( void * coro_) : + data( 0), do_unwind( false), coro( coro_) + { BOOST_ASSERT( 0 != coro); } + + explicit parameters( Data * data_, void * coro_) : + data( data_), do_unwind( false), coro( coro_) + { + BOOST_ASSERT( 0 != data); + BOOST_ASSERT( 0 != coro); + } + + explicit parameters( unwind_t::flag_t) : + data( 0), do_unwind( true) + {} +}; + +template< typename Data > +struct parameters< Data & > +{ + Data * data; + bool do_unwind; + void * coro; + + parameters() : + data( 0), do_unwind( false), coro( 0) + {} + + explicit parameters( void * coro_) : + data( 0), do_unwind( false), coro( coro_) + { BOOST_ASSERT( 0 != coro); } + + explicit parameters( Data * data_, void * coro_) : + data( data_), do_unwind( false), coro( coro_) + { + BOOST_ASSERT( 0 != data); + BOOST_ASSERT( 0 != coro); + } + + explicit parameters( unwind_t::flag_t) : + data( 0), do_unwind( true), coro( 0) + {} +}; + +template<> +struct parameters< void > +{ + bool do_unwind; + void * coro; + + parameters() : + do_unwind( false), coro(0) + {} + + parameters( void * coro_) : + do_unwind( false), coro( coro_) + { BOOST_ASSERT( 0 != coro); } + + explicit parameters( unwind_t::flag_t) : + do_unwind( true), coro( 0) + {} +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_PARAMETERS_H diff --git a/3party/boost/boost/coroutine/detail/pull_coroutine_impl.hpp b/3party/boost/boost/coroutine/detail/pull_coroutine_impl.hpp new file mode 100644 index 0000000000..97a18bf005 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/pull_coroutine_impl.hpp @@ -0,0 +1,355 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_PULL_COROUTINE_IMPL_H +#define BOOST_COROUTINES_DETAIL_PULL_COROUTINE_IMPL_H + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +struct stack_context; + +namespace detail { + +template< typename R > +class pull_coroutine_impl : private noncopyable +{ +protected: + int flags_; + exception_ptr except_; + coroutine_context * caller_; + coroutine_context * callee_; + R * result_; + +public: + typedef parameters< R > param_type; + + pull_coroutine_impl( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + flags_( 0), + except_(), + caller_( caller), + callee_( callee), + result_( 0) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + pull_coroutine_impl( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu, + R * result) : + flags_( 0), + except_(), + caller_( caller), + callee_( callee), + result_( result) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + virtual ~pull_coroutine_impl() {} + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + param_type to( unwind_t::force_unwind); + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void pull() + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + param_type to( this); + param_type * from( + reinterpret_cast< param_type * >( + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ &= ~flag_running; + result_ = from->data; + if ( from->do_unwind) throw forced_unwind(); + if ( except_) rethrow_exception( except_); + } + + bool has_result() const + { return 0 != result_; } + + R get() const + { + if ( ! has_result() ) + boost::throw_exception( + invalid_result() ); + return * result_; + } + + R * get_pointer() const + { + if ( ! has_result() ) + boost::throw_exception( + invalid_result() ); + return result_; + } + + virtual void destroy() = 0; +}; + +template< typename R > +class pull_coroutine_impl< R & > : private noncopyable +{ +protected: + int flags_; + exception_ptr except_; + coroutine_context * caller_; + coroutine_context * callee_; + R * result_; + +public: + typedef parameters< R & > param_type; + + pull_coroutine_impl( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + flags_( 0), + except_(), + caller_( caller), + callee_( callee), + result_( 0) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + pull_coroutine_impl( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu, + R * result) : + flags_( 0), + except_(), + caller_( caller), + callee_( callee), + result_( result) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + virtual ~pull_coroutine_impl() {} + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + param_type to( unwind_t::force_unwind); + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void pull() + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + param_type to( this); + param_type * from( + reinterpret_cast< param_type * >( + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ &= ~flag_running; + result_ = from->data; + if ( from->do_unwind) throw forced_unwind(); + if ( except_) rethrow_exception( except_); + } + + bool has_result() const + { return 0 != result_; } + + R & get() const + { + if ( ! has_result() ) + boost::throw_exception( + invalid_result() ); + return * result_; + } + + R * get_pointer() const + { + if ( ! has_result() ) + boost::throw_exception( + invalid_result() ); + return result_; + } + + virtual void destroy() = 0; +}; + +template<> +class pull_coroutine_impl< void > : private noncopyable +{ +protected: + int flags_; + exception_ptr except_; + coroutine_context * caller_; + coroutine_context * callee_; + +public: + typedef parameters< void > param_type; + + pull_coroutine_impl( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + flags_( 0), + except_(), + caller_( caller), + callee_( callee) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + virtual ~pull_coroutine_impl() {} + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + param_type to( unwind_t::force_unwind); + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void pull() + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + param_type to( this); + param_type * from( + reinterpret_cast< param_type * >( + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ &= ~flag_running; + if ( from->do_unwind) throw forced_unwind(); + if ( except_) rethrow_exception( except_); + } + + virtual void destroy() = 0; +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_PULL_COROUTINE_IMPL_H diff --git a/3party/boost/boost/coroutine/detail/pull_coroutine_object.hpp b/3party/boost/boost/coroutine/detail/pull_coroutine_object.hpp new file mode 100644 index 0000000000..acc9a570a3 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/pull_coroutine_object.hpp @@ -0,0 +1,324 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_PULL_COROUTINE_OBJECT_H +#define BOOST_COROUTINES_DETAIL_PULL_COROUTINE_OBJECT_H + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +#if defined(BOOST_MSVC) +# pragma warning(push) +# pragma warning(disable:4355) +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +struct pull_coroutine_context +{ + coroutine_context caller; + coroutine_context callee; + + template< typename Coro > + pull_coroutine_context( stack_context const& stack_ctx, Coro *) : + caller(), + callee( trampoline_pull< Coro >, stack_ctx) + {} +}; + +template< typename PushCoro, typename R, typename Fn, typename StackAllocator > +class pull_coroutine_object : private pull_coroutine_context, + public pull_coroutine_impl< R > +{ +private: + typedef pull_coroutine_context ctx_t; + typedef pull_coroutine_impl< R > base_t; + typedef pull_coroutine_object< PushCoro, R, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + pull_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + pull_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run() + { + BOOST_ASSERT( ! base_t::unwind_requested() ); + + base_t::flags_ |= flag_started; + base_t::flags_ |= flag_running; + + // create push_coroutine + typename PushCoro::synth_type b( & this->callee, & this->caller, false, base_t::preserve_fpu() ); + PushCoro push_coro( synthesized_t::syntesized, b); + try + { fn_( push_coro); } + catch ( forced_unwind const&) + {} + catch (...) + { base_t::except_ = current_exception(); } + + base_t::flags_ |= flag_complete; + base_t::flags_ &= ~flag_running; + typename base_t::param_type to; + this->callee.jump( + this->caller, + reinterpret_cast< intptr_t >( & to), + base_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "pull_coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +template< typename PushCoro, typename R, typename Fn, typename StackAllocator > +class pull_coroutine_object< PushCoro, R &, Fn, StackAllocator > : private pull_coroutine_context, + public pull_coroutine_impl< R & > +{ +private: + typedef pull_coroutine_context ctx_t; + typedef pull_coroutine_impl< R & > base_t; + typedef pull_coroutine_object< PushCoro, R &, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + pull_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + pull_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run() + { + BOOST_ASSERT( ! base_t::unwind_requested() ); + + base_t::flags_ |= flag_started; + base_t::flags_ |= flag_running; + + // create push_coroutine + typename PushCoro::synth_type b( & this->callee, & this->caller, false, base_t::preserve_fpu() ); + PushCoro push_coro( synthesized_t::syntesized, b); + try + { fn_( push_coro); } + catch ( forced_unwind const&) + {} + catch (...) + { base_t::except_ = current_exception(); } + + base_t::flags_ |= flag_complete; + base_t::flags_ &= ~flag_running; + typename base_t::param_type to; + this->callee.jump( + this->caller, + reinterpret_cast< intptr_t >( & to), + base_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "pull_coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +template< typename PushCoro, typename Fn, typename StackAllocator > +class pull_coroutine_object< PushCoro, void, Fn, StackAllocator > : private pull_coroutine_context, + public pull_coroutine_impl< void > +{ +private: + typedef pull_coroutine_context ctx_t; + typedef pull_coroutine_impl< void > base_t; + typedef pull_coroutine_object< PushCoro, void, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + pull_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + pull_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run() + { + BOOST_ASSERT( ! base_t::unwind_requested() ); + + base_t::flags_ |= flag_started; + base_t::flags_ |= flag_running; + + // create push_coroutine + typename PushCoro::synth_type b( & this->callee, & this->caller, false, base_t::preserve_fpu() ); + PushCoro push_coro( synthesized_t::syntesized, b); + try + { fn_( push_coro); } + catch ( forced_unwind const&) + {} + catch (...) + { base_t::except_ = current_exception(); } + + base_t::flags_ |= flag_complete; + base_t::flags_ &= ~flag_running; + typename base_t::param_type to; + this->callee.jump( + this->caller, + reinterpret_cast< intptr_t >( & to), + base_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "pull_coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +}}} + +#if defined(BOOST_MSVC) +# pragma warning(pop) +#endif + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_PULL_COROUTINE_OBJECT_H diff --git a/3party/boost/boost/coroutine/detail/pull_coroutine_synthesized.hpp b/3party/boost/boost/coroutine/detail/pull_coroutine_synthesized.hpp new file mode 100644 index 0000000000..1736c86a97 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/pull_coroutine_synthesized.hpp @@ -0,0 +1,80 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_PULL_COROUTINE_SYNTHESIZED_H +#define BOOST_COROUTINES_DETAIL_PULL_COROUTINE_SYNTHESIZED_H + +#include + +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename R > +class pull_coroutine_synthesized : public pull_coroutine_impl< R > +{ +private: + typedef pull_coroutine_impl< R > impl_t; + +public: + pull_coroutine_synthesized( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu, + R * result) : + impl_t( caller, callee, unwind, preserve_fpu, result) + {} + + void destroy() {} +}; + +template< typename R > +class pull_coroutine_synthesized< R & > : public pull_coroutine_impl< R & > +{ +private: + typedef pull_coroutine_impl< R & > impl_t; + +public: + pull_coroutine_synthesized( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu, + R * result) : + impl_t( caller, callee, unwind, preserve_fpu, result) + {} + + void destroy() {} +}; + +template<> +class pull_coroutine_synthesized< void > : public pull_coroutine_impl< void > +{ +private: + typedef pull_coroutine_impl< void > impl_t; + +public: + pull_coroutine_synthesized( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + impl_t( caller, callee, unwind, preserve_fpu) + {} + + void destroy() {} +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_PULL_COROUTINE_SYNTHESIZED_H diff --git a/3party/boost/boost/coroutine/detail/push_coroutine_impl.hpp b/3party/boost/boost/coroutine/detail/push_coroutine_impl.hpp new file mode 100644 index 0000000000..da052fc4e1 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/push_coroutine_impl.hpp @@ -0,0 +1,295 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_IMPL_H +#define BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_IMPL_H + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +struct stack_context; + +namespace detail { + +template< typename Arg > +class push_coroutine_impl : private noncopyable +{ +protected: + int flags_; + exception_ptr except_; + coroutine_context * caller_; + coroutine_context * callee_; + +public: + typedef parameters< Arg > param_type; + + push_coroutine_impl( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + flags_( 0), + except_(), + caller_( caller), + callee_( callee) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + param_type to( unwind_t::force_unwind); + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void push( Arg const& arg) + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + param_type to( const_cast< Arg * >( & arg), this); + param_type * from( + reinterpret_cast< param_type * >( + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ &= ~flag_running; + if ( from->do_unwind) throw forced_unwind(); + if ( except_) rethrow_exception( except_); + } + + void push( BOOST_RV_REF( Arg) arg) + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + param_type to( const_cast< Arg * >( & arg), this); + param_type * from( + reinterpret_cast< param_type * >( + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ &= ~flag_running; + if ( from->do_unwind) throw forced_unwind(); + if ( except_) rethrow_exception( except_); + } + + virtual void destroy() = 0; +}; + +template< typename Arg > +class push_coroutine_impl< Arg & > : private noncopyable +{ +protected: + int flags_; + exception_ptr except_; + coroutine_context * caller_; + coroutine_context * callee_; + +public: + typedef parameters< Arg & > param_type; + + push_coroutine_impl( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + flags_( 0), + except_(), + caller_( caller), + callee_( callee) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + param_type to( unwind_t::force_unwind); + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void push( Arg & arg) + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + param_type to( & arg, this); + param_type * from( + reinterpret_cast< param_type * >( + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ &= ~flag_running; + if ( from->do_unwind) throw forced_unwind(); + if ( except_) rethrow_exception( except_); + } + + virtual void destroy() = 0; +}; + +template<> +class push_coroutine_impl< void > : private noncopyable +{ +protected: + int flags_; + exception_ptr except_; + coroutine_context * caller_; + coroutine_context * callee_; + +public: + typedef parameters< void > param_type; + + push_coroutine_impl( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + flags_( 0), + except_(), + caller_( caller), + callee_( callee) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + param_type to( unwind_t::force_unwind); + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void push() + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + param_type to( this); + param_type * from( + reinterpret_cast< param_type * >( + caller_->jump( + * callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ &= ~flag_running; + if ( from->do_unwind) throw forced_unwind(); + if ( except_) rethrow_exception( except_); + } + + virtual void destroy() = 0; +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_IMPL_H diff --git a/3party/boost/boost/coroutine/detail/push_coroutine_object.hpp b/3party/boost/boost/coroutine/detail/push_coroutine_object.hpp new file mode 100644 index 0000000000..1a0aa7e3d8 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/push_coroutine_object.hpp @@ -0,0 +1,336 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_OBJECT_H +#define BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_OBJECT_H + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +#if defined(BOOST_MSVC) +# pragma warning(push) +# pragma warning(disable:4355) +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +struct push_coroutine_context +{ + coroutine_context caller; + coroutine_context callee; + + template< typename Coro > + push_coroutine_context( stack_context const& stack_ctx, Coro *) : + caller(), + callee( trampoline_push< Coro >, stack_ctx) + {} +}; + +struct push_coroutine_context_void +{ + coroutine_context caller; + coroutine_context callee; + + template< typename Coro > + push_coroutine_context_void( stack_context const& stack_ctx, Coro *) : + caller(), + callee( trampoline_push_void< Coro >, stack_ctx) + {} +}; + +template< typename PullCoro, typename R, typename Fn, typename StackAllocator > +class push_coroutine_object : private push_coroutine_context, + public push_coroutine_impl< R > +{ +private: + typedef push_coroutine_context ctx_t; + typedef push_coroutine_impl< R > base_t; + typedef push_coroutine_object< PullCoro, R, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + push_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + push_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run( R * result) + { + BOOST_ASSERT( ! base_t::unwind_requested() ); + + base_t::flags_ |= flag_started; + base_t::flags_ |= flag_running; + + // create push_coroutine + typename PullCoro::synth_type b( & this->callee, & this->caller, false, base_t::preserve_fpu(), result); + PullCoro pull_coro( synthesized_t::syntesized, b); + try + { fn_( pull_coro); } + catch ( forced_unwind const&) + {} + catch (...) + { base_t::except_ = current_exception(); } + + base_t::flags_ |= flag_complete; + base_t::flags_ &= ~flag_running; + typename base_t::param_type to; + this->callee.jump( + this->caller, + reinterpret_cast< intptr_t >( & to), + base_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "pull_coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +template< typename PullCoro, typename R, typename Fn, typename StackAllocator > +class push_coroutine_object< PullCoro, R &, Fn, StackAllocator > : private push_coroutine_context, + public push_coroutine_impl< R & > +{ +private: + typedef push_coroutine_context ctx_t; + typedef push_coroutine_impl< R & > base_t; + typedef push_coroutine_object< PullCoro, R &, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + push_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + push_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run( R * result) + { + BOOST_ASSERT( ! base_t::unwind_requested() ); + + base_t::flags_ |= flag_started; + base_t::flags_ |= flag_running; + + // create push_coroutine + typename PullCoro::synth_type b( & this->callee, & this->caller, false, base_t::preserve_fpu(), result); + PullCoro push_coro( synthesized_t::syntesized, b); + try + { fn_( push_coro); } + catch ( forced_unwind const&) + {} + catch (...) + { base_t::except_ = current_exception(); } + + base_t::flags_ |= flag_complete; + base_t::flags_ &= ~flag_running; + typename base_t::param_type to; + this->callee.jump( + this->caller, + reinterpret_cast< intptr_t >( & to), + base_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "pull_coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +template< typename PullCoro, typename Fn, typename StackAllocator > +class push_coroutine_object< PullCoro, void, Fn, StackAllocator > : private push_coroutine_context_void, + public push_coroutine_impl< void > +{ +private: + typedef push_coroutine_context_void ctx_t; + typedef push_coroutine_impl< void > base_t; + typedef push_coroutine_object< PullCoro, void, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + push_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + push_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + ctx_t( internal_stack_ctx, this), + base_t( & this->caller, + & this->callee, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run() + { + BOOST_ASSERT( ! base_t::unwind_requested() ); + + base_t::flags_ |= flag_started; + base_t::flags_ |= flag_running; + + // create push_coroutine + typename PullCoro::synth_type b( & this->callee, & this->caller, false, base_t::preserve_fpu() ); + PullCoro push_coro( synthesized_t::syntesized, b); + try + { fn_( push_coro); } + catch ( forced_unwind const&) + {} + catch (...) + { base_t::except_ = current_exception(); } + + base_t::flags_ |= flag_complete; + base_t::flags_ &= ~flag_running; + typename base_t::param_type to; + this->callee.jump( + this->caller, + reinterpret_cast< intptr_t >( & to), + base_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "pull_coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +}}} + +#if defined(BOOST_MSVC) +# pragma warning(pop) +#endif + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_OBJECT_H diff --git a/3party/boost/boost/coroutine/detail/push_coroutine_synthesized.hpp b/3party/boost/boost/coroutine/detail/push_coroutine_synthesized.hpp new file mode 100644 index 0000000000..ac79a76346 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/push_coroutine_synthesized.hpp @@ -0,0 +1,78 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_SYNTHESIZED_H +#define BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_SYNTHESIZED_H + +#include + +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename R > +class push_coroutine_synthesized : public push_coroutine_impl< R > +{ +private: + typedef push_coroutine_impl< R > impl_t; + +public: + push_coroutine_synthesized( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + impl_t( caller, callee, unwind, preserve_fpu) + {} + + void destroy() {} +}; + +template< typename R > +class push_coroutine_synthesized< R & > : public push_coroutine_impl< R & > +{ +private: + typedef push_coroutine_impl< R & > impl_t; + +public: + push_coroutine_synthesized( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + impl_t( caller, callee, unwind, preserve_fpu) + {} + + void destroy() {} +}; + +template<> +class push_coroutine_synthesized< void > : public push_coroutine_impl< void > +{ +private: + typedef push_coroutine_impl< void > impl_t; + +public: + push_coroutine_synthesized( coroutine_context * caller, + coroutine_context * callee, + bool unwind, bool preserve_fpu) : + impl_t( caller, callee, unwind, preserve_fpu) + {} + + void destroy() {} +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_PUSH_COROUTINE_SYNTHESIZED_H diff --git a/3party/boost/boost/coroutine/detail/segmented_stack_allocator.hpp b/3party/boost/boost/coroutine/detail/segmented_stack_allocator.hpp deleted file mode 100644 index 5afefa0cde..0000000000 --- a/3party/boost/boost/coroutine/detail/segmented_stack_allocator.hpp +++ /dev/null @@ -1,51 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_DETAIL_SEGMENTED_STACK_ALLOCATOR_H -#define BOOST_COROUTINES_DETAIL_SEGMENTED_STACK_ALLOCATOR_H - -#include - -#include - -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { - -struct stack_context; - -namespace detail { - -#if defined(BOOST_USE_SEGMENTED_STACKS) -class segmented_stack_allocator -{ -public: - static bool is_stack_unbound(); - - static std::size_t default_stacksize(); - - static std::size_t minimum_stacksize(); - - static std::size_t maximum_stacksize(); - - void allocate( stack_context &, std::size_t = minimum_stacksize() ); - - void deallocate( stack_context &); -}; -#endif - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_DETAIL_SEGMENTED_STACK_ALLOCATOR_H diff --git a/3party/boost/boost/coroutine/detail/setup.hpp b/3party/boost/boost/coroutine/detail/setup.hpp new file mode 100644 index 0000000000..a776029e76 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/setup.hpp @@ -0,0 +1,75 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_SETUP_H +#define BOOST_COROUTINES_DETAIL_SETUP_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename Fn > +struct setup +{ + struct dummy {}; + + Fn fn; + coroutine_context * caller; + coroutine_context * callee; + attributes attr; + +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + setup( Fn fn_, + coroutine_context * caller_, + coroutine_context * callee_, + attributes const& attr_) : + fn( forward< Fn >( fn_) ), + caller( caller_), + callee( callee_), + attr( attr_) + {} +#endif + setup( BOOST_RV_REF( Fn) fn_, + coroutine_context * caller_, + coroutine_context * callee_, + attributes const& attr_, + typename disable_if< + is_same< typename decay< Fn >::type, setup >, + dummy* + >::type = 0) : +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn( fn_), +#else + fn( forward< Fn >( fn_) ), +#endif + caller( caller_), + callee( callee_), + attr( attr_) + {} +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_SETUP_H diff --git a/3party/boost/boost/coroutine/detail/standard_stack_allocator.hpp b/3party/boost/boost/coroutine/detail/standard_stack_allocator.hpp deleted file mode 100644 index c20499bdff..0000000000 --- a/3party/boost/boost/coroutine/detail/standard_stack_allocator.hpp +++ /dev/null @@ -1,49 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_DETAIL_STANDARD_STACK_ALLOCATOR_H -#define BOOST_COROUTINES_DETAIL_STANDARD_STACK_ALLOCATOR_H - -#include - -#include - -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { - -struct stack_context; - -namespace detail { - -class standard_stack_allocator -{ -public: - static bool is_stack_unbound(); - - static std::size_t default_stacksize(); - - static std::size_t minimum_stacksize(); - - static std::size_t maximum_stacksize(); - - void allocate( stack_context &, std::size_t); - - void deallocate( stack_context &); -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_DETAIL_STANDARD_STACK_ALLOCATOR_H diff --git a/3party/boost/boost/coroutine/detail/symmetric_coroutine_call.hpp b/3party/boost/boost/coroutine/detail/symmetric_coroutine_call.hpp new file mode 100644 index 0000000000..8a6702a392 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/symmetric_coroutine_call.hpp @@ -0,0 +1,822 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_CALL_H +#define BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_CALL_H + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename Arg > +class symmetric_coroutine_call +{ +private: + template< typename X > + friend class symmetric_coroutine_yield; + + typedef symmetric_coroutine_impl< Arg > impl_type; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( symmetric_coroutine_call) + + struct dummy {}; + + impl_type * impl_; + +public: + typedef Arg value_type; + typedef symmetric_coroutine_yield< Arg > yield_type; + + symmetric_coroutine_call() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( yield_type &); + + explicit symmetric_coroutine_call( coroutine_fn fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg, coroutine_fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename StackAllocator > + explicit symmetric_coroutine_call( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg, coroutine_fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +# endif + template< typename Fn > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +#else + template< typename Fn > + explicit symmetric_coroutine_call( Fn fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +#endif + + ~symmetric_coroutine_call() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + symmetric_coroutine_call( BOOST_RV_REF( symmetric_coroutine_call) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + symmetric_coroutine_call & operator=( BOOST_RV_REF( symmetric_coroutine_call) other) BOOST_NOEXCEPT + { + symmetric_coroutine_call tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete() || impl_->is_running(); } + + void swap( symmetric_coroutine_call & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + symmetric_coroutine_call & operator()( Arg arg) BOOST_NOEXCEPT + { + BOOST_ASSERT( * this); + + impl_->resume( arg); + return * this; + } +}; + +template< typename Arg > +class symmetric_coroutine_call< Arg & > +{ +private: + template< typename X > + friend class symmetric_coroutine_yield; + + typedef symmetric_coroutine_impl< Arg & > impl_type; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( symmetric_coroutine_call) + + struct dummy {}; + + impl_type * impl_; + +public: + typedef Arg value_type; + typedef symmetric_coroutine_yield< Arg & > yield_type; + + symmetric_coroutine_call() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( yield_type &); + + explicit symmetric_coroutine_call( coroutine_fn fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg &, coroutine_fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename StackAllocator > + explicit symmetric_coroutine_call( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg &, coroutine_fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +# endif + template< typename Fn > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg &, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg &, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +#else + template< typename Fn > + explicit symmetric_coroutine_call( Fn fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg &, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg &, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg &, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< Arg &, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +#endif + + ~symmetric_coroutine_call() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + symmetric_coroutine_call( BOOST_RV_REF( symmetric_coroutine_call) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + symmetric_coroutine_call & operator=( BOOST_RV_REF( symmetric_coroutine_call) other) BOOST_NOEXCEPT + { + symmetric_coroutine_call tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete() || impl_->is_running(); } + + void swap( symmetric_coroutine_call & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + symmetric_coroutine_call & operator()( Arg & arg) BOOST_NOEXCEPT + { + BOOST_ASSERT( * this); + + impl_->resume( arg); + return * this; + } +}; + +template<> +class symmetric_coroutine_call< void > +{ +private: + template< typename X > + friend class symmetric_coroutine_yield; + + typedef symmetric_coroutine_impl< void > impl_type; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( symmetric_coroutine_call) + + struct dummy {}; + + impl_type * impl_; + +public: + typedef void value_type; + typedef symmetric_coroutine_yield< void > yield_type; + + symmetric_coroutine_call() BOOST_NOEXCEPT : + impl_( 0) + {} + +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES +# ifdef BOOST_MSVC + typedef void ( * coroutine_fn)( yield_type &); + + explicit symmetric_coroutine_call( coroutine_fn fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< void, coroutine_fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename StackAllocator > + explicit symmetric_coroutine_call( coroutine_fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< void, coroutine_fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< coroutine_fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +# endif + template< typename Fn > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< void, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< void, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( + forward< Fn >( fn), attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +#else + template< typename Fn > + explicit symmetric_coroutine_call( Fn fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< void, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( Fn fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< void, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs = attributes(), + stack_allocator stack_alloc = stack_allocator() ) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< void, Fn, stack_allocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } + + template< typename Fn, typename StackAllocator > + explicit symmetric_coroutine_call( BOOST_RV_REF( Fn) fn, + attributes const& attrs, + StackAllocator stack_alloc) : + impl_( 0) + { + // create a stack-context + stack_context stack_ctx; + // allocate the coroutine-stack + stack_alloc.allocate( stack_ctx, attrs.size); + BOOST_ASSERT( 0 < stack_ctx.sp); + // typedef of internal coroutine-type + typedef symmetric_coroutine_object< void, Fn, StackAllocator > object_t; + // reserve space on top of coroutine-stack for internal coroutine-type + stack_context internal_stack_ctx; + internal_stack_ctx.sp = static_cast< char * >( stack_ctx.sp) - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.sp); + internal_stack_ctx.size = stack_ctx.size - sizeof( object_t); + BOOST_ASSERT( 0 < internal_stack_ctx.size); + // placement new for internal coroutine + impl_ = new ( internal_stack_ctx.sp) object_t( fn, attrs, stack_ctx, internal_stack_ctx, stack_alloc); + BOOST_ASSERT( impl_); + } +#endif + + ~symmetric_coroutine_call() + { + if ( 0 != impl_) + { + impl_->destroy(); + impl_ = 0; + } + } + + symmetric_coroutine_call( BOOST_RV_REF( symmetric_coroutine_call) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + symmetric_coroutine_call & operator=( BOOST_RV_REF( symmetric_coroutine_call) other) BOOST_NOEXCEPT + { + symmetric_coroutine_call tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_ || impl_->is_complete() || impl_->is_running(); } + + void swap( symmetric_coroutine_call & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + symmetric_coroutine_call & operator()() BOOST_NOEXCEPT + { + BOOST_ASSERT( * this); + + impl_->resume(); + return * this; + } +}; + +template< typename Arg > +void swap( symmetric_coroutine_call< Arg > & l, + symmetric_coroutine_call< Arg > & r) +{ l.swap( r); } + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_CALL_H diff --git a/3party/boost/boost/coroutine/detail/symmetric_coroutine_impl.hpp b/3party/boost/boost/coroutine/detail/symmetric_coroutine_impl.hpp new file mode 100644 index 0000000000..5a1e0529c4 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/symmetric_coroutine_impl.hpp @@ -0,0 +1,472 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_IMPL_H +#define BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_IMPL_H + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename R > +class symmetric_coroutine_impl : private noncopyable +{ +public: + typedef parameters< R > param_type; + + symmetric_coroutine_impl( stack_context const& stack_ctx, + bool unwind, bool preserve_fpu) BOOST_NOEXCEPT : + flags_( 0), + caller_(), + callee_( trampoline< symmetric_coroutine_impl< R > >, stack_ctx) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + virtual ~symmetric_coroutine_impl() {} + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + flags_ |= flag_running; + param_type to( unwind_t::force_unwind); + caller_.jump( + callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_running; + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void resume( R r) BOOST_NOEXCEPT + { + param_type to( const_cast< R * >( & r), this); + resume_( & to); + } + + R * yield() + { + BOOST_ASSERT( is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ &= ~flag_running; + param_type to; + param_type * from( + reinterpret_cast< param_type * >( + callee_.jump( + caller_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ |= flag_running; + if ( from->do_unwind) throw forced_unwind(); + BOOST_ASSERT( from->data); + return from->data; + } + + template< typename X > + R * yield_to( symmetric_coroutine_impl< X > * other, X x) + { + typename symmetric_coroutine_impl< X >::param_type to( & x, other); + return yield_to_( other, & to); + } + + template< typename X > + R * yield_to( symmetric_coroutine_impl< X & > * other, X & x) + { + typename symmetric_coroutine_impl< X & >::param_type to( & x, other); + return yield_to_( other, & to); + } + + template< typename X > + R * yield_to( symmetric_coroutine_impl< X > * other) + { + typename symmetric_coroutine_impl< X >::param_type to( other); + return yield_to_( other, & to); + } + + virtual void run( R *) BOOST_NOEXCEPT = 0; + + virtual void destroy() = 0; + +protected: + template< typename X > + friend class symmetric_coroutine_impl; + + int flags_; + coroutine_context caller_; + coroutine_context callee_; + + void resume_( param_type * to) BOOST_NOEXCEPT + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + caller_.jump( + callee_, + reinterpret_cast< intptr_t >( to), + preserve_fpu() ); + flags_ &= ~flag_running; + } + + template< typename Other > + R * yield_to_( Other * other, typename Other::param_type * to) + { + BOOST_ASSERT( is_running() ); + BOOST_ASSERT( ! is_complete() ); + BOOST_ASSERT( ! other->is_running() ); + BOOST_ASSERT( ! other->is_complete() ); + + other->caller_ = caller_; + flags_ &= ~flag_running; + param_type * from( + reinterpret_cast< param_type * >( + callee_.jump( + other->callee_, + reinterpret_cast< intptr_t >( to), + preserve_fpu() ) ) ); + flags_ |= flag_running; + if ( from->do_unwind) throw forced_unwind(); + BOOST_ASSERT( from->data); + return from->data; + } +}; + +template< typename R > +class symmetric_coroutine_impl< R & > : private noncopyable +{ +public: + typedef parameters< R & > param_type; + + symmetric_coroutine_impl( stack_context const& stack_ctx, + bool unwind, bool preserve_fpu) BOOST_NOEXCEPT : + flags_( 0), + caller_(), + callee_( trampoline< symmetric_coroutine_impl< R > >, stack_ctx) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + virtual ~symmetric_coroutine_impl() {} + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + flags_ |= flag_running; + param_type to( unwind_t::force_unwind); + caller_.jump( + callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_running; + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void resume( R & arg) BOOST_NOEXCEPT + { + param_type to( & arg, this); + resume_( & to); + } + + R * yield() + { + BOOST_ASSERT( is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ &= ~flag_running; + param_type to; + param_type * from( + reinterpret_cast< param_type * >( + callee_.jump( + caller_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ |= flag_running; + if ( from->do_unwind) throw forced_unwind(); + BOOST_ASSERT( from->data); + return from->data; + } + + template< typename X > + R * yield_to( symmetric_coroutine_impl< X > * other, X x) + { + typename symmetric_coroutine_impl< X >::param_type to( & x, other); + return yield_to_( other, & to); + } + + template< typename X > + R * yield_to( symmetric_coroutine_impl< X & > * other, X & x) + { + typename symmetric_coroutine_impl< X & >::param_type to( & x, other); + return yield_to_( other, & to); + } + + template< typename X > + R * yield_to( symmetric_coroutine_impl< X > * other) + { + typename symmetric_coroutine_impl< X >::param_type to( other); + return yield_to_( other, & to); + } + + virtual void run( R *) BOOST_NOEXCEPT = 0; + + virtual void destroy() = 0; + +protected: + template< typename X > + friend class symmetric_coroutine_impl; + + int flags_; + coroutine_context caller_; + coroutine_context callee_; + + void resume_( param_type * to) BOOST_NOEXCEPT + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ |= flag_running; + caller_.jump( + callee_, + reinterpret_cast< intptr_t >( to), + preserve_fpu() ); + flags_ &= ~flag_running; + } + + template< typename Other > + R * yield_to_( Other * other, typename Other::param_type * to) + { + BOOST_ASSERT( is_running() ); + BOOST_ASSERT( ! is_complete() ); + BOOST_ASSERT( ! other->is_running() ); + BOOST_ASSERT( ! other->is_complete() ); + + other->caller_ = caller_; + flags_ &= ~flag_running; + param_type * from( + reinterpret_cast< param_type * >( + callee_.jump( + other->callee_, + reinterpret_cast< intptr_t >( to), + preserve_fpu() ) ) ); + flags_ |= flag_running; + if ( from->do_unwind) throw forced_unwind(); + BOOST_ASSERT( from->data); + return from->data; + } +}; + +template<> +class symmetric_coroutine_impl< void > : private noncopyable +{ +public: + typedef parameters< void > param_type; + + symmetric_coroutine_impl( stack_context const& stack_ctx, + bool unwind, bool preserve_fpu) BOOST_NOEXCEPT : + flags_( 0), + caller_(), + callee_( trampoline_void< symmetric_coroutine_impl< void > >, stack_ctx) + { + if ( unwind) flags_ |= flag_force_unwind; + if ( preserve_fpu) flags_ |= flag_preserve_fpu; + } + + virtual ~symmetric_coroutine_impl() {} + + bool force_unwind() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_force_unwind); } + + bool unwind_requested() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_unwind_stack); } + + bool preserve_fpu() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_preserve_fpu); } + + bool is_started() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_started); } + + bool is_running() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_running); } + + bool is_complete() const BOOST_NOEXCEPT + { return 0 != ( flags_ & flag_complete); } + + void unwind_stack() BOOST_NOEXCEPT + { + if ( is_started() && ! is_complete() && force_unwind() ) + { + flags_ |= flag_unwind_stack; + flags_ |= flag_running; + param_type to( unwind_t::force_unwind); + caller_.jump( + callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_running; + flags_ &= ~flag_unwind_stack; + + BOOST_ASSERT( is_complete() ); + } + } + + void resume() BOOST_NOEXCEPT + { + BOOST_ASSERT( ! is_running() ); + BOOST_ASSERT( ! is_complete() ); + + param_type to( this); + flags_ |= flag_running; + caller_.jump( + callee_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ); + flags_ &= ~flag_running; + } + + void yield() BOOST_NOEXCEPT + { + BOOST_ASSERT( is_running() ); + BOOST_ASSERT( ! is_complete() ); + + flags_ &= ~flag_running; + param_type to; + param_type * from( + reinterpret_cast< param_type * >( + callee_.jump( + caller_, + reinterpret_cast< intptr_t >( & to), + preserve_fpu() ) ) ); + flags_ |= flag_running; + if ( from->do_unwind) throw forced_unwind(); + } + + template< typename X > + void yield_to( symmetric_coroutine_impl< X > * other, X x) + { + typename symmetric_coroutine_impl< X >::param_type to( & x, other); + yield_to_( other, & to); + } + + template< typename X > + void yield_to( symmetric_coroutine_impl< X & > * other, X & x) + { + typename symmetric_coroutine_impl< X & >::param_type to( & x, other); + yield_to_( other, & to); + } + + template< typename X > + void yield_to( symmetric_coroutine_impl< X > * other) + { + typename symmetric_coroutine_impl< X >::param_type to( other); + yield_to_( other, & to); + } + + virtual void run() BOOST_NOEXCEPT = 0; + + virtual void destroy() = 0; + +protected: + template< typename X > + friend class symmetric_coroutine_impl; + + int flags_; + coroutine_context caller_; + coroutine_context callee_; + + template< typename Other > + void yield_to_( Other * other, typename Other::param_type * to) + { + BOOST_ASSERT( is_running() ); + BOOST_ASSERT( ! is_complete() ); + BOOST_ASSERT( ! other->is_running() ); + BOOST_ASSERT( ! other->is_complete() ); + + other->caller_ = caller_; + flags_ &= ~flag_running; + param_type * from( + reinterpret_cast< param_type * >( + callee_.jump( + other->callee_, + reinterpret_cast< intptr_t >( to), + preserve_fpu() ) ) ); + flags_ |= flag_running; + if ( from->do_unwind) throw forced_unwind(); + } +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_IMPL_H diff --git a/3party/boost/boost/coroutine/detail/symmetric_coroutine_object.hpp b/3party/boost/boost/coroutine/detail/symmetric_coroutine_object.hpp new file mode 100644 index 0000000000..c7516f9cc2 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/symmetric_coroutine_object.hpp @@ -0,0 +1,281 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_OBJECT_H +#define BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_OBJECT_H + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +struct stack_context; + +namespace detail { + +template< typename R, typename Fn, typename StackAllocator > +class symmetric_coroutine_object : public symmetric_coroutine_impl< R > +{ +private: + typedef symmetric_coroutine_impl< R > impl_t; + typedef symmetric_coroutine_object< R, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + symmetric_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + impl_t( internal_stack_ctx, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + symmetric_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + impl_t( internal_stack_ctx, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run( R * r) BOOST_NOEXCEPT + { + BOOST_ASSERT( ! impl_t::unwind_requested() ); + + impl_t::flags_ |= flag_started; + impl_t::flags_ |= flag_running; + try + { + symmetric_coroutine_yield< R > yc( this, r); + fn_( yc); + } + catch ( forced_unwind const&) + {} + catch (...) + { std::terminate(); } + + impl_t::flags_ |= flag_complete; + impl_t::flags_ &= ~flag_running; + typename impl_t::param_type to; + impl_t::callee_.jump( + impl_t::caller_, + reinterpret_cast< intptr_t >( & to), + impl_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +template< typename R, typename Fn, typename StackAllocator > +class symmetric_coroutine_object< R &, Fn, StackAllocator > : public symmetric_coroutine_impl< R & > +{ +private: + typedef symmetric_coroutine_impl< R & > impl_t; + typedef symmetric_coroutine_object< R &, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + symmetric_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + impl_t( internal_stack_ctx, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + symmetric_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + impl_t( internal_stack_ctx, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run( R * r) BOOST_NOEXCEPT + { + BOOST_ASSERT( ! impl_t::unwind_requested() ); + + impl_t::flags_ |= flag_started; + impl_t::flags_ |= flag_running; + try + { + symmetric_coroutine_yield< R & > yc( this, r); + fn_( yc); + } + catch ( forced_unwind const&) + {} + catch (...) + { std::terminate(); } + + impl_t::flags_ |= flag_complete; + impl_t::flags_ &= ~flag_running; + typename impl_t::param_type to; + impl_t::callee_.jump( + impl_t::caller_, + reinterpret_cast< intptr_t >( & to), + impl_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +template< typename Fn, typename StackAllocator > +class symmetric_coroutine_object< void, Fn, StackAllocator > : public symmetric_coroutine_impl< void > +{ +private: + typedef symmetric_coroutine_impl< void > impl_t; + typedef symmetric_coroutine_object< void, Fn, StackAllocator > obj_t; + + Fn fn_; + stack_context stack_ctx_; + StackAllocator stack_alloc_; + + static void deallocate_( obj_t * obj) + { + stack_context stack_ctx( obj->stack_ctx_); + StackAllocator stack_alloc( obj->stack_alloc_); + obj->unwind_stack(); + obj->~obj_t(); + stack_alloc.deallocate( stack_ctx); + } + +public: +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + symmetric_coroutine_object( Fn fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + impl_t( internal_stack_ctx, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), + fn_( fn), + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} +#endif + + symmetric_coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attrs, + stack_context const& stack_ctx, + stack_context const& internal_stack_ctx, + StackAllocator const& stack_alloc) BOOST_NOEXCEPT : + impl_t( internal_stack_ctx, + stack_unwind == attrs.do_unwind, + fpu_preserved == attrs.preserve_fpu), +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES + fn_( fn), +#else + fn_( forward< Fn >( fn) ), +#endif + stack_ctx_( stack_ctx), + stack_alloc_( stack_alloc) + {} + + void run() BOOST_NOEXCEPT + { + BOOST_ASSERT( ! impl_t::unwind_requested() ); + + impl_t::flags_ |= flag_started; + impl_t::flags_ |= flag_running; + try + { + symmetric_coroutine_yield< void > yc( this); + fn_( yc); + } + catch ( forced_unwind const&) + {} + catch (...) + { std::terminate(); } + + impl_t::flags_ |= flag_complete; + impl_t::flags_ &= ~flag_running; + typename impl_t::param_type to; + impl_t::callee_.jump( + impl_t::caller_, + reinterpret_cast< intptr_t >( & to), + impl_t::preserve_fpu() ); + BOOST_ASSERT_MSG( false, "coroutine is complete"); + } + + void destroy() + { deallocate_( this); } +}; + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_OBJECT_H diff --git a/3party/boost/boost/coroutine/detail/symmetric_coroutine_yield.hpp b/3party/boost/boost/coroutine/detail/symmetric_coroutine_yield.hpp new file mode 100644 index 0000000000..c357d9e943 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/symmetric_coroutine_yield.hpp @@ -0,0 +1,307 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_YIELD_H +#define BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_YIELD_H + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename R > +class symmetric_coroutine_yield +{ +private: + template< typename X, typename Y, typename Z > + friend class symmetric_coroutine_object; + + typedef symmetric_coroutine_impl< R > impl_type; + + struct dummy {}; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( symmetric_coroutine_yield) + + impl_type * impl_; + R * result_; + + symmetric_coroutine_yield( impl_type * impl, R * result) BOOST_NOEXCEPT : + impl_( impl), + result_( result) + { + BOOST_ASSERT( 0 != impl_); + BOOST_ASSERT( 0 != result_); + } + +public: + symmetric_coroutine_yield() BOOST_NOEXCEPT : + impl_( 0), + result_( 0) + {} + + symmetric_coroutine_yield( BOOST_RV_REF( symmetric_coroutine_yield) other) BOOST_NOEXCEPT : + impl_( 0), + result_( 0) + { swap( other); } + + symmetric_coroutine_yield & operator=( BOOST_RV_REF( symmetric_coroutine_yield) other) BOOST_NOEXCEPT + { + symmetric_coroutine_yield tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_; } + + void swap( symmetric_coroutine_yield & other) BOOST_NOEXCEPT + { + std::swap( impl_, other.impl_); + std::swap( result_, other.result_); + } + + symmetric_coroutine_yield & operator()() + { + result_ = impl_->yield(); + return * this; + } + + template< typename Coro > + symmetric_coroutine_yield & operator()( Coro & other, typename Coro::value_type x, + typename disable_if< + is_same< typename Coro::value_type, void >, + dummy* + >::type = 0) + { + BOOST_ASSERT( other); + + result_ = impl_->yield_to( other.impl_, x); + return * this; + } + + template< typename Coro > + symmetric_coroutine_yield & operator()( Coro & other, + typename enable_if< + is_same< typename Coro::value_type, void >, + dummy* + >::type = 0) + { + BOOST_ASSERT( other); + + result_ = impl_->yield_to( other.impl_); + return * this; + } + + R get() const + { + if ( 0 == result_) + boost::throw_exception( + invalid_result() ); + + return * result_; + } +}; + +template< typename R > +class symmetric_coroutine_yield< R & > +{ +private: + template< typename X, typename Y, typename Z > + friend class symmetric_coroutine_object; + + typedef symmetric_coroutine_impl< R & > impl_type; + + struct dummy {}; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( symmetric_coroutine_yield) + + impl_type * impl_; + R * result_; + + symmetric_coroutine_yield( impl_type * impl, R * result) BOOST_NOEXCEPT : + impl_( impl), + result_( result) + { + BOOST_ASSERT( 0 != impl_); + BOOST_ASSERT( 0 != result_); + } + +public: + symmetric_coroutine_yield() BOOST_NOEXCEPT : + impl_( 0), + result_( 0) + {} + + symmetric_coroutine_yield( BOOST_RV_REF( symmetric_coroutine_yield) other) BOOST_NOEXCEPT : + impl_( 0), + result_( 0) + { swap( other); } + + symmetric_coroutine_yield & operator=( BOOST_RV_REF( symmetric_coroutine_yield) other) BOOST_NOEXCEPT + { + symmetric_coroutine_yield tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_; } + + void swap( symmetric_coroutine_yield & other) BOOST_NOEXCEPT + { + std::swap( impl_, other.impl_); + std::swap( result_, other.result_); + } + + symmetric_coroutine_yield & operator()() + { + result_ = impl_->yield(); + return * this; + } + + template< typename Coro > + symmetric_coroutine_yield & operator()( Coro & other, typename Coro::value_type & x, + typename disable_if< + is_same< typename Coro::value_type, void >, + dummy* + >::type = 0) + { + BOOST_ASSERT( other); + + result_ = impl_->yield_to( other.impl_, x); + return * this; + } + + template< typename Coro > + symmetric_coroutine_yield & operator()( Coro & other, + typename enable_if< + is_same< typename Coro::value_type, void >, + dummy* + >::type = 0) + { + BOOST_ASSERT( other); + + result_ = impl_->yield_to( other.impl_); + return * this; + } + + R & get() const + { + if ( 0 == result_) + boost::throw_exception( + invalid_result() ); + + return * result_; + } +}; + +template<> +class symmetric_coroutine_yield< void > +{ +private: + template< typename X, typename Y, typename Z > + friend class symmetric_coroutine_object; + + typedef symmetric_coroutine_impl< void > impl_type; + + struct dummy {}; + + BOOST_MOVABLE_BUT_NOT_COPYABLE( symmetric_coroutine_yield) + + impl_type * impl_; + + symmetric_coroutine_yield( impl_type * impl) BOOST_NOEXCEPT : + impl_( impl) + { BOOST_ASSERT( 0 != impl_); } + +public: + symmetric_coroutine_yield() BOOST_NOEXCEPT : + impl_( 0) + {} + + symmetric_coroutine_yield( BOOST_RV_REF( symmetric_coroutine_yield) other) BOOST_NOEXCEPT : + impl_( 0) + { swap( other); } + + symmetric_coroutine_yield & operator=( BOOST_RV_REF( symmetric_coroutine_yield) other) BOOST_NOEXCEPT + { + symmetric_coroutine_yield tmp( boost::move( other) ); + swap( tmp); + return * this; + } + + BOOST_EXPLICIT_OPERATOR_BOOL(); + + bool operator!() const BOOST_NOEXCEPT + { return 0 == impl_; } + + void swap( symmetric_coroutine_yield & other) BOOST_NOEXCEPT + { std::swap( impl_, other.impl_); } + + symmetric_coroutine_yield & operator()() + { + impl_->yield(); + return * this; + } + + template< typename Coro > + symmetric_coroutine_yield & operator()( Coro & other, typename Coro::value_type & x, + typename disable_if< + is_same< typename Coro::value_type, void >, + dummy* + >::type = 0) + { + BOOST_ASSERT( other); + + impl_->yield_to( other.impl_, x); + return * this; + } + + template< typename Coro > + symmetric_coroutine_yield & operator()( Coro & other, + typename enable_if< + is_same< typename Coro::value_type, void >, + dummy* + >::type = 0) + { + BOOST_ASSERT( other); + + impl_->yield_to( other.impl_); + return * this; + } +}; + +template< typename R > +void swap( symmetric_coroutine_yield< R > & l, symmetric_coroutine_yield< R > & r) +{ l.swap( r); } + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_SYMMETRIC_COROUTINE_YIELD_H diff --git a/3party/boost/boost/coroutine/detail/trampoline.hpp b/3party/boost/boost/coroutine/detail/trampoline.hpp new file mode 100644 index 0000000000..1cb3226d15 --- /dev/null +++ b/3party/boost/boost/coroutine/detail/trampoline.hpp @@ -0,0 +1,67 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_TRAMPOLINE_H +#define BOOST_COROUTINES_DETAIL_TRAMPOLINE_H + +#include +#include +#include + +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename Coro > +void trampoline( intptr_t vp) +{ + typedef typename Coro::param_type param_type; + + BOOST_ASSERT( 0 != vp); + + param_type * param( + reinterpret_cast< param_type * >( vp) ); + BOOST_ASSERT( 0 != param); + BOOST_ASSERT( 0 != param->data); + + Coro * coro( + reinterpret_cast< Coro * >( param->coro) ); + BOOST_ASSERT( 0 != coro); + + coro->run( param->data); +} + +template< typename Coro > +void trampoline_void( intptr_t vp) +{ + typedef typename Coro::param_type param_type; + + BOOST_ASSERT( 0 != vp); + + param_type * param( + reinterpret_cast< param_type * >( vp) ); + BOOST_ASSERT( 0 != param); + + Coro * coro( + reinterpret_cast< Coro * >( param->coro) ); + BOOST_ASSERT( 0 != coro); + + coro->run(); +} + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_TRAMPOLINE_H diff --git a/3party/boost/boost/coroutine/detail/trampoline_pull.hpp b/3party/boost/boost/coroutine/detail/trampoline_pull.hpp new file mode 100644 index 0000000000..179024529d --- /dev/null +++ b/3party/boost/boost/coroutine/detail/trampoline_pull.hpp @@ -0,0 +1,48 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_TRAMPOLINE_PULL_H +#define BOOST_COROUTINES_DETAIL_TRAMPOLINE_PULL_H + +#include +#include +#include + +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename Coro > +void trampoline_pull( intptr_t vp) +{ + typedef typename Coro::param_type param_type; + + BOOST_ASSERT( 0 != vp); + + param_type * param( + reinterpret_cast< param_type * >( vp) ); + BOOST_ASSERT( 0 != param); + + Coro * coro( + reinterpret_cast< Coro * >( param->coro) ); + BOOST_ASSERT( 0 != coro); + + coro->run(); +} + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_TRAMPOLINE_PULL_H diff --git a/3party/boost/boost/coroutine/detail/trampoline_push.hpp b/3party/boost/boost/coroutine/detail/trampoline_push.hpp new file mode 100644 index 0000000000..448904456e --- /dev/null +++ b/3party/boost/boost/coroutine/detail/trampoline_push.hpp @@ -0,0 +1,77 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_DETAIL_TRAMPOLINE_PUSH_H +#define BOOST_COROUTINES_DETAIL_TRAMPOLINE_PUSH_H + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +template< typename Coro > +void trampoline_push( intptr_t vp) +{ + typedef typename Coro::param_type param_type; + + BOOST_ASSERT( vp); + + param_type * param( + reinterpret_cast< param_type * >( vp) ); + BOOST_ASSERT( 0 != param); + BOOST_ASSERT( 0 != param->data); + + Coro * coro( + reinterpret_cast< Coro * >( param->coro) ); + BOOST_ASSERT( 0 != coro); + + coro->run( param->data); +} + +template< typename Coro > +void trampoline_push_void( intptr_t vp) +{ + typedef typename Coro::param_type param_type; + + BOOST_ASSERT( vp); + + param_type * param( + reinterpret_cast< param_type * >( vp) ); + BOOST_ASSERT( 0 != param); + + Coro * coro( + reinterpret_cast< Coro * >( param->coro) ); + BOOST_ASSERT( 0 != coro); + + coro->run(); +} + +}}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_DETAIL_TRAMPOLINE_PUSH_H diff --git a/3party/boost/boost/coroutine/exceptions.hpp b/3party/boost/boost/coroutine/exceptions.hpp new file mode 100644 index 0000000000..f263429719 --- /dev/null +++ b/3party/boost/boost/coroutine/exceptions.hpp @@ -0,0 +1,105 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_EXCEPTIONS_H +#define BOOST_COROUTINES_EXCEPTIONS_H + +#include +#include + +#include +#include +#include +#include +#include + +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { +namespace detail { + +struct forced_unwind {}; + +} + +BOOST_SCOPED_ENUM_DECLARE_BEGIN(coroutine_errc) +{ + no_data = 1 +} +BOOST_SCOPED_ENUM_DECLARE_END(coroutine_errc) + +BOOST_COROUTINES_DECL system::error_category const& coroutine_category() BOOST_NOEXCEPT; + +} + +namespace system { + +template<> +struct is_error_code_enum< coroutines::coroutine_errc > : public true_type +{}; + +#ifdef BOOST_NO_CXX11_SCOPED_ENUMS +template<> +struct is_error_code_enum< coroutines::coroutine_errc::enum_type > : public true_type +{}; +#endif + +inline +error_code make_error_code( coroutines::coroutine_errc e) //BOOST_NOEXCEPT +{ + return error_code( underlying_cast< int >( e), coroutines::coroutine_category() ); +} + +inline +error_condition make_error_condition( coroutines::coroutine_errc e) //BOOST_NOEXCEPT +{ + return error_condition( underlying_cast< int >( e), coroutines::coroutine_category() ); +} + +} + +namespace coroutines { + +class coroutine_error : public std::logic_error +{ +private: + system::error_code ec_; + +public: + coroutine_error( system::error_code ec) : + logic_error( ec.message() ), + ec_( ec) + {} + + system::error_code const& code() const BOOST_NOEXCEPT + { return ec_; } + + const char* what() const throw() + { return code().message().c_str(); } +}; + +class invalid_result : public coroutine_error +{ +public: + invalid_result() : + coroutine_error( + system::make_error_code( + coroutine_errc::no_data) ) + {} +}; + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_EXCEPTIONS_H diff --git a/3party/boost/boost/coroutine/posix/protected_stack_allocator.hpp b/3party/boost/boost/coroutine/posix/protected_stack_allocator.hpp new file mode 100644 index 0000000000..f9b153d4a9 --- /dev/null +++ b/3party/boost/boost/coroutine/posix/protected_stack_allocator.hpp @@ -0,0 +1,95 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_PROTECTED_STACK_ALLOCATOR_H +#define BOOST_COROUTINES_PROTECTED_STACK_ALLOCATOR_H + +extern "C" { +#include +#include +#include +#include +} + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +template< typename traitsT > +struct basic_protected_stack_allocator +{ + typedef traitsT traits_type; + + void allocate( stack_context & ctx, std::size_t size = traits_type::minimum_size() ) + { + BOOST_ASSERT( traits_type::minimum_size() <= size); + BOOST_ASSERT( traits_type::is_unbounded() || ( traits_type::maximum_size() >= size) ); + + // page at bottom will be used as guard-page + const std::size_t pages( + static_cast< std::size_t >( + std::floor( + static_cast< float >( size) / traits_type::page_size() ) ) ); + BOOST_ASSERT_MSG( 2 <= pages, "at least two pages must fit into stack (one page is guard-page)"); + const std::size_t size_( pages * traits_type::page_size() ); + BOOST_ASSERT( 0 < size && 0 < size_); + BOOST_ASSERT( size_ <= size); + + // conform to POSIX.4 (POSIX.1b-1993, _POSIX_C_SOURCE=199309L) +#if defined(MAP_ANON) + void * limit = ::mmap( 0, size_, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); +#else + void * limit = ::mmap( 0, size_, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); +#endif + if ( MAP_FAILED == limit) throw std::bad_alloc(); + + // conforming to POSIX.1-2001 +#if defined(BOOST_DISABLE_ASSERTS) + ::mprotect( limit, traits_type::page_size(), PROT_NONE); +#else + const int result( ::mprotect( limit, traits_type::page_size(), PROT_NONE) ); + BOOST_ASSERT( 0 == result); +#endif + + ctx.size = size_; + ctx.sp = static_cast< char * >( limit) + ctx.size; + } + + void deallocate( stack_context & ctx) + { + BOOST_ASSERT( ctx.sp); + BOOST_ASSERT( traits_type::minimum_size() <= ctx.size); + BOOST_ASSERT( traits_type::is_unbounded() || ( traits_type::maximum_size() >= ctx.size) ); + + void * limit = static_cast< char * >( ctx.sp) - ctx.size; + // conform to POSIX.4 (POSIX.1b-1993, _POSIX_C_SOURCE=199309L) + ::munmap( limit, ctx.size); + } +}; + +typedef basic_protected_stack_allocator< stack_traits > protected_stack_allocator; + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_PROTECTED_STACK_ALLOCATOR_H diff --git a/3party/boost/boost/coroutine/posix/segmented_stack_allocator.hpp b/3party/boost/boost/coroutine/posix/segmented_stack_allocator.hpp new file mode 100644 index 0000000000..335e5789b4 --- /dev/null +++ b/3party/boost/boost/coroutine/posix/segmented_stack_allocator.hpp @@ -0,0 +1,69 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_SEGMENTED_STACK_ALLOCATOR_H +#define BOOST_COROUTINES_SEGMENTED_STACK_ALLOCATOR_H + +#include +#include + +#include + +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +// forward declaration for splitstack-functions defined in libgcc +extern "C" { +void *__splitstack_makecontext( std::size_t, + void * [BOOST_COROUTINES_SEGMENTS], + std::size_t *); + +void __splitstack_releasecontext( void * [BOOST_COROUTINES_SEGMENTS]); + +void __splitstack_resetcontext( void * [BOOST_COROUTINES_SEGMENTS]); + +void __splitstack_block_signals_context( void * [BOOST_COROUTINES_SEGMENTS], + int * new_value, int * old_value); +} + +namespace boost { +namespace coroutines { + +template< typename traitsT > +struct basic_segmented_stack_allocator +{ + typedef traitsT traits_type; + + void allocate( stack_context & ctx, std::size_t size = traits_type::minimum_size() ) + { + void * limit = __splitstack_makecontext( size, ctx.segments_ctx, & ctx.size); + if ( ! limit) throw std::bad_alloc(); + + // ctx.size is already filled by __splitstack_makecontext + ctx.sp = static_cast< char * >( limit) + ctx.size; + + int off = 0; + __splitstack_block_signals_context( ctx.segments_ctx, & off, 0); + } + + void deallocate( stack_context & ctx) + { __splitstack_releasecontext( ctx.segments_ctx); } +}; + +typedef basic_segmented_stack_allocator< stack_traits > segmented_stack_allocator; + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_SEGMENTED_STACK_ALLOCATOR_H diff --git a/3party/boost/boost/coroutine/protected_stack_allocator.hpp b/3party/boost/boost/coroutine/protected_stack_allocator.hpp new file mode 100644 index 0000000000..268786fec4 --- /dev/null +++ b/3party/boost/boost/coroutine/protected_stack_allocator.hpp @@ -0,0 +1,13 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include + +#if defined(BOOST_WINDOWS) +# include +#else +# include +#endif diff --git a/3party/boost/boost/coroutine/segmented_stack_allocator.hpp b/3party/boost/boost/coroutine/segmented_stack_allocator.hpp new file mode 100644 index 0000000000..f9525a1a5e --- /dev/null +++ b/3party/boost/boost/coroutine/segmented_stack_allocator.hpp @@ -0,0 +1,15 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include + +#if defined(BOOST_USE_SEGMENTED_STACKS) +# if defined(BOOST_WINDOWS) +# error "segmented stacks are not supported by Windows" +# else +# include +# endif +#endif diff --git a/3party/boost/boost/coroutine/stack_allocator.hpp b/3party/boost/boost/coroutine/stack_allocator.hpp index 3b52679365..662533efe7 100644 --- a/3party/boost/boost/coroutine/stack_allocator.hpp +++ b/3party/boost/boost/coroutine/stack_allocator.hpp @@ -4,16 +4,16 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_COROUTINES_DETAIL_STACK_ALLOCATOR_H -#define BOOST_COROUTINES_DETAIL_STACK_ALLOCATOR_H +#ifndef BOOST_COROUTINES_STACK_ALLOCATOR_H +#define BOOST_COROUTINES_STACK_ALLOCATOR_H #include #include #include -#include -#include +#include +#include #ifdef BOOST_HAS_ABI_HEADERS # include BOOST_ABI_PREFIX @@ -23,9 +23,9 @@ namespace boost { namespace coroutines { #if defined(BOOST_USE_SEGMENTED_STACKS) -typedef detail::segmented_stack_allocator stack_allocator; +typedef segmented_stack_allocator stack_allocator; #else -typedef detail::standard_stack_allocator stack_allocator; +typedef standard_stack_allocator stack_allocator; #endif }} @@ -34,4 +34,4 @@ typedef detail::standard_stack_allocator stack_allocator; # include BOOST_ABI_SUFFIX #endif -#endif // BOOST_COROUTINES_DETAIL_STACK_ALLOCATOR_H +#endif // BOOST_COROUTINES_STACK_ALLOCATOR_H diff --git a/3party/boost/boost/coroutine/stack_traits.hpp b/3party/boost/boost/coroutine/stack_traits.hpp new file mode 100644 index 0000000000..0e8f25182d --- /dev/null +++ b/3party/boost/boost/coroutine/stack_traits.hpp @@ -0,0 +1,42 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_STACK_TRAITS_H +#define BOOST_COROUTINES_STACK_TRAITS_H + +#include + +#include + +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +struct BOOST_COROUTINES_DECL stack_traits +{ + static bool is_unbounded() BOOST_NOEXCEPT; + + static std::size_t page_size() BOOST_NOEXCEPT; + + static std::size_t default_size() BOOST_NOEXCEPT; + + static std::size_t minimum_size() BOOST_NOEXCEPT; + + static std::size_t maximum_size() BOOST_NOEXCEPT; +}; + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_STACK_TRAITS_H diff --git a/3party/boost/boost/coroutine/standard_stack_allocator.hpp b/3party/boost/boost/coroutine/standard_stack_allocator.hpp new file mode 100644 index 0000000000..3341ce3ec8 --- /dev/null +++ b/3party/boost/boost/coroutine/standard_stack_allocator.hpp @@ -0,0 +1,64 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_STANDARD_STACK_ALLOCATOR_H +#define BOOST_COROUTINES_STANDARD_STACK_ALLOCATOR_H + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +template< typename traitsT > +struct basic_standard_stack_allocator +{ + typedef traitsT traits_type; + + void allocate( stack_context & ctx, std::size_t size = traits_type::minimum_size() ) + { + BOOST_ASSERT( traits_type::minimum_size() <= size); + BOOST_ASSERT( traits_type::is_unbounded() || ( traits_type::maximum_size() >= size) ); + + void * limit = std::malloc( size); + if ( ! limit) throw std::bad_alloc(); + + ctx.size = size; + ctx.sp = static_cast< char * >( limit) + ctx.size; + } + + void deallocate( stack_context & ctx) + { + BOOST_ASSERT( ctx.sp); + BOOST_ASSERT( traits_type::minimum_size() <= ctx.size); + BOOST_ASSERT( traits_type::is_unbounded() || ( traits_type::maximum_size() >= ctx.size) ); + + void * limit = static_cast< char * >( ctx.sp) - ctx.size; + std::free( limit); + } +}; + +typedef basic_standard_stack_allocator< stack_traits > standard_stack_allocator; + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_STANDARD_STACK_ALLOCATOR_H diff --git a/3party/boost/boost/coroutine/symmetric_coroutine.hpp b/3party/boost/boost/coroutine/symmetric_coroutine.hpp new file mode 100644 index 0000000000..543cae0a37 --- /dev/null +++ b/3party/boost/boost/coroutine/symmetric_coroutine.hpp @@ -0,0 +1,35 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_SYMMETRIC_COROUTINE_H +#define BOOST_COROUTINES_SYMMETRIC_COROUTINE_H + +#include + +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +template< typename T > +struct symmetric_coroutine +{ + typedef detail::symmetric_coroutine_call< T > call_type; + typedef detail::symmetric_coroutine_yield< T > yield_type; +}; + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_SYMMETRIC_COROUTINE_H diff --git a/3party/boost/boost/coroutine/v1/coroutine.hpp b/3party/boost/boost/coroutine/v1/coroutine.hpp deleted file mode 100644 index 294d81c01d..0000000000 --- a/3party/boost/boost/coroutine/v1/coroutine.hpp +++ /dev/null @@ -1,1430 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_COROUTINE_H -#define BOOST_COROUTINES_V1_COROUTINE_H - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< - typename Signature, - template< class, int > class C, - typename Result = typename function_traits< Signature >::result_type, - int arity = function_traits< Signature >::arity -> -struct caller; - -template< - typename Signature, - template< class, int > class C -> -struct caller< Signature, C, void, 0 > -{ typedef C< void(), 0 > type; }; - -template< - typename Signature, - template< class, int > class C, - typename Result -> -struct caller< Signature, C, Result, 0 > -{ typedef C< void( Result), 1 > type; }; - -template< - typename Signature, - template< class, int > class C, - int arity -> -struct caller< Signature, C, void, arity > -{ typedef C< typename detail::arg< Signature >::type(), 0 > type; }; - -template< - typename Signature, - template< class, int > class C, - typename Result, int arity -> -struct caller -{ typedef C< typename detail::arg< Signature >::type( Result), 1 > type; }; - -} - -template< typename Signature, int arity = function_traits< Signature >::arity > -class coroutine; - -template< typename Signature > -class coroutine< Signature, 0 > : public detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >, - public detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > -{ -private: - typedef detail::coroutine_base< Signature > base_t; - typedef typename base_t::ptr_t ptr_t; - - template< typename X, typename Y, int > - friend struct detail::coroutine_get; - template< typename X, typename Y, typename Z, int > - friend struct detail::coroutine_op; - template< typename X, typename Y, typename Z, typename A, typename B, typename C, int > - friend class detail::coroutine_object; - - struct dummy - { void nonnull() {} }; - - typedef void ( dummy::*safe_bool)(); - - ptr_t impl_; - - BOOST_MOVABLE_BUT_NOT_COPYABLE( coroutine) - - template< typename Allocator > - coroutine( detail::coroutine_context const& callee, - bool unwind, bool preserve_fpu, - Allocator const& alloc) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - - >(), - impl_() - { - typedef detail::coroutine_caller< - Signature, Allocator - > caller_t; - typename caller_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) caller_t( - callee, unwind, preserve_fpu, a) ); - } - -public: - typedef typename detail::caller< - Signature, - boost::coroutines::coroutine - >::type caller_type; - - coroutine() BOOST_NOEXCEPT : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - {} - -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -#ifdef BOOST_MSVC - typedef void ( * coroutine_fn) ( caller_type &); - - explicit coroutine( coroutine_fn fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >() ) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { - typedef detail::coroutine_object< - Signature, - coroutine_fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< coroutine_fn >( fn), attr, stack_alloc, a) ); - } - - template< typename StackAllocator > - explicit coroutine( coroutine_fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >() ) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { - typedef detail::coroutine_object< - Signature, - coroutine_fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< coroutine_fn >( fn), attr, stack_alloc, a) ); - } - - template< typename StackAllocator, typename Allocator > - explicit coroutine( coroutine_fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { - typedef detail::coroutine_object< - Signature, - coroutine_fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< coroutine_fn >( fn), attr, stack_alloc, a) ); - } -#endif - template< typename Fn > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } -#else - template< typename Fn > - explicit coroutine( Fn fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit coroutine( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit coroutine( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } -#endif - - coroutine( BOOST_RV_REF( coroutine) other) BOOST_NOEXCEPT : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { swap( other); } - - coroutine & operator=( BOOST_RV_REF( coroutine) other) BOOST_NOEXCEPT - { - coroutine tmp( boost::move( other) ); - swap( tmp); - return * this; - } - - bool empty() const BOOST_NOEXCEPT - { return ! impl_; } - - operator safe_bool() const BOOST_NOEXCEPT - { return ( empty() || impl_->is_complete() ) ? 0 : & dummy::nonnull; } - - bool operator!() const BOOST_NOEXCEPT - { return empty() || impl_->is_complete(); } - - void swap( coroutine & other) BOOST_NOEXCEPT - { impl_.swap( other.impl_); } -}; - -template< typename Signature, int arity > -class coroutine : public detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >, - public detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > -{ -private: - typedef detail::coroutine_base< Signature > base_t; - typedef typename base_t::ptr_t ptr_t; - - template< typename X, typename Y, int > - friend struct detail::coroutine_get; - template< typename X, typename Y, typename Z, int > - friend struct detail::coroutine_op; - template< typename X, typename Y, typename Z, typename A, typename B, typename C, int > - friend class detail::coroutine_object; - - struct dummy - { void nonnull() {} }; - - typedef void ( dummy::*safe_bool)(); - - ptr_t impl_; - - BOOST_MOVABLE_BUT_NOT_COPYABLE( coroutine) - - template< typename Allocator > - coroutine( detail::coroutine_context const& callee, - bool unwind, bool preserve_fpu, - Allocator const& alloc) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { - typedef detail::coroutine_caller< - Signature, Allocator - > caller_t; - typename caller_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) caller_t( - callee, unwind, preserve_fpu, a) ); - } - -public: - typedef typename detail::caller< - Signature, - boost::coroutines::coroutine - >::type caller_type; - typedef typename detail::arg< Signature >::type arguments; - - coroutine() BOOST_NOEXCEPT : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - {} - -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -#ifdef BOOST_MSVC - typedef void ( * coroutine_fn) ( caller_type &); - - explicit coroutine( coroutine_fn fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >() ) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { - typedef detail::coroutine_object< - Signature, - coroutine_fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< coroutine_fn >( fn), attr, stack_alloc, a) ); - } - - explicit coroutine( coroutine_fn fn, arguments arg, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >() ) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { - typedef detail::coroutine_object< - Signature, - coroutine_fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< coroutine_fn >( fn), arg, attr, stack_alloc, a) ); - } - - template< typename StackAllocator > - explicit coroutine( coroutine_fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >() ) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { - typedef detail::coroutine_object< - Signature, - coroutine_fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< coroutine_fn >( fn), attr, stack_alloc, a) ); - } - - template< typename StackAllocator, typename Allocator > - explicit coroutine( coroutine_fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { - typedef detail::coroutine_object< - Signature, - coroutine_fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< coroutine_fn >( fn), attr, stack_alloc, a) ); - } -#endif - template< typename Fn > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn > - explicit coroutine( BOOST_RV_REF( Fn) fn, arguments arg, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), arg, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, arguments arg, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), arg, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, arguments arg, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), arg, attr, stack_alloc, a) ); - } -#else - template< typename Fn > - explicit coroutine( Fn fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn > - explicit coroutine( Fn fn, arguments arg, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, arg, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit coroutine( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit coroutine( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, stack_allocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< coroutine > const& alloc = - std::allocator< coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, std::allocator< coroutine >, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, coroutine >, - dummy * - >::type = 0) : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { -// BOOST_STATIC_ASSERT(( -// is_same< void, typename result_of< Fn() >::type >::value)); - typedef detail::coroutine_object< - Signature, - Fn, StackAllocator, Allocator, - caller_type, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } -#endif - - coroutine( BOOST_RV_REF( coroutine) other) BOOST_NOEXCEPT : - detail::coroutine_op< - Signature, - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - detail::coroutine_get< - coroutine< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - impl_() - { swap( other); } - - coroutine & operator=( BOOST_RV_REF( coroutine) other) BOOST_NOEXCEPT - { - coroutine tmp( boost::move( other) ); - swap( tmp); - return * this; - } - - bool empty() const BOOST_NOEXCEPT - { return ! impl_; } - - operator safe_bool() const BOOST_NOEXCEPT - { return ( empty() || impl_->is_complete() ) ? 0 : & dummy::nonnull; } - - bool operator!() const BOOST_NOEXCEPT - { return empty() || impl_->is_complete(); } - - void swap( coroutine & other) BOOST_NOEXCEPT - { impl_.swap( other.impl_); } -}; - -template< typename Signature > -void swap( coroutine< Signature > & l, coroutine< Signature > & r) BOOST_NOEXCEPT -{ l.swap( r); } - -template< typename Signature > -inline -typename coroutine< Signature >::iterator -range_begin( coroutine< Signature > & c) -{ return typename coroutine< Signature >::iterator( & c); } - -template< typename Signature > -inline -typename coroutine< Signature >::const_iterator -range_begin( coroutine< Signature > const& c) -{ return typename coroutine< Signature >::const_iterator( & c); } - -template< typename Signature > -inline -typename coroutine< Signature >::iterator -range_end( coroutine< Signature > &) -{ return typename coroutine< Signature >::iterator(); } - -template< typename Signature > -inline -typename coroutine< Signature >::const_iterator -range_end( coroutine< Signature > const&) -{ return typename coroutine< Signature >::const_iterator(); } - -template< typename Signature > -inline -typename coroutine< Signature >::iterator -begin( coroutine< Signature > & c) -{ return boost::begin( c); } - -template< typename Signature > -inline -typename coroutine< Signature >::iterator -end( coroutine< Signature > & c) -{ return boost::end( c); } - -template< typename Signature > -inline -typename coroutine< Signature >::const_iterator -begin( coroutine< Signature > const& c) -{ return boost::const_begin( c); } - -template< typename Signature > -inline -typename coroutine< Signature >::const_iterator -end( coroutine< Signature > const& c) -{ return boost::const_end( c); } - -} - -template< typename Signature > -struct range_mutable_iterator< coroutines::coroutine< Signature > > -{ typedef typename coroutines::coroutine< Signature >::iterator type; }; - -template< typename Signature > -struct range_const_iterator< coroutines::coroutine< Signature > > -{ typedef typename coroutines::coroutine< Signature >::const_iterator type; }; - -} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V1_COROUTINE_H diff --git a/3party/boost/boost/coroutine/v1/detail/arg.hpp b/3party/boost/boost/coroutine/v1/detail/arg.hpp deleted file mode 100644 index 00b2462101..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/arg.hpp +++ /dev/null @@ -1,62 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_DETAIL_ARG_H -#define BOOST_COROUTINES_V1_DETAIL_ARG_H - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< - typename Signature, - int arity = function_traits< Signature >::arity > -struct arg; - -template< typename Signature > -struct arg< Signature, 1 > -{ - typedef typename function_traits< Signature >::arg1_type type; -}; - -#define BOOST_CONTEXT_TUPLE_COMMA(n) BOOST_PP_COMMA_IF(BOOST_PP_SUB(n,1)) -#define BOOST_CONTEXT_TUPLE_TYPE(z,n,unused) \ - BOOST_CONTEXT_TUPLE_COMMA(n) typename function_traits< Signature >::BOOST_PP_CAT(BOOST_PP_CAT(arg,n),_type) -#define BOOST_CONTEXT_TUPLE_TYPES(n) BOOST_PP_REPEAT_FROM_TO(1,BOOST_PP_ADD(n,1),BOOST_CONTEXT_TUPLE_TYPE,~) -#define BOOST_CONTEXT_TUPLE(z,n,unused) \ -template< typename Signature > \ -struct arg< Signature, n > \ -{ \ - typedef tuple< BOOST_CONTEXT_TUPLE_TYPES(n) > type; \ -}; -BOOST_PP_REPEAT_FROM_TO(2,11,BOOST_CONTEXT_TUPLE,~) -#undef BOOST_CONTEXT_TUPLE -#undef BOOST_CONTEXT_TUPLE_TYPES -#undef BOOST_CONTEXT_TUPLE_TYPE -#undef BOOST_CONTEXT_TUPLE_COMMA - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V1_DETAIL_ARG_H diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_base.hpp b/3party/boost/boost/coroutine/v1/detail/coroutine_base.hpp deleted file mode 100644 index a460cf30cc..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_base.hpp +++ /dev/null @@ -1,125 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_DETAIL_COROUTINE_BASE_H -#define BOOST_COROUTINES_V1_DETAIL_COROUTINE_BASE_H - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { - -struct stack_context; - -namespace detail { - -template< typename Signature > -class coroutine_base : private noncopyable, - public coroutine_base_resume< - Signature, - coroutine_base< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - > -{ -public: - typedef intrusive_ptr< coroutine_base > ptr_t; - -private: - template< typename X, typename Y, typename Z, int > - friend class coroutine_base_resume; - template< typename X, typename Y, typename Z, typename A, typename B, typename C, int > - friend class coroutine_object; - - unsigned int use_count_; - coroutine_context caller_; - coroutine_context callee_; - int flags_; - exception_ptr except_; - -protected: - virtual void deallocate_object() = 0; - -public: - coroutine_base( coroutine_context::ctx_fn fn, stack_context * stack_ctx, - bool unwind, bool preserve_fpu) : - coroutine_base_resume< - Signature, - coroutine_base< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - use_count_( 0), - caller_(), - callee_( fn, stack_ctx), - flags_( 0), - except_() - { - if ( unwind) flags_ |= flag_force_unwind; - if ( preserve_fpu) flags_ |= flag_preserve_fpu; - } - - coroutine_base( coroutine_context const& callee, bool unwind, bool preserve_fpu) : - coroutine_base_resume< - Signature, - coroutine_base< Signature >, - typename function_traits< Signature >::result_type, - function_traits< Signature >::arity - >(), - use_count_( 0), - caller_(), - callee_( callee), - flags_( 0), - except_() - { - if ( unwind) flags_ |= flag_force_unwind; - if ( preserve_fpu) flags_ |= flag_preserve_fpu; - } - - virtual ~coroutine_base() - {} - - bool force_unwind() const BOOST_NOEXCEPT - { return 0 != ( flags_ & flag_force_unwind); } - - bool unwind_requested() const BOOST_NOEXCEPT - { return 0 != ( flags_ & flag_unwind_stack); } - - bool preserve_fpu() const BOOST_NOEXCEPT - { return 0 != ( flags_ & flag_preserve_fpu); } - - bool is_complete() const BOOST_NOEXCEPT - { return 0 != ( flags_ & flag_complete); } - - friend inline void intrusive_ptr_add_ref( coroutine_base * p) BOOST_NOEXCEPT - { ++p->use_count_; } - - friend inline void intrusive_ptr_release( coroutine_base * p) BOOST_NOEXCEPT - { if ( --p->use_count_ == 0) p->deallocate_object(); } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V1_DETAIL_COROUTINE_BASE_H diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_base_resume.hpp b/3party/boost/boost/coroutine/v1/detail/coroutine_base_resume.hpp deleted file mode 100644 index 9c8a8048b4..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_base_resume.hpp +++ /dev/null @@ -1,237 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_DETAIL_COROUTINE_BASE_RESUME_H -#define BOOST_COROUTINES_V1_DETAIL_COROUTINE_BASE_RESUME_H - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< typename Signature, typename D, typename Result, int arity > -class coroutine_base_resume; - -template< typename Signature, typename D > -class coroutine_base_resume< Signature, D, void, 0 > -{ -public: - void resume() - { - holder< void > hldr_to( & static_cast< D * >( this)->caller_); - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - hldr_to.ctx->jump( - static_cast< D * >( this)->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - static_cast< D * >( this)->preserve_fpu() ) ) ); - BOOST_ASSERT( hldr_from->ctx); - static_cast< D * >( this)->callee_ = * hldr_from->ctx; - if ( hldr_from->force_unwind) throw forced_unwind(); - if ( static_cast< D * >( this)->except_) - rethrow_exception( static_cast< D * >( this)->except_); - } -}; - -template< typename Signature, typename D, typename Result > -class coroutine_base_resume< Signature, D, Result, 0 > -{ -public: - void resume() - { - BOOST_ASSERT( static_cast< D * >( this)); - BOOST_ASSERT( ! static_cast< D * >( this)->is_complete() ); - - holder< void > hldr_to( & static_cast< D * >( this)->caller_); - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - hldr_to.ctx->jump( - static_cast< D * >( this)->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - static_cast< D * >( this)->preserve_fpu() ) ) ); - BOOST_ASSERT( hldr_from->ctx); - static_cast< D * >( this)->callee_ = * hldr_from->ctx; - result_ = hldr_from->data; - if ( hldr_from->force_unwind) throw forced_unwind(); - if ( static_cast< D * >( this)->except_) - rethrow_exception( static_cast< D * >( this)->except_); - } - -protected: - template< typename X, typename Y, int > - friend struct coroutine_get; - - optional< Result > result_; -}; - -template< typename Signature, typename D > -class coroutine_base_resume< Signature, D, void, 1 > -{ -public: - typedef typename arg< Signature >::type arg_type; - - void resume( arg_type a1) - { - BOOST_ASSERT( static_cast< D * >( this)); - BOOST_ASSERT( ! static_cast< D * >( this)->is_complete() ); - - holder< arg_type > hldr_to( & static_cast< D * >( this)->caller_, a1); - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - hldr_to.ctx->jump( - static_cast< D * >( this)->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - static_cast< D * >( this)->preserve_fpu() ) ) ); - BOOST_ASSERT( hldr_from->ctx); - static_cast< D * >( this)->callee_ = * hldr_from->ctx; - if ( hldr_from->force_unwind) throw forced_unwind(); - if ( static_cast< D * >( this)->except_) - rethrow_exception( static_cast< D * >( this)->except_); - } -}; - -template< typename Signature, typename D, typename Result > -class coroutine_base_resume< Signature, D, Result, 1 > -{ -public: - typedef typename arg< Signature >::type arg_type; - - void resume( arg_type a1) - { - BOOST_ASSERT( static_cast< D * >( this)); - BOOST_ASSERT( ! static_cast< D * >( this)->is_complete() ); - - coroutine_context caller; - holder< arg_type > hldr_to( & static_cast< D * >( this)->caller_, a1); - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - hldr_to.ctx->jump( - static_cast< D * >( this)->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - static_cast< D * >( this)->preserve_fpu() ) ) ); - BOOST_ASSERT( hldr_from->ctx); - static_cast< D * >( this)->callee_ = * hldr_from->ctx; - result_ = hldr_from->data; - if ( hldr_from->force_unwind) throw forced_unwind(); - if ( static_cast< D * >( this)->except_) - rethrow_exception( static_cast< D * >( this)->except_); - } - -protected: - template< typename X, typename Y, int > - friend struct coroutine_get; - - optional< Result > result_; -}; - -#define BOOST_COROUTINE_BASE_RESUME_COMMA(n) BOOST_PP_COMMA_IF(BOOST_PP_SUB(n,1)) -#define BOOST_COROUTINE_BASE_RESUME_VAL(z,n,unused) BOOST_COROUTINE_BASE_RESUME_COMMA(n) BOOST_PP_CAT(a,n) -#define BOOST_COROUTINE_BASE_RESUME_VALS(n) BOOST_PP_REPEAT_FROM_TO(1,BOOST_PP_ADD(n,1),BOOST_COROUTINE_BASE_RESUME_VAL,~) -#define BOOST_COROUTINE_BASE_RESUME_ARG_TYPE(n) \ - typename function_traits< Signature >::BOOST_PP_CAT(BOOST_PP_CAT(arg,n),_type) -#define BOOST_COROUTINE_BASE_RESUME_ARG(z,n,unused) BOOST_COROUTINE_BASE_RESUME_COMMA(n) BOOST_COROUTINE_BASE_RESUME_ARG_TYPE(n) BOOST_PP_CAT(a,n) -#define BOOST_COROUTINE_BASE_RESUME_ARGS(n) BOOST_PP_REPEAT_FROM_TO(1,BOOST_PP_ADD(n,1),BOOST_COROUTINE_BASE_RESUME_ARG,~) -#define BOOST_COROUTINE_BASE_RESUME(z,n,unused) \ -template< typename Signature, typename D > \ -class coroutine_base_resume< Signature, D, void, n > \ -{ \ -public: \ - typedef typename arg< Signature >::type arg_type; \ -\ - void resume( BOOST_COROUTINE_BASE_RESUME_ARGS(n)) \ - { \ - BOOST_ASSERT( static_cast< D * >( this)); \ - BOOST_ASSERT( ! static_cast< D * >( this)->is_complete() ); \ -\ - holder< arg_type > hldr_to( \ - & static_cast< D * >( this)->caller_, \ - arg_type(BOOST_COROUTINE_BASE_RESUME_VALS(n) ) ); \ - holder< void > * hldr_from( \ - reinterpret_cast< holder< void > * >( \ - hldr_to.ctx->jump( \ - static_cast< D * >( this)->callee_, \ - reinterpret_cast< intptr_t >( & hldr_to), \ - static_cast< D * >( this)->preserve_fpu() ) ) ); \ - BOOST_ASSERT( hldr_from->ctx); \ - static_cast< D * >( this)->callee_ = * hldr_from->ctx; \ - if ( hldr_from->force_unwind) throw forced_unwind(); \ - if ( static_cast< D * >( this)->except_) \ - rethrow_exception( static_cast< D * >( this)->except_); \ - } \ -}; \ -\ -template< typename Signature, typename D, typename Result > \ -class coroutine_base_resume< Signature, D, Result, n > \ -{ \ -public: \ - typedef typename arg< Signature >::type arg_type; \ -\ - void resume( BOOST_COROUTINE_BASE_RESUME_ARGS(n)) \ - { \ - BOOST_ASSERT( static_cast< D * >( this)); \ - BOOST_ASSERT( ! static_cast< D * >( this)->is_complete() ); \ -\ - holder< arg_type > hldr_to( \ - & static_cast< D * >( this)->caller_, \ - arg_type(BOOST_COROUTINE_BASE_RESUME_VALS(n) ) ); \ - holder< Result > * hldr_from( \ - reinterpret_cast< holder< Result > * >( \ - hldr_to.ctx->jump( \ - static_cast< D * >( this)->callee_, \ - reinterpret_cast< intptr_t >( & hldr_to), \ - static_cast< D * >( this)->preserve_fpu() ) ) ); \ - BOOST_ASSERT( hldr_from->ctx); \ - static_cast< D * >( this)->callee_ = * hldr_from->ctx; \ - result_ = hldr_from->data; \ - if ( hldr_from->force_unwind) throw forced_unwind(); \ - if ( static_cast< D * >( this)->except_) \ - rethrow_exception( static_cast< D * >( this)->except_); \ - } \ -\ -protected: \ - template< typename X, typename Y, int > \ - friend struct coroutine_get; \ -\ - optional< Result > result_; \ -}; -BOOST_PP_REPEAT_FROM_TO(2,11,BOOST_COROUTINE_BASE_RESUME,~) -#undef BOOST_COROUTINE_BASE_RESUME -#undef BOOST_COROUTINE_BASE_RESUME_ARGS -#undef BOOST_COROUTINE_BASE_RESUME_ARG -#undef BOOST_COROUTINE_BASE_RESUME_ARG_TYPE -#undef BOOST_COROUTINE_BASE_RESUME_VALS -#undef BOOST_COROUTINE_BASE_RESUME_VAL -#undef BOOST_COROUTINE_BASE_RESUME_COMMA - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V1_DETAIL_coroutine_base_resume_H diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_caller.hpp b/3party/boost/boost/coroutine/v1/detail/coroutine_caller.hpp deleted file mode 100644 index 3796de7356..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_caller.hpp +++ /dev/null @@ -1,57 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_DETAIL_COROUTINE_CALLER_H -#define BOOST_COROUTINES_V1_DETAIL_COROUTINE_CALLER_H - -#include -#include - -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< typename Signature, typename Allocator > -class coroutine_caller : public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_caller< Signature, Allocator > - >::other allocator_t; - - coroutine_caller( coroutine_context const& callee, bool unwind, bool preserve_fpu, - allocator_t const& alloc) BOOST_NOEXCEPT : - coroutine_base< Signature >( callee, unwind, preserve_fpu), - alloc_( alloc) - {} - - void deallocate_object() - { destroy_( alloc_, this); } - -private: - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_caller * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V1_DETAIL_COROUTINE_CALLER_H diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_get.hpp b/3party/boost/boost/coroutine/v1/detail/coroutine_get.hpp deleted file mode 100644 index 62b73bba7d..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_get.hpp +++ /dev/null @@ -1,54 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_DETAIL_COROUTINE_GET_H -#define BOOST_COROUTINES_V1_DETAIL_COROUTINE_GET_H - -#include -#include -#include - -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< - typename D, - typename Result, int arity -> -struct coroutine_get; - -template< typename D, int arity > -struct coroutine_get< D, void, arity > -{}; - -template< typename D, typename Result, int arity > -struct coroutine_get -{ - bool has_result() const - { return static_cast< D const* >( this)->impl_->result_; } - - typename param< Result >::type get() const - { - BOOST_ASSERT( static_cast< D const* >( this)->impl_->result_); - return static_cast< D const* >( this)->impl_->result_.get(); - } -}; - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V1_DETAIL_COROUTINE_GET_H diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_object.hpp b/3party/boost/boost/coroutine/v1/detail/coroutine_object.hpp deleted file mode 100644 index 6e8978a0e7..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_object.hpp +++ /dev/null @@ -1,111 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_DETAIL_COROUTINE_OBJECT_H -#define BOOST_COROUTINES_V1_DETAIL_COROUTINE_OBJECT_H - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef BOOST_MSVC - #pragma warning (push) - #pragma warning (disable: 4355) // using 'this' in initializer list -#endif - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< typename Coroutine > -void trampoline1( intptr_t vp) -{ - BOOST_ASSERT( vp); - - reinterpret_cast< Coroutine * >( vp)->run(); -} - -template< typename Coroutine, typename Arg > -void trampoline2( intptr_t vp) -{ - BOOST_ASSERT( vp); - - tuple< Coroutine *, Arg > * tpl( - reinterpret_cast< tuple< Coroutine *, Arg > * >( vp) ); - Coroutine * coro( get< 0 >( * tpl) ); - Arg arg( get< 1 >( * tpl) ); - - coro->run( arg); -} - -template< typename StackAllocator > -struct stack_tuple -{ - coroutines::stack_context stack_ctx; - StackAllocator stack_alloc; - - stack_tuple( StackAllocator const& stack_alloc_, std::size_t size) : - stack_ctx(), - stack_alloc( stack_alloc_) - { - stack_alloc.allocate( stack_ctx, size); - } - - ~stack_tuple() - { - stack_alloc.deallocate( stack_ctx); - } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result, int arity -> -class coroutine_object; - -#include -#include -#include -#include -#include -#include - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#ifdef BOOST_MSVC - #pragma warning (pop) -#endif - -#endif // BOOST_COROUTINES_V1_DETAIL_COROUTINE_OBJECT_H diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_0.ipp b/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_0.ipp deleted file mode 100644 index 96022fc800..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_0.ipp +++ /dev/null @@ -1,363 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result -> -class coroutine_object< Signature, Fn, StackAllocator, Allocator, Caller, Result, 0 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, 0 - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_(); } -#else - coroutine_object( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } -#endif - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result -> -class coroutine_object< Signature, reference_wrapper< Fn >, StackAllocator, Allocator, Caller, Result, 0 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, 0 - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result -> -class coroutine_object< Signature, const reference_wrapper< Fn >, StackAllocator, Allocator, Caller, Result, 0 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, 0 - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( const reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( & this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_1.ipp b/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_1.ipp deleted file mode 100644 index b1e5dfefa0..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_1.ipp +++ /dev/null @@ -1,557 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result -> -class coroutine_object< Signature, Fn, StackAllocator, Allocator, Caller, Result, 1 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, 1 - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_( arg); } -#else - coroutine_object( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( Fn fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } -#endif - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result -> -class coroutine_object< Signature, reference_wrapper< Fn >, StackAllocator, Allocator, Caller, Result, 1 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, 1 - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( reference_wrapper< Fn > fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result -> -class coroutine_object< Signature, const reference_wrapper< Fn >, StackAllocator, Allocator, Caller, Result, 1 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, 1 - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( const reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( const reference_wrapper< Fn > fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_arity.ipp b/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_arity.ipp deleted file mode 100644 index c2728cbd86..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_object_result_arity.ipp +++ /dev/null @@ -1,559 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result, int arity -> -class coroutine_object : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, arity - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_( arg); } -#else - coroutine_object( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( Fn fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } -#endif - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result, int arity -> -class coroutine_object< Signature, reference_wrapper< Fn >, StackAllocator, Allocator, Caller, Result, arity > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, arity - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( reference_wrapper< Fn > fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result, int arity -> -class coroutine_object< Signature, const reference_wrapper< Fn >, StackAllocator, Allocator, Caller, Result, arity > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, Result, arity - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( const reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( const reference_wrapper< Fn > fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { - fn_( c); - } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_0.ipp b/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_0.ipp deleted file mode 100644 index e20df6fadc..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_0.ipp +++ /dev/null @@ -1,357 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller -> -class coroutine_object< Signature, Fn, StackAllocator, Allocator, Caller, void, 0 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, 0 - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_(); } -#else - coroutine_object( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->pbase_type::stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } -#endif - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller -> -class coroutine_object< Signature, reference_wrapper< Fn >, StackAllocator, Allocator, Caller, void, 0 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, 0 - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller -> -class coroutine_object< Signature, const reference_wrapper< Fn >, StackAllocator, Allocator, Caller, void, 0 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, 0 - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( const reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_1.ipp b/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_1.ipp deleted file mode 100644 index 7fba21619a..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_1.ipp +++ /dev/null @@ -1,550 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller -> -class coroutine_object< Signature, Fn, StackAllocator, Allocator, Caller, void, 1 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, 1 - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_( arg); } -#else - coroutine_object( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( Fn fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } -#endif - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller -> -class coroutine_object< Signature, reference_wrapper< Fn >, StackAllocator, Allocator, Caller, void, 1 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, 1 - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( reference_wrapper< Fn > fn, - typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller -> -class coroutine_object< Signature, const reference_wrapper< Fn >, StackAllocator, Allocator, Caller, void, 1 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, 1 - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( const reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( const reference_wrapper< Fn > fn, - typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_arity.ipp b/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_arity.ipp deleted file mode 100644 index 7da3e777f0..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_object_void_arity.ipp +++ /dev/null @@ -1,551 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - int arity -> -class coroutine_object< Signature, Fn, StackAllocator, Allocator, Caller, void, arity > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, arity - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_( arg); } -#else - coroutine_object( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( Fn fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } -#endif - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - int arity -> -class coroutine_object< Signature, reference_wrapper< Fn >, StackAllocator, Allocator, Caller, void, arity > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, arity - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( reference_wrapper< Fn > fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Signature, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - int arity -> -class coroutine_object< Signature, const reference_wrapper< Fn >, StackAllocator, Allocator, Caller, void, arity > : - private stack_tuple< StackAllocator >, - public coroutine_base< Signature > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Signature, Fn, StackAllocator, Allocator, Caller, void, arity - > - >::other allocator_t; - typedef typename arg< Signature >::type arg_type; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Signature > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object &); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void enter_( typename detail::param< arg_type >::type arg) - { - tuple< coroutine_object *, - typename detail::param< arg_type >::type - > tpl( this, arg); - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & tpl), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - if ( this->except_) rethrow_exception( this->except_); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< arg_type > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( const reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( const reference_wrapper< Fn > fn, typename detail::param< arg_type >::type arg, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline2< coroutine_object, typename detail::param< arg_type >::type >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_( arg); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void run( typename detail::param< arg_type >::type arg) - { - coroutine_context callee; - coroutine_context caller; - - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - c.impl_->result_ = arg; - try - { fn_( c); } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - callee = c.impl_->callee_; - } - - this->flags_ |= flag_complete; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; diff --git a/3party/boost/boost/coroutine/v1/detail/coroutine_op.hpp b/3party/boost/boost/coroutine/v1/detail/coroutine_op.hpp deleted file mode 100644 index 83806acce9..0000000000 --- a/3party/boost/boost/coroutine/v1/detail/coroutine_op.hpp +++ /dev/null @@ -1,326 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_DETAIL_COROUTINE_OP_H -#define BOOST_COROUTINES_V1_DETAIL_COROUTINE_OP_H - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< typename Signature, typename D, typename Result, int arity > -struct coroutine_op; - -template< typename Signature, typename D > -struct coroutine_op< Signature, D, void, 0 > -{ - D & operator()() - { - BOOST_ASSERT( static_cast< D * >( this)->impl_); - BOOST_ASSERT( ! static_cast< D * >( this)->impl_->is_complete() ); - - static_cast< D * >( this)->impl_->resume(); - - return * static_cast< D * >( this); - } -}; - -template< typename Signature, typename D, typename Result > -struct coroutine_op< Signature, D, Result, 0 > -{ - class iterator : public std::iterator< std::input_iterator_tag, typename remove_reference< Result >::type > - { - private: - D * dp_; - optional< Result > val_; - - void fetch_() - { - BOOST_ASSERT( dp_); - - if ( ! dp_->has_result() ) - { - dp_ = 0; - val_ = none; - return; - } - val_ = dp_->get(); - } - - void increment_() - { - BOOST_ASSERT( dp_); - BOOST_ASSERT( * dp_); - - ( * dp_)(); - fetch_(); - } - - public: - typedef typename iterator::pointer pointer_t; - typedef typename iterator::reference reference_t; - - iterator() : - dp_( 0), val_() - {} - - explicit iterator( D * dp) : - dp_( dp), val_() - { fetch_(); } - - iterator( iterator const& other) : - dp_( other.dp_), val_( other.val_) - {} - - iterator & operator=( iterator const& other) - { - if ( this == & other) return * this; - dp_ = other.dp_; - val_ = other.val_; - return * this; - } - - bool operator==( iterator const& other) - { return other.dp_ == dp_ && other.val_ == val_; } - - bool operator!=( iterator const& other) - { return other.dp_ != dp_ || other.val_ != val_; } - - iterator & operator++() - { - increment_(); - return * this; - } - - iterator operator++( int) - { - iterator tmp( * this); - ++*this; - return tmp; - } - - reference_t operator*() const - { return const_cast< optional< Result > & >( val_).get(); } - - pointer_t operator->() const - { return const_cast< optional< Result > & >( val_).get_ptr(); } - }; - - class const_iterator : public std::iterator< std::input_iterator_tag, const typename remove_reference< Result >::type > - { - private: - D * dp_; - optional< Result > val_; - - void fetch_() - { - BOOST_ASSERT( dp_); - - if ( ! dp_->has_result() ) - { - dp_ = 0; - val_ = none; - return; - } - val_ = dp_->get(); - } - - void increment_() - { - BOOST_ASSERT( dp_); - BOOST_ASSERT( * dp_); - - ( * dp_)(); - fetch_(); - } - - public: - typedef typename const_iterator::pointer pointer_t; - typedef typename const_iterator::reference reference_t; - - const_iterator() : - dp_( 0), val_() - {} - - explicit const_iterator( D const* dp) : - dp_( const_cast< D * >( dp) ), val_() - { fetch_(); } - - const_iterator( const_iterator const& other) : - dp_( other.dp_), val_( other.val_) - {} - - const_iterator & operator=( const_iterator const& other) - { - if ( this == & other) return * this; - dp_ = other.dp_; - val_ = other.val_; - return * this; - } - - bool operator==( const_iterator const& other) - { return other.dp_ == dp_ && other.val_ == val_; } - - bool operator!=( const_iterator const& other) - { return other.dp_ != dp_ || other.val_ != val_; } - - const_iterator & operator++() - { - increment_(); - return * this; - } - - const_iterator operator++( int) - { - const_iterator tmp( * this); - ++*this; - return tmp; - } - - reference_t operator*() const - { return val_.get(); } - - pointer_t operator->() const - { return val_.get_ptr(); } - }; - - D & operator()() - { - BOOST_ASSERT( static_cast< D * >( this)->impl_); - BOOST_ASSERT( ! static_cast< D * >( this)->impl_->is_complete() ); - - static_cast< D * >( this)->impl_->resume(); - - return * static_cast< D * >( this); - } -}; - -template< typename Signature, typename D > -struct coroutine_op< Signature, D, void, 1 > -{ - typedef typename arg< Signature >::type arg_type; - - class iterator : public std::iterator< std::output_iterator_tag, void, void, void, void > - { - private: - D * dp_; - - public: - iterator() : - dp_( 0) - {} - - explicit iterator( D * dp) : - dp_( dp) - {} - - iterator & operator=( arg_type a1) - { - BOOST_ASSERT( dp_); - if ( ! ( * dp_)( a1) ) dp_ = 0; - return * this; - } - - bool operator==( iterator const& other) - { return other.dp_ == dp_; } - - bool operator!=( iterator const& other) - { return other.dp_ != dp_; } - - iterator & operator*() - { return * this; } - - iterator & operator++() - { return * this; } - }; - - struct const_iterator; - - D & operator()( arg_type a1) - { - BOOST_ASSERT( static_cast< D * >( this)->impl_); - BOOST_ASSERT( ! static_cast< D * >( this)->impl_->is_complete() ); - - static_cast< D * >( this)->impl_->resume( a1); - - return * static_cast< D * >( this); - } -}; - -template< typename Signature, typename D, typename Result > -struct coroutine_op< Signature, D, Result, 1 > -{ - typedef typename arg< Signature >::type arg_type; - - D & operator()( arg_type a1) - { - BOOST_ASSERT( static_cast< D * >( this)->impl_); - BOOST_ASSERT( ! static_cast< D * >( this)->impl_->is_complete() ); - - static_cast< D * >( this)->impl_->resume( a1); - - return * static_cast< D * >( this); - } -}; - -#define BOOST_COROUTINE_OP_COMMA(n) BOOST_PP_COMMA_IF(BOOST_PP_SUB(n,1)) -#define BOOST_COROUTINE_OP_VAL(z,n,unused) BOOST_COROUTINE_OP_COMMA(n) BOOST_PP_CAT(a,n) -#define BOOST_COROUTINE_OP_VALS(n) BOOST_PP_REPEAT_FROM_TO(1,BOOST_PP_ADD(n,1),BOOST_COROUTINE_OP_VAL,~) -#define BOOST_COROUTINE_OP_ARG_TYPE(n) \ - typename function_traits< Signature >::BOOST_PP_CAT(BOOST_PP_CAT(arg,n),_type) -#define BOOST_COROUTINE_OP_ARG(z,n,unused) BOOST_COROUTINE_OP_COMMA(n) BOOST_COROUTINE_OP_ARG_TYPE(n) BOOST_PP_CAT(a,n) -#define BOOST_COROUTINE_OP_ARGS(n) BOOST_PP_REPEAT_FROM_TO(1,BOOST_PP_ADD(n,1),BOOST_COROUTINE_OP_ARG,~) -#define BOOST_COROUTINE_OP(z,n,unused) \ -template< typename Signature, typename D, typename Result > \ -struct coroutine_op< Signature, D, Result, n > \ -{ \ - D & operator()( BOOST_COROUTINE_OP_ARGS(n)) \ - { \ - BOOST_ASSERT( static_cast< D * >( this)->impl_); \ - BOOST_ASSERT( ! static_cast< D * >( this)->impl_->is_complete() ); \ -\ - static_cast< D * >( this)->impl_->resume(BOOST_COROUTINE_OP_VALS(n)); \ -\ - return * static_cast< D * >( this); \ - } \ -}; -BOOST_PP_REPEAT_FROM_TO(2,11,BOOST_COROUTINE_OP,~) -#undef BOOST_COROUTINE_OP -#undef BOOST_COROUTINE_OP_ARGS -#undef BOOST_COROUTINE_OP_ARG -#undef BOOST_COROUTINE_OP_ARG_TYPE -#undef BOOST_COROUTINE_OP_VALS -#undef BOOST_COROUTINE_OP_VAL -#undef BOOST_COROUTINE_OP_COMMA - -}}} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V1_DETAIL_COROUTINE_OP_H diff --git a/3party/boost/boost/coroutine/v2/detail/coroutine_object.hpp b/3party/boost/boost/coroutine/v2/detail/coroutine_object.hpp deleted file mode 100644 index 4255b85b01..0000000000 --- a/3party/boost/boost/coroutine/v2/detail/coroutine_object.hpp +++ /dev/null @@ -1,423 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V1_DETAIL_COROUTINE_OBJECT_H -#define BOOST_COROUTINES_V1_DETAIL_COROUTINE_OBJECT_H - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -template< - typename Arg, - typename Fn, typename StackAllocator, typename Allocator -> -class coroutine_object< Arg, Fn, StackAllocator, Allocator > : - private stack_tuple< StackAllocator >, - public coroutine_base -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Arg, Fn, StackAllocator, Allocator - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< void > * hldr_from( - reinterpret_cast< holder< void > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void run_( Caller & c) - { - coroutine_context callee; - coroutine_context caller; - try - { - fn_( c); - this->flags_ |= flag_complete; - callee = c.impl_->callee_; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - - this->flags_ |= flag_complete; - callee = c.impl_->callee_; - holder< void > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( forward< Fn >( fn) ), - alloc_( alloc) - { enter_(); } -#else - coroutine_object( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - coroutine_object( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } -#endif - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - run_( c); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Arg, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result -> -class coroutine_object< Arg, reference_wrapper< Fn >, StackAllocator, Allocator, Caller, Result, 0 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Arg > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Arg, Fn, StackAllocator, Allocator, Caller, Result, 0 - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Arg > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = * hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void run_( Caller & c) - { - coroutine_context callee; - coroutine_context caller; - try - { - fn_( c); - this->flags_ |= flag_complete; - callee = c.impl_->callee_; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - - this->flags_ |= flag_complete; - callee = c.impl_->callee_; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - Caller c( this->caller_, false, this->preserve_fpu(), alloc_); - run_( c); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; - -template< - typename Arg, - typename Fn, typename StackAllocator, typename Allocator, - typename Caller, - typename Result -> -class coroutine_object< Arg, const reference_wrapper< Fn >, StackAllocator, Allocator, Caller, Result, 0 > : - private stack_tuple< StackAllocator >, - public coroutine_base< Arg > -{ -public: - typedef typename Allocator::template rebind< - coroutine_object< - Arg, Fn, StackAllocator, Allocator, Caller, Result, 0 - > - >::other allocator_t; - -private: - typedef stack_tuple< StackAllocator > pbase_type; - typedef coroutine_base< Arg > base_type; - - Fn fn_; - allocator_t alloc_; - - static void destroy_( allocator_t & alloc, coroutine_object * p) - { - alloc.destroy( p); - alloc.deallocate( p, 1); - } - - coroutine_object( coroutine_object const&); - coroutine_object & operator=( coroutine_object const&); - - void enter_() - { - holder< Result > * hldr_from( - reinterpret_cast< holder< Result > * >( - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( this), - this->preserve_fpu() ) ) ); - this->callee_ = hldr_from->ctx; - this->result_ = hldr_from->data; - if ( this->except_) rethrow_exception( this->except_); - } - - void run_( Caller & c) - { - coroutine_context callee; - coroutine_context caller; - try - { - fn_( c); - this->flags_ |= flag_complete; - callee = c.impl_->callee_; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - catch ( forced_unwind const&) - {} - catch (...) - { this->except_ = current_exception(); } - - this->flags_ |= flag_complete; - callee = c.impl_->callee_; - holder< Result > hldr_to( & caller); - caller.jump( - callee, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - BOOST_ASSERT_MSG( false, "coroutine is complete"); - } - - void unwind_stack_() BOOST_NOEXCEPT - { - BOOST_ASSERT( ! this->is_complete() ); - - this->flags_ |= flag_unwind_stack; - holder< void > hldr_to( & this->caller_, true); - this->caller_.jump( - this->callee_, - reinterpret_cast< intptr_t >( & hldr_to), - this->preserve_fpu() ); - this->flags_ &= ~flag_unwind_stack; - - BOOST_ASSERT( this->is_complete() ); - } - -public: - coroutine_object( const reference_wrapper< Fn > fn, attributes const& attr, - StackAllocator const& stack_alloc, - allocator_t const& alloc) : - pbase_type( stack_alloc, attr.size), - base_type( - trampoline1< coroutine_object >, - & this->stack_ctx, - stack_unwind == attr.do_unwind, - fpu_preserved == attr.preserve_fpu), - fn_( fn), - alloc_( alloc) - { enter_(); } - - ~coroutine_object() - { - if ( ! this->is_complete() && this->force_unwind() ) - unwind_stack_(); - } - - void run() - { - Caller c( & this->caller_, false, this->preserve_fpu(), alloc_); - run_( c); - } - - void deallocate_object() - { destroy_( alloc_, this); } -}; diff --git a/3party/boost/boost/coroutine/v2/pull_corotuine.hpp b/3party/boost/boost/coroutine/v2/pull_corotuine.hpp deleted file mode 100644 index fa214765ab..0000000000 --- a/3party/boost/boost/coroutine/v2/pull_corotuine.hpp +++ /dev/null @@ -1,355 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V2_PULL_COROUTINE_H -#define BOOST_COROUTINES_V2_PULL_COROUTINE_H - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< typename R > -class pull_coroutine -{ -private: - typedef detail::pull_coroutine_base< R > base_t; - typedef typename base_t::ptr_t ptr_t; - - struct dummy - { void nonnull() {} }; - - typedef void ( dummy::*safe_bool)(); - - ptr_t impl_; - - BOOST_MOVABLE_BUT_NOT_COPYABLE( pull_coroutine) - -public: - pull_coroutine() BOOST_NOEXCEPT : - impl_() - {} - -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - template< typename Fn > - explicit pull_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< pull_coroutine > const& alloc = - std::allocator< pull_coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, pull_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, stack_allocator, std::allocator< pull_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit pull_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< pull_coroutine > const& alloc = - std::allocator< pull_coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, pull_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, StackAllocator, std::allocator< pull_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit pull_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, pull_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, StackAllocator, Allocator - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } -#else - template< typename Fn > - explicit pull_coroutine( Fn fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< pull_coroutine > const& alloc = - std::allocator< pull_coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, stack_allocator, std::allocator< pull_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit pull_coroutine( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< pull_coroutine > const& alloc = - std::allocator< pull_coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, StackAllocator, std::allocator< pull_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit pull_coroutine( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, StackAllocator, Allocator - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn > - explicit pull_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< pull_coroutine > const& alloc = - std::allocator< pull_coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, pull_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, stack_allocator, std::allocator< pull_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit pull_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< pull_coroutine > const& alloc = - std::allocator< pull_coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, pull_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, StackAllocator, std::allocator< pull_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit pull_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, pull_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::pull_coroutine_object< - R, Fn, StackAllocator, Allocator - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } -#endif - - pull_coroutine( BOOST_RV_REF( pull_coroutine) other) BOOST_NOEXCEPT : - impl_() - { swap( other); } - - pull_coroutine & operator=( BOOST_RV_REF( pull_coroutine) other) BOOST_NOEXCEPT - { - pull_coroutine tmp( boost::move( other) ); - swap( tmp); - return * this; - } - - bool empty() const BOOST_NOEXCEPT - { return ! impl_; } - - operator safe_bool() const BOOST_NOEXCEPT - { return ( empty() || impl_->is_complete() ) ? 0 : & dummy::nonnull; } - - bool operator!() const BOOST_NOEXCEPT - { return empty() || impl_->is_complete(); } - - void swap( pull_coroutine & other) BOOST_NOEXCEPT - { impl_.swap( other.impl_); } - - void operator()() - { - BOOST_ASSERT( * this); - - impl_->resume(); - } - - bool has_result() const - { - BOOST_ASSERT( * this); - - return impl_->has_result(); - } - - R get() const - { - BOOST_ASSERT( * this); - - return impl_->get(); - } -}; - -template< typename R > -void swap( pull_coroutine< R > & l, pull_coroutine< R > & r) BOOST_NOEXCEPT -{ l.swap( r); } -#if 0 -template< typename R > -inline -typename pull_coroutine< R >::iterator -range_begin( pull_coroutine< R > & c) -{ return typename pull_coroutine< R >::iterator( & c); } - -template< typename R > -inline -typename pull_coroutine< R >::const_iterator -range_begin( pull_coroutine< R > const& c) -{ return typename pull_coroutine< R >::const_iterator( & c); } - -template< typename R > -inline -typename pull_coroutine< R >::iterator -range_end( pull_coroutine< R > &) -{ return typename pull_coroutine< R >::iterator(); } - -template< typename R > -inline -typename pull_coroutine< R >::const_iterator -range_end( pull_coroutine< R > const&) -{ return typename pull_coroutine< R >::const_iterator(); } - -template< typename R > -inline -typename pull_coroutine< R >::iterator -begin( pull_coroutine< R > & c) -{ return boost::begin( c); } - -template< typename R > -inline -typename pull_coroutine< R >::iterator -end( pull_coroutine< R > & c) -{ return boost::end( c); } - -template< typename R > -inline -typename pull_coroutine< R >::const_iterator -begin( pull_coroutine< R > const& c) -{ return boost::const_begin( c); } - -template< typename R > -inline -typename pull_coroutine< R >::const_iterator -end( pull_coroutine< R > const& c) -{ return boost::const_end( c); } - -} - -template< typename R > -struct range_mutable_iterator< coroutines::coroutine< R > > -{ typedef typename coroutines::coroutine< R >::iterator type; }; - -template< typename R > -struct range_const_iterator< coroutines::coroutine< R > > -{ typedef typename coroutines::coroutine< R >::const_iterator type; }; -#endif -} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V2_PULL_COROUTINE_H diff --git a/3party/boost/boost/coroutine/v2/push_coroutine.hpp b/3party/boost/boost/coroutine/v2/push_coroutine.hpp deleted file mode 100644 index a0a63e5609..0000000000 --- a/3party/boost/boost/coroutine/v2/push_coroutine.hpp +++ /dev/null @@ -1,357 +0,0 @@ - -// Copyright Oliver Kowalke 2009. -// Distributed under the Boost Software License, Version 1.0. -// (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_COROUTINES_V2_PUSH_COROUTINE_H -#define BOOST_COROUTINES_V2_PUSH_COROUTINE_H - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_PREFIX -#endif - -namespace boost { -namespace coroutines { -namespace detail { - -template< typename Arg > -class push_coroutine -{ -private: - typedef detail::push_coroutine_base< Arg > base_t; - typedef typename base_t::ptr_t ptr_t; - - struct dummy - { void nonnull() {} }; - - typedef void ( dummy::*safe_bool)(); - - ptr_t impl_; - - BOOST_MOVABLE_BUT_NOT_COPYABLE( push_coroutine) - -public: - push_coroutine() BOOST_NOEXCEPT : - impl_() - {} - -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - template< typename Fn > - explicit push_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< push_coroutine > const& alloc = - std::allocator< push_coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, push_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, stack_allocator, std::allocator< push_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit push_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< push_coroutine > const& alloc = - std::allocator< push_coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, push_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, StackAllocator, std::allocator< push_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit push_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, push_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, StackAllocator, Allocator - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( forward< Fn >( fn), attr, stack_alloc, a) ); - } -#else - template< typename Fn > - explicit push_coroutine( Fn fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< push_coroutine > const& alloc = - std::allocator< push_coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, stack_allocator, std::allocator< push_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit push_coroutine( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< push_coroutine > const& alloc = - std::allocator< push_coroutine >(), - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, StackAllocator, std::allocator< push_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit push_coroutine( Fn fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_convertible< Fn &, BOOST_RV_REF( Fn) >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, StackAllocator, Allocator - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn > - explicit push_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr = attributes(), - stack_allocator const& stack_alloc = - stack_allocator(), - std::allocator< push_coroutine > const& alloc = - std::allocator< push_coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, push_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, stack_allocator, std::allocator< push_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator > - explicit push_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - std::allocator< push_coroutine > const& alloc = - std::allocator< push_coroutine >(), - typename disable_if< - is_same< typename decay< Fn >::type, push_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, StackAllocator, std::allocator< push_coroutine > - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } - - template< typename Fn, typename StackAllocator, typename Allocator > - explicit push_coroutine( BOOST_RV_REF( Fn) fn, attributes const& attr, - StackAllocator const& stack_alloc, - Allocator const& alloc, - typename disable_if< - is_same< typename decay< Fn >::type, push_coroutine >, - dummy * - >::type = 0) : - impl_() - { - typedef detail::push_coroutine_object< - Arg, Fn, StackAllocator, Allocator - > object_t; - typename object_t::allocator_t a( alloc); - impl_ = ptr_t( - // placement new - ::new( a.allocate( 1) ) object_t( fn, attr, stack_alloc, a) ); - } -#endif - - push_coroutine( BOOST_RV_REF( push_coroutine) other) BOOST_NOEXCEPT : - impl_() - { swap( other); } - - push_coroutine & operator=( BOOST_RV_REF( push_coroutine) other) BOOST_NOEXCEPT - { - push_coroutine tmp( boost::move( other) ); - swap( tmp); - return * this; - } - - bool empty() const BOOST_NOEXCEPT - { return ! impl_; } - - operator safe_bool() const BOOST_NOEXCEPT - { return ( empty() || impl_->is_complete() ) ? 0 : & dummy::nonnull; } - - bool operator!() const BOOST_NOEXCEPT - { return empty() || impl_->is_complete(); } - - void swap( push_coroutine & other) BOOST_NOEXCEPT - { impl_.swap( other.impl_); } - -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - void operator()( Arg && arg) - { - BOOST_ASSERT( * this); - - impl_->resume( boost::forward< Arg >( arg) ); - } -#else - void operator()( BOOST_RV_REF( Arg) arg) - { - BOOST_ASSERT( * this); - - impl_->resume( boost::forward< Arg >( arg) ); - } -#endif - - void operator()( Arg arg) - { - BOOST_ASSERT( * this); - - impl_->resume( arg); - } -}; - -template< typename Arg > -void swap( push_coroutine< Arg > & l, push_coroutine< Arg > & r) BOOST_NOEXCEPT -{ l.swap( r); } -#if 0 -template< typename Arg > -inline -typename push_coroutine< Arg >::iterator -range_begin( push_coroutine< Arg > & c) -{ return typename push_coroutine< Arg >::iterator( & c); } - -template< typename Arg > -inline -typename push_coroutine< Arg >::const_iterator -range_begin( push_coroutine< Arg > const& c) -{ return typename push_coroutine< Arg >::const_iterator( & c); } - -template< typename Arg > -inline -typename push_coroutine< Arg >::iterator -range_end( push_coroutine< Arg > &) -{ return typename push_coroutine< Arg >::iterator(); } - -template< typename Arg > -inline -typename push_coroutine< Arg >::const_iterator -range_end( push_coroutine< Arg > const&) -{ return typename push_coroutine< Arg >::const_iterator(); } - -template< typename Arg > -inline -typename push_coroutine< Arg >::iterator -begin( push_coroutine< Arg > & c) -{ return boost::begin( c); } - -template< typename Arg > -inline -typename push_coroutine< Arg >::iterator -end( push_coroutine< Arg > & c) -{ return boost::end( c); } - -template< typename Arg > -inline -typename push_coroutine< Arg >::const_iterator -begin( push_coroutine< Arg > const& c) -{ return boost::const_begin( c); } - -template< typename Arg > -inline -typename push_coroutine< Arg >::const_iterator -end( push_coroutine< Arg > const& c) -{ return boost::const_end( c); } - -} - -template< typename Arg > -struct range_mutable_iterator< coroutines::coroutine< Arg > > -{ typedef typename coroutines::coroutine< Arg >::iterator type; }; - -template< typename Arg > -struct range_const_iterator< coroutines::coroutine< Arg > > -{ typedef typename coroutines::coroutine< Arg >::const_iterator type; }; -#endif -} - -#ifdef BOOST_HAS_ABI_HEADERS -# include BOOST_ABI_SUFFIX -#endif - -#endif // BOOST_COROUTINES_V2_PUSH_COROUTINE_H diff --git a/3party/boost/boost/coroutine/windows/protected_stack_allocator.hpp b/3party/boost/boost/coroutine/windows/protected_stack_allocator.hpp new file mode 100644 index 0000000000..293901223b --- /dev/null +++ b/3party/boost/boost/coroutine/windows/protected_stack_allocator.hpp @@ -0,0 +1,87 @@ + +// Copyright Oliver Kowalke 2009. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_COROUTINES_PROTECTED_STACK_ALLOCATOR_H +#define BOOST_COROUTINES_PROTECTED_STACK_ALLOCATOR_H + +extern "C" { +#include +} + +#include +#include +#include + +#include + +#include +#include + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_PREFIX +#endif + +namespace boost { +namespace coroutines { + +struct stack_context; + +template< typename traitsT > +struct basic_protected_stack_allocator +{ + typedef traitsT traits_type; + + void allocate( stack_context & ctx, std::size_t size) + { + BOOST_ASSERT( traits_type::minimum_size() <= size); + BOOST_ASSERT( traits_type::is_unbounded() || ( traits_type::maximum_size() >= size) ); + + // page at bottom will be used as guard-page + const std::size_t pages( + static_cast< std::size_t >( + std::floor( + static_cast< float >( size) / traits_type::page_size() ) ) ); + BOOST_ASSERT_MSG( 2 <= pages, "at least two pages must fit into stack (one page is guard-page)"); + const std::size_t size_ = pages * traits_type::page_size(); + BOOST_ASSERT( 0 < size && 0 < size_); + + void * limit = ::VirtualAlloc( 0, size_, MEM_COMMIT, PAGE_READWRITE); + if ( ! limit) throw std::bad_alloc(); + + DWORD old_options; +#if defined(BOOST_DISABLE_ASSERTS) + ::VirtualProtect( + limit, traits_type::page_size(), PAGE_READWRITE | PAGE_GUARD /*PAGE_NOACCESS*/, & old_options); +#else + const BOOL result = ::VirtualProtect( + limit, traits_type::page_size(), PAGE_READWRITE | PAGE_GUARD /*PAGE_NOACCESS*/, & old_options); + BOOST_ASSERT( FALSE != result); +#endif + + ctx.size = size_; + ctx.sp = static_cast< char * >( limit) + ctx.size; + } + + void deallocate( stack_context & ctx) + { + BOOST_ASSERT( ctx.sp); + BOOST_ASSERT( traits_type::minimum_size() <= ctx.size); + BOOST_ASSERT( traits_type::is_unbounded() || ( traits_type::maximum_size() >= ctx.size) ); + + void * limit = static_cast< char * >( ctx.sp) - ctx.size; + ::VirtualFree( limit, 0, MEM_RELEASE); + } +}; + +typedef basic_protected_stack_allocator< stack_traits > protected_stack_allocator; + +}} + +#ifdef BOOST_HAS_ABI_HEADERS +# include BOOST_ABI_SUFFIX +#endif + +#endif // BOOST_COROUTINES_PROTECTED_STACK_ALLOCATOR_H diff --git a/3party/boost/boost/cstdfloat.hpp b/3party/boost/boost/cstdfloat.hpp new file mode 100644 index 0000000000..0af4e41149 --- /dev/null +++ b/3party/boost/boost/cstdfloat.hpp @@ -0,0 +1,58 @@ +/////////////////////////////////////////////////////////////////////////////// +// Copyright Christopher Kormanyos 2014. +// Copyright John Maddock 2014. +// Copyright Paul Bristow 2014. +// Distributed under the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +// implements floating-point typedefs having +// specified widths, as described in N3626 (proposed for C++14). +// See: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3626.pdf + +#ifndef _BOOST_CSTDFLOAT_2014_01_09_HPP_ + #define _BOOST_CSTDFLOAT_2014_01_09_HPP_ + + // Include the floating-point type definitions. + #include + + // Support a specialization of std::numeric_limits<> for the wrapped quadmath library (if available). + #if !defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_LIMITS) + #include + #endif + + // Support functions for the wrapped quadmath library (if available). + #if !defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_CMATH) + #include + #endif + + // Support I/O stream operations for the wrapped quadmath library (if available). + #if !defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_IOSTREAM) + #if defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_CMATH) + #error You can not use with BOOST_CSTDFLOAT_NO_LIBQUADMATH_CMATH defined. + #endif + #include + #endif + + // Support a specialization of std::complex<> for the wrapped quadmath library (if available). + #if !defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_COMPLEX) + #if defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_LIMITS) + #error You can not use with BOOST_CSTDFLOAT_NO_LIBQUADMATH_LIMITS defined. + #endif + #if defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_CMATH) + #error You can not use with BOOST_CSTDFLOAT_NO_LIBQUADMATH_CMATH defined. + #endif + #if defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_IOSTREAM) + #error You can not use with BOOST_CSTDFLOAT_NO_LIBQUADMATH_IOSTREAM defined. + #endif + #include + #endif + + + // Undefine BOOST_NO_FLOAT128_T because this constant is not meant for public use. + #if defined(BOOST_CSTDFLOAT_HAS_INTERNAL_FLOAT128_T) + #undef BOOST_CSTDFLOAT_HAS_INTERNAL_FLOAT128_T + #endif + +#endif // _BOOST_CSTDFLOAT_2014_01_09_HPP_ diff --git a/3party/boost/boost/cstdint.hpp b/3party/boost/boost/cstdint.hpp index ea84b65062..98faeae019 100644 --- a/3party/boost/boost/cstdint.hpp +++ b/3party/boost/boost/cstdint.hpp @@ -1,8 +1,8 @@ // boost cstdint.hpp header file ------------------------------------------// -// (C) Copyright Beman Dawes 1999. -// (C) Copyright Jens Mauer 2001 -// (C) Copyright John Maddock 2001 +// (C) Copyright Beman Dawes 1999. +// (C) Copyright Jens Mauer 2001 +// (C) Copyright John Maddock 2001 // Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -24,9 +24,9 @@ #define BOOST_CSTDINT_HPP // -// Since we always define the INT#_C macros as per C++0x, +// Since we always define the INT#_C macros as per C++0x, // define __STDC_CONSTANT_MACROS so that does the right -// thing if possible, and so that the user knows that the macros +// thing if possible, and so that the user knows that the macros // are actually defined as per C99. // #ifndef __STDC_CONSTANT_MACROS @@ -41,7 +41,10 @@ // so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG. // See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990 // -#if defined(BOOST_HAS_STDINT_H) && (!defined(__GLIBC__) || defined(__GLIBC_HAVE_LONG_LONG)) +#if defined(BOOST_HAS_STDINT_H) \ + && (!defined(__GLIBC__) \ + || defined(__GLIBC_HAVE_LONG_LONG) \ + || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17))))) // The following #include is an implementation artifact; not part of interface. # ifdef __hpux @@ -50,7 +53,7 @@ # ifdef __STDC_32_MODE__ // this is triggered with GCC, because it defines __cplusplus < 199707L # define BOOST_NO_INT64_T -# endif +# endif # elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX) # include # else @@ -100,40 +103,40 @@ typedef ::uintfast64_t uint_fast64_t; namespace boost { - using ::int8_t; - using ::int_least8_t; - using ::int_fast8_t; - using ::uint8_t; - using ::uint_least8_t; - using ::uint_fast8_t; - - using ::int16_t; - using ::int_least16_t; - using ::int_fast16_t; - using ::uint16_t; - using ::uint_least16_t; - using ::uint_fast16_t; - - using ::int32_t; - using ::int_least32_t; - using ::int_fast32_t; - using ::uint32_t; - using ::uint_least32_t; - using ::uint_fast32_t; - + using ::int8_t; + using ::int_least8_t; + using ::int_fast8_t; + using ::uint8_t; + using ::uint_least8_t; + using ::uint_fast8_t; + + using ::int16_t; + using ::int_least16_t; + using ::int_fast16_t; + using ::uint16_t; + using ::uint_least16_t; + using ::uint_fast16_t; + + using ::int32_t; + using ::int_least32_t; + using ::int_fast32_t; + using ::uint32_t; + using ::uint_least32_t; + using ::uint_fast32_t; + # ifndef BOOST_NO_INT64_T - using ::int64_t; - using ::int_least64_t; - using ::int_fast64_t; - using ::uint64_t; - using ::uint_least64_t; - using ::uint_fast64_t; - + using ::int64_t; + using ::int_least64_t; + using ::int_fast64_t; + using ::uint64_t; + using ::uint_least64_t; + using ::uint_fast64_t; + # endif - using ::intmax_t; - using ::uintmax_t; + using ::intmax_t; + using ::uintmax_t; } // namespace boost @@ -143,35 +146,35 @@ namespace boost namespace boost { - using ::int8_t; - typedef int8_t int_least8_t; - typedef int8_t int_fast8_t; - using ::uint8_t; - typedef uint8_t uint_least8_t; - typedef uint8_t uint_fast8_t; - - using ::int16_t; - typedef int16_t int_least16_t; - typedef int16_t int_fast16_t; - using ::uint16_t; - typedef uint16_t uint_least16_t; - typedef uint16_t uint_fast16_t; - - using ::int32_t; - typedef int32_t int_least32_t; - typedef int32_t int_fast32_t; - using ::uint32_t; - typedef uint32_t uint_least32_t; - typedef uint32_t uint_fast32_t; - -# ifndef BOOST_NO_INT64_T + using ::int8_t; + typedef int8_t int_least8_t; + typedef int8_t int_fast8_t; + using ::uint8_t; + typedef uint8_t uint_least8_t; + typedef uint8_t uint_fast8_t; - using ::int64_t; - typedef int64_t int_least64_t; - typedef int64_t int_fast64_t; - using ::uint64_t; - typedef uint64_t uint_least64_t; - typedef uint64_t uint_fast64_t; + using ::int16_t; + typedef int16_t int_least16_t; + typedef int16_t int_fast16_t; + using ::uint16_t; + typedef uint16_t uint_least16_t; + typedef uint16_t uint_fast16_t; + + using ::int32_t; + typedef int32_t int_least32_t; + typedef int32_t int_fast32_t; + using ::uint32_t; + typedef uint32_t uint_least32_t; + typedef uint32_t uint_fast32_t; + +# ifndef BOOST_NO_INT64_T + + using ::int64_t; + typedef int64_t int_least64_t; + typedef int64_t int_fast64_t; + using ::uint64_t; + typedef uint64_t uint_least64_t; + typedef uint64_t uint_fast64_t; typedef int64_t intmax_t; typedef uint64_t uintmax_t; @@ -235,15 +238,15 @@ namespace boost typedef unsigned short uint_least16_t; typedef unsigned short uint_fast16_t; # endif -# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__) - // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified - // MTA / XMT does support the following non-standard integer types - typedef __short16 int16_t; - typedef __short16 int_least16_t; - typedef __short16 int_fast16_t; - typedef unsigned __short16 uint16_t; - typedef unsigned __short16 uint_least16_t; - typedef unsigned __short16 uint_fast16_t; +# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__) + // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified + // MTA / XMT does support the following non-standard integer types + typedef __short16 int16_t; + typedef __short16 int_least16_t; + typedef __short16 int_fast16_t; + typedef unsigned __short16 uint16_t; + typedef unsigned __short16 uint_least16_t; + typedef unsigned __short16 uint_fast16_t; # elif (USHRT_MAX == 0xffffffff) && defined(CRAY) // no 16-bit types on Cray: typedef short int_least16_t; @@ -277,14 +280,14 @@ namespace boost typedef unsigned long uint32_t; typedef unsigned long uint_least32_t; typedef unsigned long uint_fast32_t; -# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__) - // Integers are 64 bits on the MTA / XMT - typedef __int32 int32_t; - typedef __int32 int_least32_t; - typedef __int32 int_fast32_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int32 uint_least32_t; - typedef unsigned __int32 uint_fast32_t; +# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__) + // Integers are 64 bits on the MTA / XMT + typedef __int32 int32_t; + typedef __int32 int_least32_t; + typedef __int32 int_fast32_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int32 uint_least32_t; + typedef unsigned __int32 uint_fast32_t; # else # error defaults not correct; you must hand modify boost/cstdint.hpp # endif @@ -358,6 +361,40 @@ namespace boost #endif // BOOST_HAS_STDINT_H +// intptr_t/uintptr_t are defined separately because they are optional and not universally available +#if defined(BOOST_WINDOWS) && !defined(_WIN32_WCE) && !defined(BOOST_HAS_STDINT_H) +// Older MSVC don't have stdint.h and have intptr_t/uintptr_t defined in stddef.h +#include +#endif + +// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config. +#if !defined(__PGIC__) + +#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \ + || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \ + || defined(__CYGWIN__) \ + || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \ + || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) + +namespace boost { + using ::intptr_t; + using ::uintptr_t; +} +#define BOOST_HAS_INTPTR_T + +// Clang pretends to be GCC, so it'll match this condition +#elif defined(__GNUC__) && defined(__INTPTR_TYPE__) && defined(__UINTPTR_TYPE__) + +namespace boost { + typedef __INTPTR_TYPE__ intptr_t; + typedef __UINTPTR_TYPE__ uintptr_t; +} +#define BOOST_HAS_INTPTR_T + +#endif + +#endif // !defined(__PGIC__) + #endif // BOOST_CSTDINT_HPP @@ -376,15 +413,15 @@ INT#_C macros if they're not already defined (John Maddock). #if !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && \ (!defined(INT8_C) || !defined(INT16_C) || !defined(INT32_C) || !defined(INT64_C)) // -// For the following code we get several warnings along the lines of: -// -// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant -// -// So we declare this a system header to suppress these warnings. +// For the following code we get several warnings along the lines of: // -#if defined(__GNUC__) && (__GNUC__ >= 4) -#pragma GCC system_header -#endif +// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant +// +// So we declare this a system header to suppress these warnings. +// +#if defined(__GNUC__) && (__GNUC__ >= 4) +#pragma GCC system_header +#endif #include # define BOOST__STDC_CONSTANT_MACROS_DEFINED diff --git a/3party/boost/boost/current_function.hpp b/3party/boost/boost/current_function.hpp index cb36e35c36..5c113f8093 100644 --- a/3party/boost/boost/current_function.hpp +++ b/3party/boost/boost/current_function.hpp @@ -12,11 +12,11 @@ // // Copyright (c) 2002 Peter Dimov and Multi Media Ltd. // -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt // -// http://www.boost.org/libs/utility/current_function.html +// http://www.boost.org/libs/assert/current_function.html // namespace boost @@ -52,6 +52,10 @@ inline void current_function_helper() # define BOOST_CURRENT_FUNCTION __func__ +#elif defined(__cplusplus) && (__cplusplus >= 201103) + +# define BOOST_CURRENT_FUNCTION __func__ + #else # define BOOST_CURRENT_FUNCTION "(unknown)" @@ -65,4 +69,3 @@ inline void current_function_helper() } // namespace boost #endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED - diff --git a/3party/boost/boost/date_time.hpp b/3party/boost/boost/date_time.hpp index 07715262cd..51628cd328 100644 --- a/3party/boost/boost/date_time.hpp +++ b/3party/boost/boost/date_time.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ // See www.boost.org/libs/date_time for documentation. diff --git a/3party/boost/boost/date_time/adjust_functors.hpp b/3party/boost/boost/date_time/adjust_functors.hpp index dde8ca8590..f6c5a04c4d 100644 --- a/3party/boost/boost/date_time/adjust_functors.hpp +++ b/3party/boost/boost/date_time/adjust_functors.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/date.hpp" diff --git a/3party/boost/boost/date_time/c_local_time_adjustor.hpp b/3party/boost/boost/date_time/c_local_time_adjustor.hpp index 45e96d3af8..aa563122b1 100644 --- a/3party/boost/boost/date_time/c_local_time_adjustor.hpp +++ b/3party/boost/boost/date_time/c_local_time_adjustor.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ /*! @file c_local_time_adjustor.hpp @@ -42,7 +42,10 @@ namespace date_time { } date_duration_type dd = t.date() - time_t_start_day; time_duration_type td = t.time_of_day(); - std::time_t t2 = dd.days()*86400 + td.hours()*3600 + td.minutes()*60 + td.seconds(); + std::time_t t2 = static_cast(dd.days())*86400 + + static_cast(td.hours())*3600 + + static_cast(td.minutes())*60 + + td.seconds(); std::tm tms, *tms_ptr; tms_ptr = c_time::localtime(&t2, &tms); date_type d(static_cast(tms_ptr->tm_year + 1900), diff --git a/3party/boost/boost/date_time/c_time.hpp b/3party/boost/boost/date_time/c_time.hpp index f7e116b2dd..5998908c4e 100644 --- a/3party/boost/boost/date_time/c_time.hpp +++ b/3party/boost/boost/date_time/c_time.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 09:04:10 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ @@ -88,7 +88,7 @@ namespace date_time { boost::throw_exception(std::runtime_error("could not convert calendar time to UTC time")); return result; } -#else // BOOST_HAS_THREADS +#else // BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS #if (defined(_MSC_VER) && (_MSC_VER >= 1400)) #pragma warning(push) // preserve warning settings @@ -116,7 +116,7 @@ namespace date_time { #pragma warning(pop) // restore warnings to previous state #endif // _MSC_VER >= 1400 -#endif // BOOST_HAS_THREADS +#endif // BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS }; }} // namespaces diff --git a/3party/boost/boost/date_time/compiler_config.hpp b/3party/boost/boost/date_time/compiler_config.hpp index 1aa1330f64..e37d0614a4 100644 --- a/3party/boost/boost/date_time/compiler_config.hpp +++ b/3party/boost/boost/date_time/compiler_config.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2011-07-26 10:40:21 -0700 (Tue, 26 Jul 2011) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/constrained_value.hpp b/3party/boost/boost/date_time/constrained_value.hpp index 7338105e2d..910e99a861 100644 --- a/3party/boost/boost/date_time/constrained_value.hpp +++ b/3party/boost/boost/date_time/constrained_value.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/date.hpp b/3party/boost/boost/date_time/date.hpp index f77ae29d5d..2bd936cd5b 100644 --- a/3party/boost/boost/date_time/date.hpp +++ b/3party/boost/boost/date_time/date.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/date_clock_device.hpp b/3party/boost/boost/date_time/date_clock_device.hpp index 6202f6c58f..2145d65fd5 100644 --- a/3party/boost/boost/date_time/date_clock_device.hpp +++ b/3party/boost/boost/date_time/date_clock_device.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/c_time.hpp" @@ -36,18 +36,18 @@ namespace date_time { { ::std::tm result; ::std::tm* curr = get_local_time(result); - return ymd_type(curr->tm_year + 1900, - curr->tm_mon + 1, - curr->tm_mday); + return ymd_type(static_cast(curr->tm_year + 1900), + static_cast(curr->tm_mon + 1), + static_cast(curr->tm_mday)); } //! Get the current day in universal date as a ymd_type static typename date_type::ymd_type universal_day_ymd() { ::std::tm result; ::std::tm* curr = get_universal_time(result); - return ymd_type(curr->tm_year + 1900, - curr->tm_mon + 1, - curr->tm_mday); + return ymd_type(static_cast(curr->tm_year + 1900), + static_cast(curr->tm_mon + 1), + static_cast(curr->tm_mday)); } //! Get the UTC day as a date type static date_type universal_day() diff --git a/3party/boost/boost/date_time/date_defs.hpp b/3party/boost/boost/date_time/date_defs.hpp index ae7e4c5a03..6c80db3a83 100644 --- a/3party/boost/boost/date_time/date_defs.hpp +++ b/3party/boost/boost/date_time/date_defs.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/date_duration.hpp b/3party/boost/boost/date_time/date_duration.hpp index c573944571..f5b4b083d7 100644 --- a/3party/boost/boost/date_time/date_duration.hpp +++ b/3party/boost/boost/date_time/date_duration.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/date_duration_types.hpp b/3party/boost/boost/date_time/date_duration_types.hpp index e44c59fff6..8c0e9860d0 100644 --- a/3party/boost/boost/date_time/date_duration_types.hpp +++ b/3party/boost/boost/date_time/date_duration_types.hpp @@ -6,7 +6,7 @@ * (See accompanying file LICENSE_1_0.txt or * http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/date_facet.hpp b/3party/boost/boost/date_time/date_facet.hpp index fc2ddc246e..c3574cc953 100644 --- a/3party/boost/boost/date_time/date_facet.hpp +++ b/3party/boost/boost/date_time/date_facet.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Martin Andrian, Jeff Garland, Bart Garst - * $Date: 2012-09-30 16:25:22 -0700 (Sun, 30 Sep 2012) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/date_format_simple.hpp b/3party/boost/boost/date_time/date_format_simple.hpp index 05119c4413..452990379b 100644 --- a/3party/boost/boost/date_time/date_format_simple.hpp +++ b/3party/boost/boost/date_time/date_format_simple.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/parse_format_base.hpp" diff --git a/3party/boost/boost/date_time/date_formatting.hpp b/3party/boost/boost/date_time/date_formatting.hpp index 06709bc5e9..d4ca3dd27c 100644 --- a/3party/boost/boost/date_time/date_formatting.hpp +++ b/3party/boost/boost/date_time/date_formatting.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-30 16:25:22 -0700 (Sun, 30 Sep 2012) $ + * $Date$ */ #include "boost/date_time/iso_format.hpp" diff --git a/3party/boost/boost/date_time/date_formatting_limited.hpp b/3party/boost/boost/date_time/date_formatting_limited.hpp index 5721473ba1..7c5c1735a3 100644 --- a/3party/boost/boost/date_time/date_formatting_limited.hpp +++ b/3party/boost/boost/date_time/date_formatting_limited.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/iso_format.hpp" diff --git a/3party/boost/boost/date_time/date_formatting_locales.hpp b/3party/boost/boost/date_time/date_formatting_locales.hpp index e3aec4967c..2c17c055cd 100644 --- a/3party/boost/boost/date_time/date_formatting_locales.hpp +++ b/3party/boost/boost/date_time/date_formatting_locales.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/date_generator_formatter.hpp b/3party/boost/boost/date_time/date_generator_formatter.hpp index 159cf36eb8..42c396b2c0 100644 --- a/3party/boost/boost/date_time/date_generator_formatter.hpp +++ b/3party/boost/boost/date_time/date_generator_formatter.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-13 11:05:31 -0800 (Thu, 13 Nov 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/date_generator_parser.hpp b/3party/boost/boost/date_time/date_generator_parser.hpp index 7cff9ca363..f4d7b27a79 100644 --- a/3party/boost/boost/date_time/date_generator_parser.hpp +++ b/3party/boost/boost/date_time/date_generator_parser.hpp @@ -7,7 +7,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/date_generators.hpp b/3party/boost/boost/date_time/date_generators.hpp index 6d3a4ac0b7..274ce1f06a 100644 --- a/3party/boost/boost/date_time/date_generators.hpp +++ b/3party/boost/boost/date_time/date_generators.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ /*! @file date_generators.hpp diff --git a/3party/boost/boost/date_time/date_iterator.hpp b/3party/boost/boost/date_time/date_iterator.hpp index c8ec50eeb4..3526ba18b4 100644 --- a/3party/boost/boost/date_time/date_iterator.hpp +++ b/3party/boost/boost/date_time/date_iterator.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/date_names_put.hpp b/3party/boost/boost/date_time/date_names_put.hpp index 32aeb36f5c..e055fa8734 100644 --- a/3party/boost/boost/date_time/date_names_put.hpp +++ b/3party/boost/boost/date_time/date_names_put.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/date_parsing.hpp b/3party/boost/boost/date_time/date_parsing.hpp index 35ec8e43c3..33c5366027 100644 --- a/3party/boost/boost/date_time/date_parsing.hpp +++ b/3party/boost/boost/date_time/date_parsing.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-30 16:25:22 -0700 (Sun, 30 Sep 2012) $ + * $Date$ */ #include @@ -113,7 +113,6 @@ namespace date_time { spec_str = "mdy"; } - typedef typename date_type::year_type year_type; typedef typename date_type::month_type month_type; unsigned pos = 0; unsigned short year(0), month(0), day(0); @@ -160,7 +159,6 @@ namespace date_time { parse_undelimited_date(const std::string& s) { int offsets[] = {4,2,2}; int pos = 0; - typedef typename date_type::year_type year_type; //typename date_type::ymd_type ymd((year_type::min)(),1,1); unsigned short y = 0, m = 0, d = 0; diff --git a/3party/boost/boost/date_time/dst_rules.hpp b/3party/boost/boost/date_time/dst_rules.hpp index cf65c1622f..32290190d9 100644 --- a/3party/boost/boost/date_time/dst_rules.hpp +++ b/3party/boost/boost/date_time/dst_rules.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-30 16:25:22 -0700 (Sun, 30 Sep 2012) $ + * $Date$ */ /*! @file dst_rules.hpp diff --git a/3party/boost/boost/date_time/filetime_functions.hpp b/3party/boost/boost/date_time/filetime_functions.hpp index 3c7f13f38c..ca5a1ad933 100644 --- a/3party/boost/boost/date_time/filetime_functions.hpp +++ b/3party/boost/boost/date_time/filetime_functions.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 09:04:10 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ /*! @file filetime_functions.hpp diff --git a/3party/boost/boost/date_time/format_date_parser.hpp b/3party/boost/boost/date_time/format_date_parser.hpp index 3f6476752e..a40dee6fb6 100644 --- a/3party/boost/boost/date_time/format_date_parser.hpp +++ b/3party/boost/boost/date_time/format_date_parser.hpp @@ -7,7 +7,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2013-06-21 08:04:12 -0700 (Fri, 21 Jun 2013) $ + * $Date$ */ @@ -63,7 +63,7 @@ fixed_string_to_int(std::istreambuf_iterator& itr, itr++; j++; } - int_type i = -1; + int_type i = static_cast(-1); // mr.cache will hold leading zeros. size() tells us when input is too short. if(mr.cache.size() < length) { return i; @@ -111,7 +111,7 @@ var_string_to_int(std::istreambuf_iterator& itr, ++itr; ++j; } - int_type i = -1; + int_type i = static_cast(-1); if(!s.empty()) { i = boost::lexical_cast(s); } @@ -271,7 +271,8 @@ class format_date_parser const_itr itr(format_str.begin()); while (itr != format_str.end() && (sitr != stream_end)) { if (*itr == '%') { - itr++; + if ( ++itr == format_str.end()) + break; if (*itr != '%') { switch(*itr) { case 'a': @@ -476,7 +477,8 @@ class format_date_parser const_itr itr(format_str.begin()); while (itr != format_str.end() && (sitr != stream_end)) { if (*itr == '%') { - itr++; + if ( ++itr == format_str.end()) + break; if (*itr != '%') { switch(*itr) { case 'b': @@ -577,7 +579,8 @@ class format_date_parser const_itr itr(format_str.begin()); while (itr != format_str.end() && (sitr != stream_end)) { if (*itr == '%') { - itr++; + if ( ++itr == format_str.end()) + break; if (*itr != '%') { switch(*itr) { case 'a': @@ -666,7 +669,8 @@ class format_date_parser const_itr itr(format_str.begin()); while (itr != format_str.end() && (sitr != stream_end)) { if (*itr == '%') { - itr++; + if ( ++itr == format_str.end()) + break; if (*itr != '%') { //match_results mr; switch(*itr) { diff --git a/3party/boost/boost/date_time/gregorian/conversion.hpp b/3party/boost/boost/date_time/gregorian/conversion.hpp index 33f6856bf0..c844c4e34b 100644 --- a/3party/boost/boost/date_time/gregorian/conversion.hpp +++ b/3party/boost/boost/date_time/gregorian/conversion.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2010-06-09 11:10:13 -0700 (Wed, 09 Jun 2010) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/gregorian/formatters.hpp b/3party/boost/boost/date_time/gregorian/formatters.hpp index eda7dc34be..d486ef0f4c 100644 --- a/3party/boost/boost/date_time/gregorian/formatters.hpp +++ b/3party/boost/boost/date_time/gregorian/formatters.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/compiler_config.hpp" diff --git a/3party/boost/boost/date_time/gregorian/formatters_limited.hpp b/3party/boost/boost/date_time/gregorian/formatters_limited.hpp index 8dfd2d0c60..755f5aa68b 100644 --- a/3party/boost/boost/date_time/gregorian/formatters_limited.hpp +++ b/3party/boost/boost/date_time/gregorian/formatters_limited.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/gregorian/gregorian_types.hpp" diff --git a/3party/boost/boost/date_time/gregorian/greg_calendar.hpp b/3party/boost/boost/date_time/gregorian/greg_calendar.hpp index e9c1852e0b..34ce0aec47 100644 --- a/3party/boost/boost/date_time/gregorian/greg_calendar.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_calendar.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2010-01-10 11:17:23 -0800 (Sun, 10 Jan 2010) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/gregorian/greg_date.hpp b/3party/boost/boost/date_time/gregorian/greg_date.hpp index 860a407c95..f7aa2fc5f1 100644 --- a/3party/boost/boost/date_time/gregorian/greg_date.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_date.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2010-01-10 11:17:23 -0800 (Sun, 10 Jan 2010) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/gregorian/greg_day.hpp b/3party/boost/boost/date_time/gregorian/greg_day.hpp index 4ea829fbec..4a2d5e7e46 100644 --- a/3party/boost/boost/date_time/gregorian/greg_day.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_day.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/constrained_value.hpp" diff --git a/3party/boost/boost/date_time/gregorian/greg_day_of_year.hpp b/3party/boost/boost/date_time/gregorian/greg_day_of_year.hpp index 2f8874d2b7..abf0c9eeb3 100644 --- a/3party/boost/boost/date_time/gregorian/greg_day_of_year.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_day_of_year.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/constrained_value.hpp" diff --git a/3party/boost/boost/date_time/gregorian/greg_duration.hpp b/3party/boost/boost/date_time/gregorian/greg_duration.hpp index a9c0c171b8..dc6ad60755 100644 --- a/3party/boost/boost/date_time/gregorian/greg_duration.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_duration.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/gregorian/greg_duration_types.hpp b/3party/boost/boost/date_time/gregorian/greg_duration_types.hpp index 8328ca303f..d1f9a65f97 100644 --- a/3party/boost/boost/date_time/gregorian/greg_duration_types.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_duration_types.hpp @@ -5,7 +5,7 @@ * Subject to Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/gregorian/greg_facet.hpp b/3party/boost/boost/date_time/gregorian/greg_facet.hpp index 9efc61951a..b8c6d57fe5 100644 --- a/3party/boost/boost/date_time/gregorian/greg_facet.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_facet.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-23 03:13:35 -0800 (Sun, 23 Nov 2008) $ + * $Date$ */ #include "boost/date_time/gregorian/gregorian_types.hpp" @@ -97,7 +97,7 @@ namespace gregorian { std::locale locale = os.getloc(); if (std::has_facet(locale)) { const facet_def& f = std::use_facet(locale); - greg_weekday_formatter::format_weekday(wd.as_enum(), os, f, true); + greg_weekday_formatter::format_weekday(wd, os, f, true); } else { //default to short English string eg: Sun, Mon, Tue, Wed... os << wd.as_short_string(); @@ -214,8 +214,6 @@ namespace gregorian { std::basic_istream& operator>>(std::basic_istream& is, date& d) { std::istream_iterator, charT> beg(is), eos; - - typedef boost::date_time::all_date_names_put facet_def; d = from_stream(beg, eos); return is; } diff --git a/3party/boost/boost/date_time/gregorian/greg_month.hpp b/3party/boost/boost/date_time/gregorian/greg_month.hpp index b48a8a8911..d483f77424 100644 --- a/3party/boost/boost/date_time/gregorian/greg_month.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_month.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/constrained_value.hpp" diff --git a/3party/boost/boost/date_time/gregorian/greg_serialize.hpp b/3party/boost/boost/date_time/gregorian/greg_serialize.hpp index 2cfad93c40..a870c7068a 100644 --- a/3party/boost/boost/date_time/gregorian/greg_serialize.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_serialize.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-30 16:25:22 -0700 (Sun, 30 Sep 2012) $ + * $Date$ */ #include "boost/date_time/gregorian/gregorian_types.hpp" diff --git a/3party/boost/boost/date_time/gregorian/greg_weekday.hpp b/3party/boost/boost/date_time/gregorian/greg_weekday.hpp index ab68fcd19b..60fec32297 100644 --- a/3party/boost/boost/date_time/gregorian/greg_weekday.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_weekday.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ #include "boost/date_time/constrained_value.hpp" diff --git a/3party/boost/boost/date_time/gregorian/greg_year.hpp b/3party/boost/boost/date_time/gregorian/greg_year.hpp index 322f40d0d0..3d98fd06b2 100644 --- a/3party/boost/boost/date_time/gregorian/greg_year.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_year.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/constrained_value.hpp" diff --git a/3party/boost/boost/date_time/gregorian/greg_ymd.hpp b/3party/boost/boost/date_time/gregorian/greg_ymd.hpp index e7d441efea..503666c31d 100644 --- a/3party/boost/boost/date_time/gregorian/greg_ymd.hpp +++ b/3party/boost/boost/date_time/gregorian/greg_ymd.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/year_month_day.hpp" diff --git a/3party/boost/boost/date_time/gregorian/gregorian.hpp b/3party/boost/boost/date_time/gregorian/gregorian.hpp index becbc06817..47d545eccd 100644 --- a/3party/boost/boost/date_time/gregorian/gregorian.hpp +++ b/3party/boost/boost/date_time/gregorian/gregorian.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ /*! @file gregorian.hpp diff --git a/3party/boost/boost/date_time/gregorian/gregorian_io.hpp b/3party/boost/boost/date_time/gregorian/gregorian_io.hpp index e6ba01fe50..e0a23f3269 100644 --- a/3party/boost/boost/date_time/gregorian/gregorian_io.hpp +++ b/3party/boost/boost/date_time/gregorian/gregorian_io.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/gregorian/gregorian_types.hpp b/3party/boost/boost/date_time/gregorian/gregorian_types.hpp index 3f4b92fd87..d50e9cc7d7 100644 --- a/3party/boost/boost/date_time/gregorian/gregorian_types.hpp +++ b/3party/boost/boost/date_time/gregorian/gregorian_types.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ /*! @file gregorian_types.hpp diff --git a/3party/boost/boost/date_time/gregorian/parsers.hpp b/3party/boost/boost/date_time/gregorian/parsers.hpp index a2fa4e1dae..afc6537c3b 100644 --- a/3party/boost/boost/date_time/gregorian/parsers.hpp +++ b/3party/boost/boost/date_time/gregorian/parsers.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/gregorian/gregorian_types.hpp" diff --git a/3party/boost/boost/date_time/gregorian_calendar.hpp b/3party/boost/boost/date_time/gregorian_calendar.hpp index b645aa49b0..dfe3771aab 100644 --- a/3party/boost/boost/date_time/gregorian_calendar.hpp +++ b/3party/boost/boost/date_time/gregorian_calendar.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2010-01-10 11:17:23 -0800 (Sun, 10 Jan 2010) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/gregorian_calendar.ipp b/3party/boost/boost/date_time/gregorian_calendar.ipp index af19394f3d..8a58c8844a 100644 --- a/3party/boost/boost/date_time/gregorian_calendar.ipp +++ b/3party/boost/boost/date_time/gregorian_calendar.ipp @@ -3,7 +3,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 09:04:10 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ #ifndef NO_BOOST_DATE_TIME_INLINE diff --git a/3party/boost/boost/date_time/int_adapter.hpp b/3party/boost/boost/date_time/int_adapter.hpp index d1246e7b50..81f68f645c 100644 --- a/3party/boost/boost/date_time/int_adapter.hpp +++ b/3party/boost/boost/date_time/int_adapter.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/iso_format.hpp b/3party/boost/boost/date_time/iso_format.hpp index 1f9e73d678..2e7942d8ba 100644 --- a/3party/boost/boost/date_time/iso_format.hpp +++ b/3party/boost/boost/date_time/iso_format.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/parse_format_base.hpp" diff --git a/3party/boost/boost/date_time/local_time/conversion.hpp b/3party/boost/boost/date_time/local_time/conversion.hpp index a530de4224..aa0b72c6c4 100644 --- a/3party/boost/boost/date_time/local_time/conversion.hpp +++ b/3party/boost/boost/date_time/local_time/conversion.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2009-06-04 01:24:49 -0700 (Thu, 04 Jun 2009) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/local_time/custom_time_zone.hpp b/3party/boost/boost/date_time/local_time/custom_time_zone.hpp index 84c59a3a0b..b89218a659 100644 --- a/3party/boost/boost/date_time/local_time/custom_time_zone.hpp +++ b/3party/boost/boost/date_time/local_time/custom_time_zone.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ #include "boost/date_time/time_zone_base.hpp" @@ -64,7 +64,7 @@ namespace local_time { //! True if zone uses daylight savings adjustments virtual bool has_dst() const { - return (dst_calc_rules_); //if calc_rule is set the tz has dst + return (bool) dst_calc_rules_; //if calc_rule is set the tz has dst } //! Local time that DST starts -- NADT if has_dst is false virtual posix_time::ptime dst_local_start_time(gregorian::greg_year y) const diff --git a/3party/boost/boost/date_time/local_time/date_duration_operators.hpp b/3party/boost/boost/date_time/local_time/date_duration_operators.hpp index b4c325df0a..e0f170fd7c 100644 --- a/3party/boost/boost/date_time/local_time/date_duration_operators.hpp +++ b/3party/boost/boost/date_time/local_time/date_duration_operators.hpp @@ -6,7 +6,7 @@ * (See accompanying file LICENSE_1_0.txt or * http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/gregorian/greg_duration_types.hpp" diff --git a/3party/boost/boost/date_time/local_time/dst_transition_day_rules.hpp b/3party/boost/boost/date_time/local_time/dst_transition_day_rules.hpp index d82731c084..f372e44a45 100644 --- a/3party/boost/boost/date_time/local_time/dst_transition_day_rules.hpp +++ b/3party/boost/boost/date_time/local_time/dst_transition_day_rules.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/local_time/local_date_time.hpp b/3party/boost/boost/date_time/local_time/local_date_time.hpp index 96b2915837..a3762d9243 100644 --- a/3party/boost/boost/date_time/local_time/local_date_time.hpp +++ b/3party/boost/boost/date_time/local_time/local_date_time.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/local_time/local_time.hpp b/3party/boost/boost/date_time/local_time/local_time.hpp index 162cac5b36..880989b6e7 100644 --- a/3party/boost/boost/date_time/local_time/local_time.hpp +++ b/3party/boost/boost/date_time/local_time/local_time.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/posix_time/posix_time.hpp" diff --git a/3party/boost/boost/date_time/local_time/local_time_io.hpp b/3party/boost/boost/date_time/local_time/local_time_io.hpp index b5e3c3f1ba..c32b81e407 100644 --- a/3party/boost/boost/date_time/local_time/local_time_io.hpp +++ b/3party/boost/boost/date_time/local_time/local_time_io.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-13 11:05:31 -0800 (Thu, 13 Nov 2008) $ + * $Date$ */ #include @@ -36,7 +36,6 @@ namespace local_time { boost::io::ios_flags_saver iflags(os); typedef local_date_time time_type;//::utc_time_type typename typedef date_time::time_facet custom_time_facet; - typedef std::time_put std_time_facet; std::ostreambuf_iterator oitr(os); if(std::has_facet(os.getloc())) { @@ -123,7 +122,6 @@ namespace local_time { const boost::local_time::local_time_period& p) { boost::io::ios_flags_saver iflags(os); typedef boost::date_time::time_facet custom_facet; - typedef std::time_put std_time_facet; std::ostreambuf_iterator oitr(os); if (std::has_facet(os.getloc())) { std::use_facet(os.getloc()).put(oitr, os, os.fill(), p); diff --git a/3party/boost/boost/date_time/local_time/local_time_types.hpp b/3party/boost/boost/date_time/local_time/local_time_types.hpp index 5e04422e8f..df2d08cb49 100644 --- a/3party/boost/boost/date_time/local_time/local_time_types.hpp +++ b/3party/boost/boost/date_time/local_time/local_time_types.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/local_time/local_date_time.hpp" diff --git a/3party/boost/boost/date_time/local_time/posix_time_zone.hpp b/3party/boost/boost/date_time/local_time/posix_time_zone.hpp index ee1b553eea..d0ef31d5b8 100644 --- a/3party/boost/boost/date_time/local_time/posix_time_zone.hpp +++ b/3party/boost/boost/date_time/local_time/posix_time_zone.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ #include @@ -430,9 +430,9 @@ namespace local_time{ dst_calc_rules_ = shared_ptr( new partial_date_dst_rule( partial_date_dst_rule::start_rule( - sd, static_cast(sm)), + static_cast(sd), static_cast(sm)), partial_date_dst_rule::end_rule( - ed, static_cast(em)) + static_cast(ed), static_cast(em)) ) ); } diff --git a/3party/boost/boost/date_time/local_time/tz_database.hpp b/3party/boost/boost/date_time/local_time/tz_database.hpp index aceda93915..0c6fbbf9ea 100644 --- a/3party/boost/boost/date_time/local_time/tz_database.hpp +++ b/3party/boost/boost/date_time/local_time/tz_database.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/local_time_adjustor.hpp b/3party/boost/boost/date_time/local_time_adjustor.hpp index 13251a2cfb..64134f3b28 100644 --- a/3party/boost/boost/date_time/local_time_adjustor.hpp +++ b/3party/boost/boost/date_time/local_time_adjustor.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ /*! @file local_time_adjustor.hpp diff --git a/3party/boost/boost/date_time/local_timezone_defs.hpp b/3party/boost/boost/date_time/local_timezone_defs.hpp index b56278ed28..5564a11080 100644 --- a/3party/boost/boost/date_time/local_timezone_defs.hpp +++ b/3party/boost/boost/date_time/local_timezone_defs.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-11-13 12:10:23 -0800 (Thu, 13 Nov 2008) $ + * $Date$ */ #include "boost/date_time/dst_rules.hpp" diff --git a/3party/boost/boost/date_time/locale_config.hpp b/3party/boost/boost/date_time/locale_config.hpp index 194d5dd37b..42a2b73043 100644 --- a/3party/boost/boost/date_time/locale_config.hpp +++ b/3party/boost/boost/date_time/locale_config.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ // This file configures whether the library will support locales and hence diff --git a/3party/boost/boost/date_time/microsec_time_clock.hpp b/3party/boost/boost/date_time/microsec_time_clock.hpp index 177811ee6f..bffc74137e 100644 --- a/3party/boost/boost/date_time/microsec_time_clock.hpp +++ b/3party/boost/boost/date_time/microsec_time_clock.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2010-05-10 02:15:48 -0700 (Mon, 10 May 2010) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/parse_format_base.hpp b/3party/boost/boost/date_time/parse_format_base.hpp index 087baf9532..d4b2f5975b 100644 --- a/3party/boost/boost/date_time/parse_format_base.hpp +++ b/3party/boost/boost/date_time/parse_format_base.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ namespace boost { diff --git a/3party/boost/boost/date_time/period.hpp b/3party/boost/boost/date_time/period.hpp index 3e34def323..1a88209341 100644 --- a/3party/boost/boost/date_time/period.hpp +++ b/3party/boost/boost/date_time/period.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ /*! \file period.hpp diff --git a/3party/boost/boost/date_time/period_formatter.hpp b/3party/boost/boost/date_time/period_formatter.hpp index b6ddc82175..0cce32a68a 100644 --- a/3party/boost/boost/date_time/period_formatter.hpp +++ b/3party/boost/boost/date_time/period_formatter.hpp @@ -7,7 +7,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/period_parser.hpp b/3party/boost/boost/date_time/period_parser.hpp index 84b9d1378c..8374234897 100644 --- a/3party/boost/boost/date_time/period_parser.hpp +++ b/3party/boost/boost/date_time/period_parser.hpp @@ -7,7 +7,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-13 12:10:23 -0800 (Thu, 13 Nov 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/posix_time/conversion.hpp b/3party/boost/boost/date_time/posix_time/conversion.hpp index 83ccf60068..59e5cb7c12 100644 --- a/3party/boost/boost/date_time/posix_time/conversion.hpp +++ b/3party/boost/boost/date_time/posix_time/conversion.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2010-06-09 11:10:13 -0700 (Wed, 09 Jun 2010) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/posix_time/date_duration_operators.hpp b/3party/boost/boost/date_time/posix_time/date_duration_operators.hpp index 6846a77815..60821f0c46 100644 --- a/3party/boost/boost/date_time/posix_time/date_duration_operators.hpp +++ b/3party/boost/boost/date_time/posix_time/date_duration_operators.hpp @@ -6,7 +6,7 @@ * (See accompanying file LICENSE_1_0.txt or * http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/gregorian/greg_duration_types.hpp" diff --git a/3party/boost/boost/date_time/posix_time/posix_time.hpp b/3party/boost/boost/date_time/posix_time/posix_time.hpp index 3b85ff46ff..aecf8a818d 100644 --- a/3party/boost/boost/date_time/posix_time/posix_time.hpp +++ b/3party/boost/boost/date_time/posix_time/posix_time.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ /*!@file posix_time.hpp Global header file to get all of posix time types */ diff --git a/3party/boost/boost/date_time/posix_time/posix_time_config.hpp b/3party/boost/boost/date_time/posix_time/posix_time_config.hpp index d0b76536e9..60b34683fd 100644 --- a/3party/boost/boost/date_time/posix_time/posix_time_config.hpp +++ b/3party/boost/boost/date_time/posix_time/posix_time_config.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-10-10 12:05:03 -0700 (Wed, 10 Oct 2012) $ + * $Date$ */ #include //for MCW 7.2 std::abs(long long) diff --git a/3party/boost/boost/date_time/posix_time/posix_time_duration.hpp b/3party/boost/boost/date_time/posix_time/posix_time_duration.hpp index 9778fd7f3e..7e15df2302 100644 --- a/3party/boost/boost/date_time/posix_time/posix_time_duration.hpp +++ b/3party/boost/boost/date_time/posix_time/posix_time_duration.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/posix_time/posix_time_config.hpp" diff --git a/3party/boost/boost/date_time/posix_time/posix_time_io.hpp b/3party/boost/boost/date_time/posix_time/posix_time_io.hpp index fb63a9165c..45c338b220 100644 --- a/3party/boost/boost/date_time/posix_time/posix_time_io.hpp +++ b/3party/boost/boost/date_time/posix_time/posix_time_io.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-13 11:05:31 -0800 (Thu, 13 Nov 2008) $ + * $Date$ */ #include @@ -47,7 +47,6 @@ namespace posix_time { const ptime& p) { boost::io::ios_flags_saver iflags(os); typedef boost::date_time::time_facet custom_ptime_facet; - typedef std::time_put std_ptime_facet; std::ostreambuf_iterator oitr(os); if (std::has_facet(os.getloc())) std::use_facet(os.getloc()).put(oitr, os, os.fill(), p); @@ -114,7 +113,6 @@ namespace posix_time { const boost::posix_time::time_period& p) { boost::io::ios_flags_saver iflags(os); typedef boost::date_time::time_facet custom_ptime_facet; - typedef std::time_put std_time_facet; std::ostreambuf_iterator oitr(os); if (std::has_facet(os.getloc())) { std::use_facet(os.getloc()).put(oitr, os, os.fill(), p); @@ -180,7 +178,6 @@ namespace posix_time { { boost::io::ios_flags_saver iflags(os); typedef boost::date_time::time_facet custom_ptime_facet; - typedef std::time_put std_ptime_facet; std::ostreambuf_iterator oitr(os); if (std::has_facet(os.getloc())) std::use_facet(os.getloc()).put(oitr, os, os.fill(), td); diff --git a/3party/boost/boost/date_time/posix_time/posix_time_legacy_io.hpp b/3party/boost/boost/date_time/posix_time/posix_time_legacy_io.hpp index fcc3fac1d9..b31fb98723 100644 --- a/3party/boost/boost/date_time/posix_time/posix_time_legacy_io.hpp +++ b/3party/boost/boost/date_time/posix_time/posix_time_legacy_io.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ /*! @file posix_time_pre133_operators.hpp @@ -80,7 +80,7 @@ namespace posix_time { // any marker (such as '\0'). typename std::basic_string::iterator e = inp_s.end(); while(b != e){ - out_ss << out_ss.narrow(*b, 0); + out_ss << is.narrow(*b, 0); ++b; } diff --git a/3party/boost/boost/date_time/posix_time/posix_time_system.hpp b/3party/boost/boost/date_time/posix_time/posix_time_system.hpp index 13626e9bad..84c21ca00f 100644 --- a/3party/boost/boost/date_time/posix_time/posix_time_system.hpp +++ b/3party/boost/boost/date_time/posix_time/posix_time_system.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/posix_time/ptime.hpp b/3party/boost/boost/date_time/posix_time/ptime.hpp index 3f1cb0473f..e4f9d02d1f 100644 --- a/3party/boost/boost/date_time/posix_time/ptime.hpp +++ b/3party/boost/boost/date_time/posix_time/ptime.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/posix_time/posix_time_system.hpp" diff --git a/3party/boost/boost/date_time/posix_time/time_formatters.hpp b/3party/boost/boost/date_time/posix_time/time_formatters.hpp index 534b9525b8..ce19568228 100644 --- a/3party/boost/boost/date_time/posix_time/time_formatters.hpp +++ b/3party/boost/boost/date_time/posix_time/time_formatters.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2010-01-10 11:17:23 -0800 (Sun, 10 Jan 2010) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/posix_time/time_formatters_limited.hpp b/3party/boost/boost/date_time/posix_time/time_formatters_limited.hpp index 8d2ebdce58..c74fcfa0b0 100644 --- a/3party/boost/boost/date_time/posix_time/time_formatters_limited.hpp +++ b/3party/boost/boost/date_time/posix_time/time_formatters_limited.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2010-01-10 11:17:23 -0800 (Sun, 10 Jan 2010) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/posix_time/time_parsers.hpp b/3party/boost/boost/date_time/posix_time/time_parsers.hpp index 3dc02b18a3..55b6ccf1f8 100644 --- a/3party/boost/boost/date_time/posix_time/time_parsers.hpp +++ b/3party/boost/boost/date_time/posix_time/time_parsers.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/gregorian/gregorian.hpp" diff --git a/3party/boost/boost/date_time/posix_time/time_period.hpp b/3party/boost/boost/date_time/posix_time/time_period.hpp index 11f8120732..7c6095b896 100644 --- a/3party/boost/boost/date_time/posix_time/time_period.hpp +++ b/3party/boost/boost/date_time/posix_time/time_period.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/period.hpp" diff --git a/3party/boost/boost/date_time/posix_time/time_serialize.hpp b/3party/boost/boost/date_time/posix_time/time_serialize.hpp index c9038f19a6..8650ae1da9 100644 --- a/3party/boost/boost/date_time/posix_time/time_serialize.hpp +++ b/3party/boost/boost/date_time/posix_time/time_serialize.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-30 16:25:22 -0700 (Sun, 30 Sep 2012) $ + * $Date$ */ #include "boost/date_time/posix_time/posix_time.hpp" diff --git a/3party/boost/boost/date_time/special_defs.hpp b/3party/boost/boost/date_time/special_defs.hpp index 661814ec19..5a757be103 100644 --- a/3party/boost/boost/date_time/special_defs.hpp +++ b/3party/boost/boost/date_time/special_defs.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ namespace boost { diff --git a/3party/boost/boost/date_time/special_values_formatter.hpp b/3party/boost/boost/date_time/special_values_formatter.hpp index 53fe98452d..c8653c1f48 100644 --- a/3party/boost/boost/date_time/special_values_formatter.hpp +++ b/3party/boost/boost/date_time/special_values_formatter.hpp @@ -7,7 +7,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/string_convert.hpp b/3party/boost/boost/date_time/string_convert.hpp index a3cc86c2db..30be3567a5 100644 --- a/3party/boost/boost/date_time/string_convert.hpp +++ b/3party/boost/boost/date_time/string_convert.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include "boost/date_time/compiler_config.hpp" @@ -21,7 +21,6 @@ namespace date_time { inline std::basic_string convert_string_type(const std::basic_string& inp_str) { - typedef std::basic_string input_type; typedef std::basic_string output_type; output_type result; result.insert(result.begin(), inp_str.begin(), inp_str.end()); diff --git a/3party/boost/boost/date_time/string_parse_tree.hpp b/3party/boost/boost/date_time/string_parse_tree.hpp index d67bf6b7d0..9e977663fa 100644 --- a/3party/boost/boost/date_time/string_parse_tree.hpp +++ b/3party/boost/boost/date_time/string_parse_tree.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/strings_from_facet.hpp b/3party/boost/boost/date_time/strings_from_facet.hpp index 82da517c7a..800919a0b5 100644 --- a/3party/boost/boost/date_time/strings_from_facet.hpp +++ b/3party/boost/boost/date_time/strings_from_facet.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2013-06-21 08:04:12 -0700 (Fri, 21 Jun 2013) $ + * $Date$ */ #include @@ -35,7 +35,6 @@ gather_month_strings(const std::locale& locale, bool short_strings=true) { typedef std::basic_string string_type; typedef std::vector collection_type; - typedef std::basic_ostringstream ostream_type; typedef std::ostreambuf_iterator ostream_iter_type; typedef std::basic_ostringstream stringstream_type; typedef std::time_put time_put_facet_type; @@ -86,7 +85,6 @@ gather_weekday_strings(const std::locale& locale, bool short_strings=true) { typedef std::basic_string string_type; typedef std::vector collection_type; - typedef std::basic_ostringstream ostream_type; typedef std::ostreambuf_iterator ostream_iter_type; typedef std::basic_ostringstream stringstream_type; typedef std::time_put time_put_facet_type; diff --git a/3party/boost/boost/date_time/time.hpp b/3party/boost/boost/date_time/time.hpp index 8b21144b6e..0a7810a0ef 100644 --- a/3party/boost/boost/date_time/time.hpp +++ b/3party/boost/boost/date_time/time.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/time_clock.hpp b/3party/boost/boost/date_time/time_clock.hpp index 9aa2ff0e39..a64a5b81b9 100644 --- a/3party/boost/boost/date_time/time_clock.hpp +++ b/3party/boost/boost/date_time/time_clock.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ /*! @file time_clock.hpp diff --git a/3party/boost/boost/date_time/time_defs.hpp b/3party/boost/boost/date_time/time_defs.hpp index d74631d5eb..852207e685 100644 --- a/3party/boost/boost/date_time/time_defs.hpp +++ b/3party/boost/boost/date_time/time_defs.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/time_duration.hpp b/3party/boost/boost/date_time/time_duration.hpp index fc3660b7ce..92a0e2d59a 100644 --- a/3party/boost/boost/date_time/time_duration.hpp +++ b/3party/boost/boost/date_time/time_duration.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-10-10 12:05:03 -0700 (Wed, 10 Oct 2012) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/time_facet.hpp b/3party/boost/boost/date_time/time_facet.hpp index 8346ca3009..b9abedfba9 100644 --- a/3party/boost/boost/date_time/time_facet.hpp +++ b/3party/boost/boost/date_time/time_facet.hpp @@ -7,7 +7,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Martin Andrian, Jeff Garland, Bart Garst - * $Date: 2012-09-22 09:04:10 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ #include @@ -822,7 +822,7 @@ namespace date_time { const_itr itr(m_time_duration_format.begin()); while (itr != m_time_duration_format.end() && (sitr != stream_end)) { if (*itr == '%') { - ++itr; + if (++itr == m_time_duration_format.end()) break; if (*itr != '%') { switch(*itr) { case 'O': @@ -994,7 +994,7 @@ namespace date_time { const_itr itr(this->m_format.begin()); while (itr != this->m_format.end() && (sitr != stream_end)) { if (*itr == '%') { - ++itr; + if (++itr == this->m_format.end()) break; if (*itr != '%') { // the cases are grouped by date & time flags - not alphabetical order switch(*itr) { diff --git a/3party/boost/boost/date_time/time_formatting_streams.hpp b/3party/boost/boost/date_time/time_formatting_streams.hpp index 2d07d344ee..f69f87a348 100644 --- a/3party/boost/boost/date_time/time_formatting_streams.hpp +++ b/3party/boost/boost/date_time/time_formatting_streams.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-12 11:37:53 -0800 (Wed, 12 Nov 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/time_iterator.hpp b/3party/boost/boost/date_time/time_iterator.hpp index 4c33f39e97..64439363d7 100644 --- a/3party/boost/boost/date_time/time_iterator.hpp +++ b/3party/boost/boost/date_time/time_iterator.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/time_parsing.hpp b/3party/boost/boost/date_time/time_parsing.hpp index 7b71de0da3..6de4b7dbde 100644 --- a/3party/boost/boost/date_time/time_parsing.hpp +++ b/3party/boost/boost/date_time/time_parsing.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-10-10 12:05:03 -0700 (Wed, 10 Oct 2012) $ + * $Date$ */ #include "boost/tokenizer.hpp" diff --git a/3party/boost/boost/date_time/time_resolution_traits.hpp b/3party/boost/boost/date_time/time_resolution_traits.hpp index 903830c76e..37785d0e68 100644 --- a/3party/boost/boost/date_time/time_resolution_traits.hpp +++ b/3party/boost/boost/date_time/time_resolution_traits.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2009-06-06 04:25:55 -0700 (Sat, 06 Jun 2009) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/time_system_counted.hpp b/3party/boost/boost/date_time/time_system_counted.hpp index 5425f62af4..e5ed20b8c6 100644 --- a/3party/boost/boost/date_time/time_system_counted.hpp +++ b/3party/boost/boost/date_time/time_system_counted.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/time_system_split.hpp b/3party/boost/boost/date_time/time_system_split.hpp index 6fc4a336b5..cf5931a4f2 100644 --- a/3party/boost/boost/date_time/time_system_split.hpp +++ b/3party/boost/boost/date_time/time_system_split.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2008-11-13 12:10:23 -0800 (Thu, 13 Nov 2008) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/time_zone_base.hpp b/3party/boost/boost/date_time/time_zone_base.hpp index f239d545a0..576c77a223 100644 --- a/3party/boost/boost/date_time/time_zone_base.hpp +++ b/3party/boost/boost/date_time/time_zone_base.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/time_zone_names.hpp b/3party/boost/boost/date_time/time_zone_names.hpp index a56502704e..405e7e0a70 100644 --- a/3party/boost/boost/date_time/time_zone_names.hpp +++ b/3party/boost/boost/date_time/time_zone_names.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ #include diff --git a/3party/boost/boost/date_time/tz_db_base.hpp b/3party/boost/boost/date_time/tz_db_base.hpp index 567e7ada2f..29d60063c3 100644 --- a/3party/boost/boost/date_time/tz_db_base.hpp +++ b/3party/boost/boost/date_time/tz_db_base.hpp @@ -5,7 +5,7 @@ * Subject to the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2013-06-13 07:00:48 -0700 (Thu, 13 Jun 2013) $ + * $Date$ */ #include @@ -180,7 +180,6 @@ namespace boost { /*! May throw data_not_accessible, or bad_field_count exceptions */ void load_from_file(const std::string& pathspec) { - string_type in_str; std::string buff; std::ifstream ifs(pathspec.c_str()); @@ -261,8 +260,12 @@ namespace boost { e_wn = get_week_num(e_nth); - return new rule_type(start_rule(s_wn, s_d, s_m), - end_rule(e_wn, e_d, e_m)); + return new rule_type(start_rule(s_wn, + static_cast(s_d), + static_cast(s_m)), + end_rule(e_wn, + static_cast(e_d), + static_cast(e_m))); } //! helper function for parse_rules() week_num get_week_num(int nth) const diff --git a/3party/boost/boost/date_time/wrapping_int.hpp b/3party/boost/boost/date_time/wrapping_int.hpp index e6f87d52cb..6f869d3023 100644 --- a/3party/boost/boost/date_time/wrapping_int.hpp +++ b/3party/boost/boost/date_time/wrapping_int.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland, Bart Garst - * $Date: 2012-09-22 15:33:33 -0700 (Sat, 22 Sep 2012) $ + * $Date$ */ diff --git a/3party/boost/boost/date_time/year_month_day.hpp b/3party/boost/boost/date_time/year_month_day.hpp index 9340e53f55..e1bf2c7001 100644 --- a/3party/boost/boost/date_time/year_month_day.hpp +++ b/3party/boost/boost/date_time/year_month_day.hpp @@ -6,7 +6,7 @@ * Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) * Author: Jeff Garland - * $Date: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ + * $Date$ */ namespace boost { diff --git a/3party/boost/boost/detail/allocator_utilities.hpp b/3party/boost/boost/detail/allocator_utilities.hpp index 5d6ef48b05..ed3de8466d 100644 --- a/3party/boost/boost/detail/allocator_utilities.hpp +++ b/3party/boost/boost/detail/allocator_utilities.hpp @@ -1,4 +1,4 @@ -/* Copyright 2003-2009 Joaquin M Lopez Munoz. +/* Copyright 2003-2013 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -11,7 +11,6 @@ #include /* keep it first to prevent nasty warns in MSVC */ #include -#include #include #include #include @@ -116,29 +115,6 @@ struct partial_std_allocator_rebind_to /* rebind operation in all other cases */ -#if BOOST_WORKAROUND(BOOST_MSVC,<1300) -/* Workaround for a problem in MSVC with dependent template typedefs - * when doing rebinding of allocators. - * Modeled after (thanks, Aleksey!) - */ - -template -struct rebinder -{ - template struct fake_allocator:Allocator{}; - template<> struct fake_allocator - { - template struct rebind{}; - }; - - template - struct result: - fake_allocator::value>:: - template rebind - { - }; -}; -#else template struct rebinder { @@ -149,7 +125,6 @@ struct rebinder rebind::other other; }; }; -#endif template struct compliant_allocator_rebind_to diff --git a/3party/boost/boost/detail/basic_pointerbuf.hpp b/3party/boost/boost/detail/basic_pointerbuf.hpp new file mode 100644 index 0000000000..1d8cf373b3 --- /dev/null +++ b/3party/boost/boost/detail/basic_pointerbuf.hpp @@ -0,0 +1,139 @@ +//----------------------------------------------------------------------------- +// boost detail/templated_streams.hpp header file +// See http://www.boost.org for updates, documentation, and revision history. +//----------------------------------------------------------------------------- +// +// Copyright (c) 2013 John Maddock, Antony Polukhin +// +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_DETAIL_BASIC_POINTERBUF_HPP +#define BOOST_DETAIL_BASIC_POINTERBUF_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) +# pragma once +#endif + +#include "boost/config.hpp" +#include + +namespace boost { namespace detail { + +// +// class basic_pointerbuf: +// acts as a stream buffer which wraps around a pair of pointers: +// +template +class basic_pointerbuf : public BufferT { +protected: + typedef BufferT base_type; + typedef basic_pointerbuf this_type; + typedef typename base_type::int_type int_type; + typedef typename base_type::char_type char_type; + typedef typename base_type::pos_type pos_type; + typedef ::std::streamsize streamsize; + typedef typename base_type::off_type off_type; + +public: + basic_pointerbuf() : base_type() { setbuf(0, 0); } + const charT* getnext() { return this->gptr(); } + +#ifndef BOOST_NO_USING_TEMPLATE + using base_type::pptr; + using base_type::pbase; +#else + charT* pptr() const { return base_type::pptr(); } + charT* pbase() const { return base_type::pbase(); } +#endif + +protected: + // VC mistakenly assumes that `setbuf` and other functions are not referenced. + // Marking those functions with `inline` suppresses the warnings. + // There must be no harm from marking virtual functions as inline: inline virtual + // call can be inlined ONLY when the compiler knows the "exact class". + inline base_type* setbuf(char_type* s, streamsize n); + inline typename this_type::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which); + inline typename this_type::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which); + +private: + basic_pointerbuf& operator=(const basic_pointerbuf&); + basic_pointerbuf(const basic_pointerbuf&); +}; + +template +BufferT* +basic_pointerbuf::setbuf(char_type* s, streamsize n) +{ + this->setg(s, s, s + n); + return this; +} + +template +typename basic_pointerbuf::pos_type +basic_pointerbuf::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which) +{ + typedef typename boost::int_t::least cast_type; + + if(which & ::std::ios_base::out) + return pos_type(off_type(-1)); + std::ptrdiff_t size = this->egptr() - this->eback(); + std::ptrdiff_t pos = this->gptr() - this->eback(); + charT* g = this->eback(); + switch(static_cast(way)) + { + case ::std::ios_base::beg: + if((off < 0) || (off > size)) + return pos_type(off_type(-1)); + else + this->setg(g, g + off, g + size); + break; + case ::std::ios_base::end: + if((off < 0) || (off > size)) + return pos_type(off_type(-1)); + else + this->setg(g, g + size - off, g + size); + break; + case ::std::ios_base::cur: + { + std::ptrdiff_t newpos = static_cast(pos + off); + if((newpos < 0) || (newpos > size)) + return pos_type(off_type(-1)); + else + this->setg(g, g + newpos, g + size); + break; + } + default: ; + } +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4244) +#endif + return static_cast(this->gptr() - this->eback()); +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif +} + +template +typename basic_pointerbuf::pos_type +basic_pointerbuf::seekpos(pos_type sp, ::std::ios_base::openmode which) +{ + if(which & ::std::ios_base::out) + return pos_type(off_type(-1)); + off_type size = static_cast(this->egptr() - this->eback()); + charT* g = this->eback(); + if(off_type(sp) <= size) + { + this->setg(g, g + off_type(sp), g + size); + } + return pos_type(off_type(-1)); +} + +}} // namespace boost::detail + +#endif // BOOST_DETAIL_BASIC_POINTERBUF_HPP + diff --git a/3party/boost/boost/detail/catch_exceptions.hpp b/3party/boost/boost/detail/catch_exceptions.hpp index b1a3c76b2a..823ebd1e29 100644 --- a/3party/boost/boost/detail/catch_exceptions.hpp +++ b/3party/boost/boost/detail/catch_exceptions.hpp @@ -24,11 +24,7 @@ #include // for exception, bad_exception #include // for std exception hierarchy #include // for exit codes -# if __GNUC__ != 2 || __GNUC_MINOR__ > 96 -# include // for ostream -# else -# include // workaround GNU missing ostream header -# endif +#include // for ostream # if defined(__BORLANDC__) && (__BORLANDC__ <= 0x0551) # define BOOST_BUILT_IN_EXCEPTIONS_MISSING_WHAT diff --git a/3party/boost/boost/detail/compressed_pair.hpp b/3party/boost/boost/detail/compressed_pair.hpp index 3f326456ce..5dc21e23e6 100644 --- a/3party/boost/boost/detail/compressed_pair.hpp +++ b/3party/boost/boost/detail/compressed_pair.hpp @@ -6,7 +6,7 @@ // See http://www.boost.org/libs/utility for most recent version including documentation. // compressed_pair: pair that "compresses" empty members -// (see libs/utility/compressed_pair.htm) +// (see libs/utility/doc/html/compressed_pair.html) // // JM changes 25 Jan 2004: // For the case where T1 == T2 and both are empty, then first() and second() diff --git a/3party/boost/boost/detail/container_fwd.hpp b/3party/boost/boost/detail/container_fwd.hpp index ef17498063..04ce972738 100644 --- a/3party/boost/boost/detail/container_fwd.hpp +++ b/3party/boost/boost/detail/container_fwd.hpp @@ -8,7 +8,7 @@ #if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP) #define BOOST_DETAIL_CONTAINER_FWD_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) && \ +#if defined(_MSC_VER) && \ !defined(BOOST_DETAIL_TEST_CONFIG_ONLY) # pragma once #endif @@ -119,12 +119,7 @@ namespace std template class allocator; template class basic_string; -#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) - - template struct string_char_traits; -#else template struct char_traits; -#endif #if defined(BOOST_CONTAINER_FWD_COMPLEX_STRUCT) template struct complex; diff --git a/3party/boost/boost/detail/dynamic_bitset.hpp b/3party/boost/boost/detail/dynamic_bitset.hpp index 281aa55cd6..e0f675d5ec 100644 --- a/3party/boost/boost/detail/dynamic_bitset.hpp +++ b/3party/boost/boost/detail/dynamic_bitset.hpp @@ -3,6 +3,9 @@ // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek // Copyright (c) 2003-2006, 2008 Gennaro Prota // +// Copyright (c) 2014 Glen Joseph Fernandes +// glenfe at live dot com +// // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -12,6 +15,7 @@ #ifndef BOOST_DETAIL_DYNAMIC_BITSET_HPP #define BOOST_DETAIL_DYNAMIC_BITSET_HPP +#include #include #include "boost/config.hpp" #include "boost/detail/workaround.hpp" @@ -155,17 +159,25 @@ namespace boost { // meaningful info. // template - typename T::size_type vector_max_size_workaround(const T & v) { + inline typename T::size_type vector_max_size_workaround(const T & v) + BOOST_NOEXCEPT + { + typedef typename T::allocator_type allocator_type; - typedef typename T::allocator_type allocator_type; + const allocator_type& alloc = v.get_allocator(); - const typename allocator_type::size_type alloc_max = - v.get_allocator().max_size(); - const typename T::size_type container_max = v.max_size(); +#if !defined(BOOST_NO_CXX11_ALLOCATOR) + typedef std::allocator_traits allocator_traits; - return alloc_max < container_max? - alloc_max : - container_max; + const typename allocator_traits::size_type alloc_max = + allocator_traits::max_size(alloc); +#else + const typename allocator_type::size_type alloc_max = alloc.max_size(); +#endif + + const typename T::size_type container_max = v.max_size(); + + return alloc_max < container_max ? alloc_max : container_max; } // for static_asserts diff --git a/3party/boost/boost/detail/endian.hpp b/3party/boost/boost/detail/endian.hpp index 3236808d5f..f576c26b89 100644 --- a/3party/boost/boost/detail/endian.hpp +++ b/3party/boost/boost/detail/endian.hpp @@ -1,126 +1,11 @@ -// Copyright 2005 Caleb Epstein -// Copyright 2006 John Maddock -// Copyright 2010 Rene Rivera +// Copyright 2013 Rene Rivera // Distributed under the Boost Software License, Version 1.0. (See accompany- // ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -/* - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -/* - * Copyright notice reproduced from , from - * which this code was originally taken. - * - * Modified by Caleb Epstein to use with GNU libc and to - * defined the BOOST_ENDIAN macro. - */ - #ifndef BOOST_DETAIL_ENDIAN_HPP #define BOOST_DETAIL_ENDIAN_HPP -// -// Special cases come first: -// -#if defined (__GLIBC__) -// GNU libc offers the helpful header which defines -// __BYTE_ORDER -# include -# if (__BYTE_ORDER == __LITTLE_ENDIAN) -# define BOOST_LITTLE_ENDIAN -# elif (__BYTE_ORDER == __BIG_ENDIAN) -# define BOOST_BIG_ENDIAN -# elif (__BYTE_ORDER == __PDP_ENDIAN) -# define BOOST_PDP_ENDIAN -# else -# error Unknown machine endianness detected. -# endif -# define BOOST_BYTE_ORDER __BYTE_ORDER - -#elif defined(__NetBSD__) || defined(__FreeBSD__) || \ - defined(__OpenBSD__) || (__DragonFly__) -// -// BSD has endian.h, see https://svn.boost.org/trac/boost/ticket/6013 -# if defined(__OpenBSD__) -# include -# else -# include -# endif -# if (_BYTE_ORDER == _LITTLE_ENDIAN) -# define BOOST_LITTLE_ENDIAN -# elif (_BYTE_ORDER == _BIG_ENDIAN) -# define BOOST_BIG_ENDIAN -# elif (_BYTE_ORDER == _PDP_ENDIAN) -# define BOOST_PDP_ENDIAN -# else -# error Unknown machine endianness detected. -# endif -# define BOOST_BYTE_ORDER _BYTE_ORDER - -#elif defined( __ANDROID__ ) -// Adroid specific code, see: https://svn.boost.org/trac/boost/ticket/7528 -// Here we can use machine/_types.h, see: -// http://stackoverflow.com/questions/6212951/endianness-of-android-ndk -# include "machine/_types.h" -# ifdef __ARMEB__ -# define BOOST_BIG_ENDIAN -# define BOOST_BYTE_ORDER 4321 -# else -# define BOOST_LITTLE_ENDIAN -# define BOOST_BYTE_ORDER 1234 -# endif // __ARMEB__ - -#elif defined( _XBOX ) -// -// XBox is always big endian?? -// -# define BOOST_BIG_ENDIAN -# define BOOST_BYTE_ORDER 4321 - -#elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) || \ - defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) || \ - defined(__BIGENDIAN__) && !defined(__LITTLEENDIAN__) || \ - defined(_STLP_BIG_ENDIAN) && !defined(_STLP_LITTLE_ENDIAN) -# define BOOST_BIG_ENDIAN -# define BOOST_BYTE_ORDER 4321 -#elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) || \ - defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) || \ - defined(__LITTLEENDIAN__) && !defined(__BIGENDIAN__) || \ - defined(_STLP_LITTLE_ENDIAN) && !defined(_STLP_BIG_ENDIAN) -# define BOOST_LITTLE_ENDIAN -# define BOOST_BYTE_ORDER 1234 -#elif defined(__sparc) || defined(__sparc__) \ - || defined(_POWER) || defined(__powerpc__) \ - || defined(__ppc__) || defined(__hpux) || defined(__hppa) \ - || defined(_MIPSEB) || defined(_POWER) \ - || defined(__s390__) || defined(__ARMEB__) -# define BOOST_BIG_ENDIAN -# define BOOST_BYTE_ORDER 4321 -#elif defined(__i386__) || defined(__alpha__) \ - || defined(__ia64) || defined(__ia64__) \ - || defined(_M_IX86) || defined(_M_IA64) \ - || defined(_M_ALPHA) || defined(__amd64) \ - || defined(__amd64__) || defined(_M_AMD64) \ - || defined(__x86_64) || defined(__x86_64__) \ - || defined(_M_X64) || defined(__bfin__) \ - || defined(__ARMEL__) \ - || (defined(_WIN32) && defined(__ARM__) && defined(_MSC_VER)) // ARM Windows CE don't define anything reasonably unique, but there are no big-endian Windows versions - -# define BOOST_LITTLE_ENDIAN -# define BOOST_BYTE_ORDER 1234 -#else -# error The file boost/detail/endian.hpp needs to be set up for your CPU type. -#endif - +// Use the Predef library for the detection of endianess. +#include #endif - diff --git a/3party/boost/boost/detail/fenv.hpp b/3party/boost/boost/detail/fenv.hpp index f048706416..b268f5c1cc 100644 --- a/3party/boost/boost/detail/fenv.hpp +++ b/3party/boost/boost/detail/fenv.hpp @@ -14,7 +14,7 @@ #if !defined(BOOST_DETAIL_FENV_HPP) #define BOOST_DETAIL_FENV_HPP -/* If we're using clang + glibc, we have to get hacky. +/* If we're using clang + glibc, we have to get hacky. * See http://llvm.org/bugs/show_bug.cgi?id=6907 */ #if defined(__clang__) && (__clang_major__ < 3) && \ defined(__GNU_LIBRARY__) && /* up to version 5 */ \ @@ -61,14 +61,41 @@ using ::feholdexcept; } } +#elif defined(__MINGW32__) && defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 + + // MinGW (32-bit) has a bug in mingw32/bits/c++config.h, it does not define _GLIBCXX_HAVE_FENV_H, + // which prevents the C fenv.h header contents to be included in the C++ wrapper header fenv.h. This is at least + // the case with gcc 4.8.1 packages tested so far, up to 4.8.1-4. Note that there is no issue with + // MinGW-w64. + // To work around the bug we avoid including the C++ wrapper header and include the C header directly + // and import all relevant symbols into std:: ourselves. + + #include <../include/fenv.h> + + namespace std { + using ::fenv_t; + using ::fexcept_t; + using ::fegetexceptflag; + using ::fesetexceptflag; + using ::feclearexcept; + using ::feraiseexcept; + using ::fetestexcept; + using ::fegetround; + using ::fesetround; + using ::fegetenv; + using ::fesetenv; + using ::feupdateenv; + using ::feholdexcept; + } + #else /* if we're not using GNU's C stdlib, fenv.h should work with clang */ + #if defined(__SUNPRO_CC) /* lol suncc */ #include #endif - + #include #endif #endif /* BOOST_DETAIL_FENV_HPP */ - diff --git a/3party/boost/boost/detail/identifier.hpp b/3party/boost/boost/detail/identifier.hpp index 688a664f7d..063d23801e 100644 --- a/3party/boost/boost/detail/identifier.hpp +++ b/3party/boost/boost/detail/identifier.hpp @@ -57,9 +57,7 @@ namespace boost identifier() {} explicit identifier( value_type v ) : m_value(v) {} - #if !defined(BOOST_MSVC) || BOOST_MSVC > 1300 // 1300 == VC++ 7.0 bug workaround private: - #endif T m_value; }; diff --git a/3party/boost/boost/detail/indirect_traits.hpp b/3party/boost/boost/detail/indirect_traits.hpp index f9c0cd6a04..7c8f76b09d 100644 --- a/3party/boost/boost/detail/indirect_traits.hpp +++ b/3party/boost/boost/detail/indirect_traits.hpp @@ -26,15 +26,11 @@ # include # include -# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# include -# endif namespace boost { namespace detail { namespace indirect_traits { -# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION template struct is_reference_to_const : mpl::false_ { @@ -199,284 +195,6 @@ struct is_pointer_to_class BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_class,(T)) }; -# else - -using namespace boost::detail::is_function_ref_tester_; - -typedef char (&inner_yes_type)[3]; -typedef char (&inner_no_type)[2]; -typedef char (&outer_no_type)[1]; - -template -struct is_const_help -{ - typedef typename mpl::if_< - is_const - , inner_yes_type - , inner_no_type - >::type type; -}; - -template -struct is_volatile_help -{ - typedef typename mpl::if_< - is_volatile - , inner_yes_type - , inner_no_type - >::type type; -}; - -template -struct is_pointer_help -{ - typedef typename mpl::if_< - is_pointer - , inner_yes_type - , inner_no_type - >::type type; -}; - -template -struct is_class_help -{ - typedef typename mpl::if_< - is_class - , inner_yes_type - , inner_no_type - >::type type; -}; - -template -struct is_reference_to_function_aux -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value = sizeof(detail::is_function_ref_tester(t,0)) == sizeof(::boost::type_traits::yes_type)); - typedef mpl::bool_ type; - }; - -template -struct is_reference_to_function - : mpl::if_, is_reference_to_function_aux, mpl::bool_ >::type -{ -}; - -template -struct is_pointer_to_function_aux -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof(::boost::type_traits::is_function_ptr_tester(t)) == sizeof(::boost::type_traits::yes_type)); - typedef mpl::bool_ type; -}; - -template -struct is_pointer_to_function - : mpl::if_, is_pointer_to_function_aux, mpl::bool_ >::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_function,(T)) -}; - -struct false_helper1 -{ - template - struct apply : mpl::false_ - { - }; -}; - -template -typename is_const_help::type reference_to_const_helper(V&); -outer_no_type -reference_to_const_helper(...); - -struct true_helper1 -{ - template - struct apply - { - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof(reference_to_const_helper(t)) == sizeof(inner_yes_type)); - typedef mpl::bool_ type; - }; -}; - -template -struct is_reference_to_const_helper1 : true_helper1 -{ -}; - -template <> -struct is_reference_to_const_helper1 : false_helper1 -{ -}; - - -template -struct is_reference_to_const - : is_reference_to_const_helper1::value>::template apply -{ -}; - - -template -struct is_reference_to_non_const_helper1 -{ - template - struct apply - { - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof(reference_to_const_helper(t)) == sizeof(inner_no_type)); - - typedef mpl::bool_ type; - }; -}; - -template <> -struct is_reference_to_non_const_helper1 : false_helper1 -{ -}; - - -template -struct is_reference_to_non_const - : is_reference_to_non_const_helper1::value>::template apply -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_non_const,(T)) -}; - - -template -typename is_volatile_help::type reference_to_volatile_helper(V&); -outer_no_type -reference_to_volatile_helper(...); - -template -struct is_reference_to_volatile_helper1 -{ - template - struct apply - { - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof(reference_to_volatile_helper(t)) == sizeof(inner_yes_type)); - typedef mpl::bool_ type; - }; -}; - -template <> -struct is_reference_to_volatile_helper1 : false_helper1 -{ -}; - - -template -struct is_reference_to_volatile - : is_reference_to_volatile_helper1::value>::template apply -{ -}; - -template -typename is_pointer_help::type reference_to_pointer_helper(V&); -outer_no_type reference_to_pointer_helper(...); - -template -struct reference_to_pointer_impl -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = (sizeof((reference_to_pointer_helper)(t)) == sizeof(inner_yes_type)) - ); - - typedef mpl::bool_ type; -}; - -template -struct is_reference_to_pointer - : mpl::eval_if, reference_to_pointer_impl, mpl::false_>::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_pointer,(T)) -}; - -template -struct is_reference_to_function_pointer - : mpl::eval_if, is_pointer_to_function_aux, mpl::false_>::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_function_pointer,(T)) -}; - - -template -struct is_member_function_pointer_help - : mpl::if_, inner_yes_type, inner_no_type> -{}; - -template -typename is_member_function_pointer_help::type member_function_pointer_helper(V&); -outer_no_type member_function_pointer_helper(...); - -template -struct is_pointer_to_member_function_aux -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = sizeof((member_function_pointer_helper)(t)) == sizeof(inner_yes_type)); - typedef mpl::bool_ type; -}; - -template -struct is_reference_to_member_function_pointer - : mpl::if_< - is_reference - , is_pointer_to_member_function_aux - , mpl::bool_ - >::type -{ - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T)) -}; - -template -typename is_class_help::type reference_to_class_helper(V const volatile&); -outer_no_type reference_to_class_helper(...); - -template -struct is_reference_to_class -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = (is_reference::value - & (sizeof(reference_to_class_helper(t)) == sizeof(inner_yes_type))) - ); - typedef mpl::bool_ type; - BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T)) -}; - -template -typename is_class_help::type pointer_to_class_helper(V const volatile*); -outer_no_type pointer_to_class_helper(...); - -template -struct is_pointer_to_class -{ - static T t; - BOOST_STATIC_CONSTANT( - bool, value - = (is_pointer::value - && sizeof(pointer_to_class_helper(t)) == sizeof(inner_yes_type)) - ); - typedef mpl::bool_ type; -}; -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } diff --git a/3party/boost/boost/detail/interlocked.hpp b/3party/boost/boost/detail/interlocked.hpp index 75e5a3061a..1152f710b1 100644 --- a/3party/boost/boost/detail/interlocked.hpp +++ b/3party/boost/boost/detail/interlocked.hpp @@ -1,12 +1,6 @@ #ifndef BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED #define BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED -// MS compatible compilers support #pragma once - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - // // boost/detail/interlocked.hpp // @@ -19,6 +13,11 @@ #include +// MS compatible compilers support #pragma once +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + #if defined( BOOST_USE_WINDOWS_H ) # include @@ -31,6 +30,30 @@ # define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER InterlockedCompareExchangePointer # define BOOST_INTERLOCKED_EXCHANGE_POINTER InterlockedExchangePointer +#elif defined( BOOST_USE_INTRIN_H ) + +#include + +# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement +# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange +# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange +# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd + +# if defined(_M_IA64) || defined(_M_AMD64) || defined(__x86_64__) || defined(__x86_64) + +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer +# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer + +# else + +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \ + ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare))) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \ + ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange))) + +# endif + #elif defined(_WIN32_WCE) #if _WIN32_WCE >= 0x600 @@ -71,7 +94,7 @@ extern "C" long __cdecl InterlockedExchangeAdd( long*, long ); #elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN ) -#if defined( BOOST_MSVC ) && BOOST_MSVC >= 1600 +#if defined( BOOST_MSVC ) && BOOST_MSVC >= 1500 #include @@ -93,20 +116,11 @@ extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long ); #endif -# pragma intrinsic( _InterlockedIncrement ) -# pragma intrinsic( _InterlockedDecrement ) -# pragma intrinsic( _InterlockedCompareExchange ) -# pragma intrinsic( _InterlockedExchange ) -# pragma intrinsic( _InterlockedExchangeAdd ) - # if defined(_M_IA64) || defined(_M_AMD64) extern "C" void* __cdecl _InterlockedCompareExchangePointer( void* volatile *, void*, void* ); extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* ); -# pragma intrinsic( _InterlockedCompareExchangePointer ) -# pragma intrinsic( _InterlockedExchangePointer ) - # define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer # define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer @@ -125,14 +139,30 @@ extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* ); # define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange # define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd +// Unlike __MINGW64__, __MINGW64_VERSION_MAJOR is defined by MinGW-w64 for both 32 and 64-bit targets. +#elif defined(__MINGW64_VERSION_MAJOR) + +// MinGW-w64 provides intrin.h for both 32 and 64-bit targets. +#include + +# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement +# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange +# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange +# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd +# if defined(__x86_64__) || defined(__x86_64) +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer +# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer +# else +# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \ + ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare))) +# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \ + ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange))) +# endif + #elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ ) -#if defined(__MINGW64__) -#define BOOST_INTERLOCKED_IMPORT -#else #define BOOST_INTERLOCKED_IMPORT __declspec(dllimport) -#endif - namespace boost { diff --git a/3party/boost/boost/detail/is_function_ref_tester.hpp b/3party/boost/boost/detail/is_function_ref_tester.hpp deleted file mode 100644 index 8e7d1d77f4..0000000000 --- a/3party/boost/boost/detail/is_function_ref_tester.hpp +++ /dev/null @@ -1,136 +0,0 @@ - -// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, -// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#if !defined(BOOST_PP_IS_ITERATING) - -///// header body - -#ifndef BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED -#define BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED - -#include "boost/type_traits/detail/yes_no_type.hpp" -#include "boost/type_traits/config.hpp" - -#if defined(BOOST_TT_PREPROCESSING_MODE) -# include "boost/preprocessor/iterate.hpp" -# include "boost/preprocessor/enum_params.hpp" -# include "boost/preprocessor/comma_if.hpp" -#endif - -namespace boost { -namespace detail { -namespace is_function_ref_tester_ { - -template -boost::type_traits::no_type BOOST_TT_DECL is_function_ref_tester(T& ...); - -#if !defined(BOOST_TT_PREPROCESSING_MODE) -// preprocessor-generated part, don't edit by hand! - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23), int); - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24), int); - -#else - -#define BOOST_PP_ITERATION_PARAMS_1 \ - (3, (0, 25, "boost/detail/is_function_ref_tester.hpp")) -#include BOOST_PP_ITERATE() - -#endif // BOOST_TT_PREPROCESSING_MODE - -} // namespace detail -} // namespace python -} // namespace boost - -#endif // BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED - -///// iteration - -#else -#define i BOOST_PP_FRAME_ITERATION(1) - -template -boost::type_traits::yes_type is_function_ref_tester(R (&)(BOOST_PP_ENUM_PARAMS(i,T)), int); - -#undef i -#endif // BOOST_PP_IS_ITERATING - diff --git a/3party/boost/boost/detail/is_incrementable.hpp b/3party/boost/boost/detail/is_incrementable.hpp index e7ef9dc625..6b36378fa2 100644 --- a/3party/boost/boost/detail/is_incrementable.hpp +++ b/3party/boost/boost/detail/is_incrementable.hpp @@ -55,8 +55,7 @@ namespace is_incrementable_ # endif -# if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \ - || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +# if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) # define BOOST_comma(a,b) (a) # else // In case an operator++ is found that returns void, we'll use ++x,0 diff --git a/3party/boost/boost/detail/is_xxx.hpp b/3party/boost/boost/detail/is_xxx.hpp index cb64fb32b8..3f9a1265ee 100644 --- a/3party/boost/boost/detail/is_xxx.hpp +++ b/3party/boost/boost/detail/is_xxx.hpp @@ -8,39 +8,6 @@ # include # include -# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -# include -# include - -# define BOOST_DETAIL_IS_XXX_DEF(name, qualified_name, nargs) \ -template \ -struct is_##name \ -{ \ - typedef char yes; \ - typedef char (&no)[2]; \ - \ - static typename add_reference::type dummy; \ - \ - struct helpers \ - { \ - template < BOOST_PP_ENUM_PARAMS_Z(1, nargs, class U) > \ - static yes test( \ - qualified_name< BOOST_PP_ENUM_PARAMS_Z(1, nargs, U) >&, int \ - ); \ - \ - template \ - static no test(U&, ...); \ - }; \ - \ - BOOST_STATIC_CONSTANT( \ - bool, value \ - = !is_reference::value \ - & (sizeof(helpers::test(dummy, 0)) == sizeof(yes))); \ - \ - typedef mpl::bool_ type; \ -}; - -# else # define BOOST_DETAIL_IS_XXX_DEF(name, qualified_name, nargs) \ template \ @@ -56,6 +23,5 @@ struct is_##name< \ { \ }; -# endif #endif // BOOST_DETAIL_IS_XXX_DWA20051011_HPP diff --git a/3party/boost/boost/detail/iterator.hpp b/3party/boost/boost/detail/iterator.hpp index 5bb9c6269c..c2e8f1e2a5 100644 --- a/3party/boost/boost/detail/iterator.hpp +++ b/3party/boost/boost/detail/iterator.hpp @@ -3,492 +3,24 @@ // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -// Boost versions of -// -// std::iterator_traits<>::iterator_category -// std::iterator_traits<>::difference_type -// std::distance() -// -// ...for all compilers and iterators -// -// Additionally, if X is a pointer -// std::iterator_traits::pointer - -// Otherwise, if partial specialization is supported or X is not a pointer -// std::iterator_traits::value_type -// std::iterator_traits::pointer -// std::iterator_traits::reference -// -// See http://www.boost.org for most recent version including documentation. - -// Revision History -// 04 Mar 2001 - More attempted fixes for Intel C++ (David Abrahams) -// 03 Mar 2001 - Put all implementation into namespace -// boost::detail::iterator_traits_. Some progress made on fixes -// for Intel compiler. (David Abrahams) -// 02 Mar 2001 - Changed BOOST_MSVC to BOOST_MSVC_STD_ITERATOR in a few -// places. (Jeremy Siek) -// 19 Feb 2001 - Improved workarounds for stock MSVC6; use yes_type and -// no_type from type_traits.hpp; stopped trying to remove_cv -// before detecting is_pointer, in honor of the new type_traits -// semantics. (David Abrahams) -// 13 Feb 2001 - Make it work with nearly all standard-conforming iterators -// under raw VC6. The one category remaining which will fail is -// that of iterators derived from std::iterator but not -// boost::iterator and which redefine difference_type. -// 11 Feb 2001 - Clean away code which can never be used (David Abrahams) -// 09 Feb 2001 - Always have a definition for each traits member, even if it -// can't be properly deduced. These will be incomplete types in -// some cases (undefined), but it helps suppress MSVC errors -// elsewhere (David Abrahams) -// 07 Feb 2001 - Support for more of the traits members where possible, making -// this useful as a replacement for std::iterator_traits when -// used as a default template parameter. -// 06 Feb 2001 - Removed useless #includes of standard library headers -// (David Abrahams) - #ifndef ITERATOR_DWA122600_HPP_ -# define ITERATOR_DWA122600_HPP_ +#define ITERATOR_DWA122600_HPP_ -# include -# include +// This header is obsolete and will be deprecated. -// STLPort 4.0 and betas have a bug when debugging is enabled and there is no -// partial specialization: instead of an iterator_category typedef, the standard -// container iterators have _Iterator_category. -// -// Also, whether debugging is enabled or not, there is a broken specialization -// of std::iterator which has no -// typedefs but iterator_category. -# if defined(__SGI_STL_PORT) +#include -# if (__SGI_STL_PORT <= 0x410) && !defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && defined(__STL_DEBUG) -# define BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF -# endif +namespace boost +{ -# define BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION +namespace detail +{ -# endif // STLPort <= 4.1b4 && no partial specialization - -# if !defined(BOOST_NO_STD_ITERATOR_TRAITS) \ - && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_MSVC_STD_ITERATOR) - -namespace boost { namespace detail { - -// Define a new template so it can be specialized -template -struct iterator_traits - : std::iterator_traits -{}; +using std::iterator_traits; using std::distance; -}} // namespace boost::detail +} // namespace detail -# else - -# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - && !defined(BOOST_MSVC_STD_ITERATOR) - -// This is the case where everything conforms except BOOST_NO_STD_ITERATOR_TRAITS - -namespace boost { namespace detail { - -// Rogue Wave Standard Library fools itself into thinking partial -// specialization is missing on some platforms (e.g. Sun), so fails to -// supply iterator_traits! -template -struct iterator_traits -{ - typedef typename Iterator::value_type value_type; - typedef typename Iterator::reference reference; - typedef typename Iterator::pointer pointer; - typedef typename Iterator::difference_type difference_type; - typedef typename Iterator::iterator_category iterator_category; -}; - -template -struct iterator_traits -{ - typedef T value_type; - typedef T& reference; - typedef T* pointer; - typedef std::ptrdiff_t difference_type; - typedef std::random_access_iterator_tag iterator_category; -}; - -template -struct iterator_traits -{ - typedef T value_type; - typedef T const& reference; - typedef T const* pointer; - typedef std::ptrdiff_t difference_type; - typedef std::random_access_iterator_tag iterator_category; -}; - -}} // namespace boost::detail - -# else - -# include -# include -# include - -# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -# include -# include -# endif -# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION -# include -# endif - -# include -# include -# include - -// should be the last #include -# include "boost/type_traits/detail/bool_trait_def.hpp" - -namespace boost { namespace detail { - -BOOST_MPL_HAS_XXX_TRAIT_DEF(value_type) -BOOST_MPL_HAS_XXX_TRAIT_DEF(reference) -BOOST_MPL_HAS_XXX_TRAIT_DEF(pointer) -BOOST_MPL_HAS_XXX_TRAIT_DEF(difference_type) -BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator_category) - -// is_mutable_iterator -- -// -// A metafunction returning true iff T is a mutable iterator type -// with a nested value_type. Will only work portably with iterators -// whose operator* returns a reference, but that seems to be OK for -// the iterators supplied by Dinkumware. Some input iterators may -// compile-time if they arrive here, and if the compiler is strict -// about not taking the address of an rvalue. - -// This one detects ordinary mutable iterators - the result of -// operator* is convertible to the value_type. -template -type_traits::yes_type is_mutable_iterator_helper(T const*, BOOST_DEDUCED_TYPENAME T::value_type*); - -// Since you can't take the address of an rvalue, the guts of -// is_mutable_iterator_impl will fail if we use &*t directly. This -// makes sure we can still work with non-lvalue iterators. -template T* mutable_iterator_lvalue_helper(T& x); -int mutable_iterator_lvalue_helper(...); - - -// This one detects output iterators such as ostream_iterator which -// return references to themselves. -template -type_traits::yes_type is_mutable_iterator_helper(T const*, T const*); - -type_traits::no_type is_mutable_iterator_helper(...); - -template -struct is_mutable_iterator_impl -{ - static T t; - - BOOST_STATIC_CONSTANT( - bool, value = sizeof( - detail::is_mutable_iterator_helper( - (T*)0 - , mutable_iterator_lvalue_helper(*t) // like &*t - )) - == sizeof(type_traits::yes_type) - ); -}; - -BOOST_TT_AUX_BOOL_TRAIT_DEF1( - is_mutable_iterator,T,::boost::detail::is_mutable_iterator_impl::value) - - -// is_full_iterator_traits -- -// -// A metafunction returning true iff T has all the requisite nested -// types to satisfy the requirements for a fully-conforming -// iterator_traits implementation. -template -struct is_full_iterator_traits_impl -{ - enum { value = - has_value_type::value - & has_reference::value - & has_pointer::value - & has_difference_type::value - & has_iterator_category::value - }; -}; - -BOOST_TT_AUX_BOOL_TRAIT_DEF1( - is_full_iterator_traits,T,::boost::detail::is_full_iterator_traits_impl::value) - - -# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF -BOOST_MPL_HAS_XXX_TRAIT_DEF(_Iterator_category) - -// is_stlport_40_debug_iterator -- -// -// A metafunction returning true iff T has all the requisite nested -// types to satisfy the requirements of an STLPort 4.0 debug iterator -// iterator_traits implementation. -template -struct is_stlport_40_debug_iterator_impl -{ - enum { value = - has_value_type::value - & has_reference::value - & has_pointer::value - & has_difference_type::value - & has__Iterator_category::value - }; -}; - -BOOST_TT_AUX_BOOL_TRAIT_DEF1( - is_stlport_40_debug_iterator,T,::boost::detail::is_stlport_40_debug_iterator_impl::value) - -template -struct stlport_40_debug_iterator_traits -{ - typedef typename T::value_type value_type; - typedef typename T::reference reference; - typedef typename T::pointer pointer; - typedef typename T::difference_type difference_type; - typedef typename T::_Iterator_category iterator_category; -}; -# endif // BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF - -template struct pointer_iterator_traits; - -# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -template -struct pointer_iterator_traits -{ - typedef typename remove_const::type value_type; - typedef T* pointer; - typedef T& reference; - typedef std::random_access_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; -}; -# else - -// In case of no template partial specialization, and if T is a -// pointer, iterator_traits::value_type can still be computed. For -// some basic types, remove_pointer is manually defined in -// type_traits/broken_compiler_spec.hpp. For others, do it yourself. - -template class please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee; - -template -struct pointer_value_type - : mpl::if_< - is_same::type> - , please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee

- , typename remove_const< - typename remove_pointer

::type - >::type - > -{ -}; - - -template -struct pointer_reference - : mpl::if_< - is_same::type> - , please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee

- , typename remove_pointer

::type& - > -{ -}; - -template -struct pointer_iterator_traits -{ - typedef T pointer; - typedef std::random_access_iterator_tag iterator_category; - typedef std::ptrdiff_t difference_type; - - typedef typename pointer_value_type::type value_type; - typedef typename pointer_reference::type reference; -}; - -# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - -// We'll sort iterator types into one of these classifications, from which we -// can determine the difference_type, pointer, reference, and value_type -template -struct standard_iterator_traits -{ - typedef typename Iterator::difference_type difference_type; - typedef typename Iterator::value_type value_type; - typedef typename Iterator::pointer pointer; - typedef typename Iterator::reference reference; - typedef typename Iterator::iterator_category iterator_category; -}; - -template -struct msvc_stdlib_mutable_traits - : std::iterator_traits -{ - typedef typename std::iterator_traits::distance_type difference_type; - typedef typename std::iterator_traits::value_type* pointer; - typedef typename std::iterator_traits::value_type& reference; -}; - -template -struct msvc_stdlib_const_traits - : std::iterator_traits -{ - typedef typename std::iterator_traits::distance_type difference_type; - typedef const typename std::iterator_traits::value_type* pointer; - typedef const typename std::iterator_traits::value_type& reference; -}; - -# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION -template -struct is_bad_output_iterator - : is_base_and_derived< - std::iterator - , Iterator> -{ -}; - -struct bad_output_iterator_traits -{ - typedef void value_type; - typedef void difference_type; - typedef std::output_iterator_tag iterator_category; - typedef void pointer; - typedef void reference; -}; -# endif - -// If we're looking at an MSVC6 (old Dinkumware) ``standard'' -// iterator, this will generate an appropriate traits class. -template -struct msvc_stdlib_iterator_traits - : mpl::if_< - is_mutable_iterator - , msvc_stdlib_mutable_traits - , msvc_stdlib_const_traits - >::type -{}; - -template -struct non_pointer_iterator_traits - : mpl::if_< - // if the iterator contains all the right nested types... - is_full_iterator_traits - // Use a standard iterator_traits implementation - , standard_iterator_traits -# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF - // Check for STLPort 4.0 broken _Iterator_category type - , mpl::if_< - is_stlport_40_debug_iterator - , stlport_40_debug_iterator_traits -# endif - // Otherwise, assume it's a Dinkum iterator - , msvc_stdlib_iterator_traits -# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF - >::type -# endif - >::type -{ -}; - -template -struct iterator_traits_aux - : mpl::if_< - is_pointer - , pointer_iterator_traits - , non_pointer_iterator_traits - >::type -{ -}; - -template -struct iterator_traits -{ - // Explicit forwarding from base class needed to keep MSVC6 happy - // under some circumstances. - private: -# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION - typedef - typename mpl::if_< - is_bad_output_iterator - , bad_output_iterator_traits - , iterator_traits_aux - >::type base; -# else - typedef iterator_traits_aux base; -# endif - public: - typedef typename base::value_type value_type; - typedef typename base::pointer pointer; - typedef typename base::reference reference; - typedef typename base::difference_type difference_type; - typedef typename base::iterator_category iterator_category; -}; - -// This specialization cuts off ETI (Early Template Instantiation) for MSVC. -template <> struct iterator_traits -{ - typedef int value_type; - typedef int pointer; - typedef int reference; - typedef int difference_type; - typedef int iterator_category; -}; - -}} // namespace boost::detail - -# endif // workarounds - -namespace boost { namespace detail { - -namespace iterator_traits_ -{ - template - struct distance_select - { - static Difference execute(Iterator i1, const Iterator i2, ...) - { - Difference result = 0; - while (i1 != i2) - { - ++i1; - ++result; - } - return result; - } - - static Difference execute(Iterator i1, const Iterator i2, std::random_access_iterator_tag*) - { - return i2 - i1; - } - }; -} // namespace boost::detail::iterator_traits_ - -template -inline typename iterator_traits::difference_type -distance(Iterator first, Iterator last) -{ - typedef typename iterator_traits::difference_type diff_t; - typedef typename ::boost::detail::iterator_traits::iterator_category iterator_category; - - return iterator_traits_::distance_select::execute( - first, last, (iterator_category*)0); -} - -}} - -# endif - - -# undef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF -# undef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION +} // namespace boost #endif // ITERATOR_DWA122600_HPP_ diff --git a/3party/boost/boost/detail/lightweight_test.hpp b/3party/boost/boost/detail/lightweight_test.hpp index 49dd5e45d2..9fece8ab7e 100644 --- a/3party/boost/boost/detail/lightweight_test.hpp +++ b/3party/boost/boost/detail/lightweight_test.hpp @@ -1,208 +1,17 @@ -#ifndef BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED -#define BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED +/* + * Copyright (c) 2014 Glen Fernandes + * + * Distributed under the Boost Software License, Version 1.0. (See + * accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ -// MS compatible compilers support #pragma once +#ifndef BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP +#define BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP + +// The header file at this path is deprecated; +// use boost/core/lightweight_test.hpp instead. + +#include -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once #endif - -// -// boost/detail/lightweight_test.hpp - lightweight test library -// -// Copyright (c) 2002, 2009 Peter Dimov -// Copyright (2) Beman Dawes 2010, 2011 -// Copyright (3) Ion Gaztanaga 2013 -// -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt -// -// --------------- -// -// If expression is false increases the error count -// and outputs a message containing 'expression' -// -// BOOST_TEST(expression) -// -// --------------- -// -// Increases error count and outputs a message containing 'message' -// -// BOOST_ERROR(message) -// -// --------------- -// -// If 'expr1' != 'expr2' increases the error count -// and outputs a message containing both expressions -// -// BOOST_TEST_EQ(expr1, expr2) -// -// --------------- -// -// If 'expr1' == 'expr2' increases the error count -// and outputs a message containing both expressions -// -// BOOST_TEST_NE(expr1, expr2) -// -// --------------- -// -// If BOOST_NO_EXCEPTIONS is NOT defined and if 'expr' does not -// throw an exception of type 'excep', increases the error count -// and outputs a message containing the expression. -// -// If BOOST_NO_EXCEPTIONS is defined, this macro expands to nothing -// and 'expr' is not evaluated. -// -// BOOST_TEST_THROWS(expr, excep) -// -// --------------- -// -// Returns the error count -// -// int boost::report_errors() -// - -#include -#include -#include -#include - -// IDE's like Visual Studio perform better if output goes to std::cout or -// some other stream, so allow user to configure output stream: -#ifndef BOOST_LIGHTWEIGHT_TEST_OSTREAM -# define BOOST_LIGHTWEIGHT_TEST_OSTREAM std::cerr -#endif - -namespace boost -{ - -namespace detail -{ - -struct report_errors_reminder -{ - bool called_report_errors_function; - report_errors_reminder() : called_report_errors_function(false) {} - ~report_errors_reminder() - { - BOOST_ASSERT(called_report_errors_function); // verify report_errors() was called - } -}; - -inline report_errors_reminder& report_errors_remind() -{ - static report_errors_reminder r; - return r; -} - -inline int & test_errors() -{ - static int x = 0; - report_errors_remind(); - return x; -} - -inline void test_failed_impl(char const * expr, char const * file, int line, char const * function) -{ - BOOST_LIGHTWEIGHT_TEST_OSTREAM - << file << "(" << line << "): test '" << expr << "' failed in function '" - << function << "'" << std::endl; - ++test_errors(); -} - -inline void error_impl(char const * msg, char const * file, int line, char const * function) -{ - BOOST_LIGHTWEIGHT_TEST_OSTREAM - << file << "(" << line << "): " << msg << " in function '" - << function << "'" << std::endl; - ++test_errors(); -} - -inline void throw_failed_impl(char const * excep, char const * file, int line, char const * function) -{ - BOOST_LIGHTWEIGHT_TEST_OSTREAM - << file << "(" << line << "): Exception '" << excep << "' not thrown in function '" - << function << "'" << std::endl; - ++test_errors(); -} - -template inline void test_eq_impl( char const * expr1, char const * expr2, - char const * file, int line, char const * function, T const & t, U const & u ) -{ - if( t == u ) - { - } - else - { - BOOST_LIGHTWEIGHT_TEST_OSTREAM - << file << "(" << line << "): test '" << expr1 << " == " << expr2 - << "' failed in function '" << function << "': " - << "'" << t << "' != '" << u << "'" << std::endl; - ++test_errors(); - } -} - -template inline void test_ne_impl( char const * expr1, char const * expr2, - char const * file, int line, char const * function, T const & t, U const & u ) -{ - if( t != u ) - { - } - else - { - BOOST_LIGHTWEIGHT_TEST_OSTREAM - << file << "(" << line << "): test '" << expr1 << " != " << expr2 - << "' failed in function '" << function << "': " - << "'" << t << "' == '" << u << "'" << std::endl; - ++test_errors(); - } -} - -} // namespace detail - -inline int report_errors() -{ - detail::report_errors_remind().called_report_errors_function = true; - - int errors = detail::test_errors(); - - if( errors == 0 ) - { - BOOST_LIGHTWEIGHT_TEST_OSTREAM - << "No errors detected." << std::endl; - return 0; - } - else - { - BOOST_LIGHTWEIGHT_TEST_OSTREAM - << errors << " error" << (errors == 1? "": "s") << " detected." << std::endl; - return 1; - } -} - -} // namespace boost - -#define BOOST_TEST(expr) ((expr)? (void)0: ::boost::detail::test_failed_impl(#expr, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION)) -#define BOOST_ERROR(msg) ::boost::detail::error_impl(msg, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) -#define BOOST_TEST_EQ(expr1,expr2) ( ::boost::detail::test_eq_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2) ) -#define BOOST_TEST_NE(expr1,expr2) ( ::boost::detail::test_ne_impl(#expr1, #expr2, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, expr1, expr2) ) -#ifndef BOOST_NO_EXCEPTIONS - #define BOOST_TEST_THROWS( EXPR, EXCEP ) \ - try { \ - EXPR; \ - ::boost::detail::throw_failed_impl \ - (#EXCEP, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION); \ - } \ - catch(EXCEP const&) { \ - } \ - catch(...) { \ - ::boost::detail::throw_failed_impl \ - (#EXCEP, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION); \ - } \ - // -#else - #define BOOST_TEST_THROWS( EXPR, EXCEP ) -#endif - -#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_TEST_HPP_INCLUDED diff --git a/3party/boost/boost/detail/limits.hpp b/3party/boost/boost/detail/limits.hpp deleted file mode 100644 index 6f018dfaca..0000000000 --- a/3party/boost/boost/detail/limits.hpp +++ /dev/null @@ -1,449 +0,0 @@ -// Copyright 2001 John Maddock -// Distributed under the Boost Software License, Version 1.0. (See accompany- -// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -/* - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -/* NOTE: This is not portable code. Parts of numeric_limits<> are - * inherently machine-dependent, and this file is written for the MIPS - * architecture and the SGI MIPSpro C++ compiler. Parts of it (in - * particular, some of the characteristics of floating-point types) - * are almost certainly incorrect for any other platform. - */ - -/* The above comment is almost certainly out of date. This file works - * on systems other than SGI MIPSpro C++ now. - */ - -/* - * Revision history: - * 21 Sep 2001: - * Only include if BOOST_NO_CWCHAR is defined. (Darin Adler) - * 10 Aug 2001: - * Added MIPS (big endian) to the big endian family. (Jens Maurer) - * 13 Apr 2001: - * Added powerpc to the big endian family. (Jeremy Siek) - * 5 Apr 2001: - * Added sparc (big endian) processor support (John Maddock). - * Initial sub: - * Modified by Jens Maurer for gcc 2.95 on x86. - */ - -#ifndef BOOST_SGI_CPP_LIMITS -#define BOOST_SGI_CPP_LIMITS - -#include -#include -#include -#include - -#ifndef BOOST_NO_CWCHAR -#include // for WCHAR_MIN and WCHAR_MAX -#endif - -namespace std { - -enum float_round_style { - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 -}; - -enum float_denorm_style { - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 -}; - -// The C++ standard (section 18.2.1) requires that some of the members of -// numeric_limits be static const data members that are given constant- -// initializers within the class declaration. On compilers where the -// BOOST_NO_INCLASS_MEMBER_INITIALIZATION macro is defined, it is impossible to write -// a standard-conforming numeric_limits class. -// -// There are two possible workarounds: either initialize the data -// members outside the class, or change them from data members to -// enums. Neither workaround is satisfactory: the former makes it -// impossible to use the data members in constant-expressions, and the -// latter means they have the wrong type and that it is impossible to -// take their addresses. We choose the former workaround. - -#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \ - enum { __mem_name = __mem_value } -#else /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */ -# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \ - static const __mem_type __mem_name = __mem_value -#endif /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */ - -// Base class for all specializations of numeric_limits. -template -class _Numeric_limits_base { -public: - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, false); - - static __number min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __number(); } - static __number max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __number(); } - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, 0); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, false); - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 0); - - static __number epsilon() throw() { return __number(); } - static __number round_error() throw() { return __number(); } - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, 0); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style, - has_denorm, - denorm_absent); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false); - - static __number infinity() throw() { return __number(); } - static __number quiet_NaN() throw() { return __number(); } - static __number signaling_NaN() throw() { return __number(); } - static __number denorm_min() throw() { return __number(); } - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, false); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false); - BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style, - round_style, - round_toward_zero); -}; - -// Base class for integers. - -template -class _Integer_limits : public _Numeric_limits_base<_Int> -{ -public: - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true); - - static _Int min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __imin; } - static _Int max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __imax; } - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, - digits, - (__idigits < 0) ? (int)(sizeof(_Int) * CHAR_BIT) - - (__imin == 0 ? 0 : 1) - : __idigits); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, (digits * 301) / 1000); - // log 2 = 0.301029995664... - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, __imin != 0); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, true); -}; - -#if defined(BOOST_BIG_ENDIAN) - - template - struct float_helper{ - static Number get_word() throw() { - // sizeof(long double) == 16 - const unsigned int _S_word[4] = { Word, 0, 0, 0 }; - return *reinterpret_cast(&_S_word); - } -}; - -#else - - template - struct float_helper{ - static Number get_word() throw() { - // sizeof(long double) == 12, but only 10 bytes significant - const unsigned int _S_word[4] = { 0, 0, 0, Word }; - return *reinterpret_cast( - reinterpret_cast(&_S_word)+16- - (sizeof(Number) == 12 ? 10 : sizeof(Number))); - } -}; - -#endif - -// Base class for floating-point numbers. -template -class _Floating_limits : public _Numeric_limits_base<__number> -{ -public: - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true); - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, __Digits); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, __Digits10); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, true); - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2); - - BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, __MinExp); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, __MaxExp); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, __MinExp10); - BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, __MaxExp10); - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style, - has_denorm, - denorm_indeterminate); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false); - - - static __number infinity() throw() { - return float_helper<__number, __InfinityWord>::get_word(); - } - static __number quiet_NaN() throw() { - return float_helper<__number,__QNaNWord>::get_word(); - } - static __number signaling_NaN() throw() { - return float_helper<__number,__SNaNWord>::get_word(); - } - - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, __IsIEC559); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false /* was: true */ ); - BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false); - - BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style, round_style, __RoundStyle); -}; - -// Class numeric_limits - -// The unspecialized class. - -template -class numeric_limits : public _Numeric_limits_base {}; - -// Specializations for all built-in integral types. - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -#ifndef BOOST_NO_INTRINSIC_WCHAR_T -template<> -class numeric_limits -#if !defined(WCHAR_MAX) || !defined(WCHAR_MIN) -#if defined(_WIN32) || defined(__CYGWIN__) - : public _Integer_limits -#elif defined(__hppa) -// wchar_t has "unsigned int" as the underlying type - : public _Integer_limits -#else -// assume that wchar_t has "int" as the underlying type - : public _Integer_limits -#endif -#else -// we have WCHAR_MIN and WCHAR_MAX defined, so use it - : public _Integer_limits -#endif -{}; -#endif - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -template<> -class numeric_limits - : public _Integer_limits -{}; - -#ifdef __GNUC__ - -// Some compilers have long long, but don't define the -// LONGLONG_MIN and LONGLONG_MAX macros in limits.h. This -// assumes that long long is 64 bits. -#if !defined(LONGLONG_MAX) && !defined(ULONGLONG_MAX) - -# define ULONGLONG_MAX 0xffffffffffffffffLLU -# define LONGLONG_MAX 0x7fffffffffffffffLL - -#endif - -#if !defined(LONGLONG_MIN) -# define LONGLONG_MIN (-LONGLONG_MAX - 1) -#endif - - -#if !defined(ULONGLONG_MIN) -# define ULONGLONG_MIN 0 -#endif - -#endif /* __GNUC__ */ - -// Specializations for all built-in floating-point type. - -template<> class numeric_limits - : public _Floating_limits -{ -public: - static float min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return FLT_MIN; } - static float denorm_min() throw() { return FLT_MIN; } - static float max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return FLT_MAX; } - static float epsilon() throw() { return FLT_EPSILON; } - static float round_error() throw() { return 0.5f; } // Units: ulps. -}; - -template<> class numeric_limits - : public _Floating_limits -{ -public: - static double min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return DBL_MIN; } - static double denorm_min() throw() { return DBL_MIN; } - static double max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return DBL_MAX; } - static double epsilon() throw() { return DBL_EPSILON; } - static double round_error() throw() { return 0.5; } // Units: ulps. -}; - -template<> class numeric_limits - : public _Floating_limits -{ -public: - static long double min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return LDBL_MIN; } - static long double denorm_min() throw() { return LDBL_MIN; } - static long double max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return LDBL_MAX; } - static long double epsilon() throw() { return LDBL_EPSILON; } - static long double round_error() throw() { return 4; } // Units: ulps. -}; - -} // namespace std - -#endif /* BOOST_SGI_CPP_LIMITS */ - -// Local Variables: -// mode:C++ -// End: - - - diff --git a/3party/boost/boost/detail/no_exceptions_support.hpp b/3party/boost/boost/detail/no_exceptions_support.hpp index d94e35834f..7d17454a73 100644 --- a/3party/boost/boost/detail/no_exceptions_support.hpp +++ b/3party/boost/boost/detail/no_exceptions_support.hpp @@ -1,87 +1,17 @@ -#ifndef BOOST_DETAIL_NO_EXCEPTIONS_SUPPORT_HPP_ -#define BOOST_DETAIL_NO_EXCEPTIONS_SUPPORT_HPP_ +/* + * Copyright (c) 2014 Glen Fernandes + * + * Distributed under the Boost Software License, Version 1.0. (See + * accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ + +#ifndef BOOST_DETAIL_NO_EXCEPTIONS_SUPPORT_HPP +#define BOOST_DETAIL_NO_EXCEPTIONS_SUPPORT_HPP + +// The header file at this path is deprecated; +// use boost/core/no_exceptions_support.hpp instead. + +#include -#if (defined _MSC_VER) && (_MSC_VER >= 1200) -# pragma once #endif - -//---------------------------------------------------------------------- -// (C) Copyright 2004 Pavel Vozenilek. -// Use, modification and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt -// or copy at http://www.boost.org/LICENSE_1_0.txt) -// -// -// This file contains helper macros used when exception support may be -// disabled (as indicated by macro BOOST_NO_EXCEPTIONS). -// -// Before picking up these macros you may consider using RAII techniques -// to deal with exceptions - their syntax can be always the same with -// or without exception support enabled. -// - -/* Example of use: - -void foo() { - BOOST_TRY { - ... - } BOOST_CATCH(const std::bad_alloc&) { - ... - BOOST_RETHROW - } BOOST_CATCH(const std::exception& e) { - ... - } - BOOST_CATCH_END -} - -With exception support enabled it will expand into: - -void foo() { - { try { - ... - } catch (const std::bad_alloc&) { - ... - throw; - } catch (const std::exception& e) { - ... - } - } -} - -With exception support disabled it will expand into: - -void foo() { - { if(true) { - ... - } else if (false) { - ... - } else if (false) { - ... - } - } -} -*/ -//---------------------------------------------------------------------- - -#include -#include - -#if !(defined BOOST_NO_EXCEPTIONS) -# define BOOST_TRY { try -# define BOOST_CATCH(x) catch(x) -# define BOOST_RETHROW throw; -# define BOOST_CATCH_END } -#else -# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) -# define BOOST_TRY { if ("") -# define BOOST_CATCH(x) else if (!"") -# else -# define BOOST_TRY { if (true) -# define BOOST_CATCH(x) else if (false) -# endif -# define BOOST_RETHROW -# define BOOST_CATCH_END } -#endif - - -#endif diff --git a/3party/boost/boost/detail/none_t.hpp b/3party/boost/boost/detail/none_t.hpp deleted file mode 100644 index 40805ec0ff..0000000000 --- a/3party/boost/boost/detail/none_t.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2003, Fernando Luis Cacciola Carballal. -// -// Use, modification, and distribution is subject to the Boost Software -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// See http://www.boost.org/libs/optional for documentation. -// -// You are welcome to contact the author at: -// fernando_cacciola@hotmail.com -// -#ifndef BOOST_DETAIL_NONE_T_17SEP2003_HPP -#define BOOST_DETAIL_NONE_T_17SEP2003_HPP - -namespace boost { - -namespace detail { - -struct none_helper{}; - -typedef int none_helper::*none_t ; - -} // namespace detail - -} // namespace boost - -#endif - diff --git a/3party/boost/boost/detail/numeric_traits.hpp b/3party/boost/boost/detail/numeric_traits.hpp index 6325d70cb0..2f97ebf9c8 100644 --- a/3party/boost/boost/detail/numeric_traits.hpp +++ b/3party/boost/boost/detail/numeric_traits.hpp @@ -74,7 +74,7 @@ namespace boost { namespace detail { template struct is_signed { -#if defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || defined(BOOST_MSVC) && BOOST_MSVC <= 1300 +#if defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) BOOST_STATIC_CONSTANT(bool, value = (Number(-1) < Number(0))); #else BOOST_STATIC_CONSTANT(bool, value = std::numeric_limits::is_signed); @@ -128,15 +128,6 @@ namespace boost { namespace detail { private: typedef Integer integer_type; typedef std::numeric_limits x; -# if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - // for some reason, MSVC asserts when it shouldn't unless we make these - // local definitions - BOOST_STATIC_CONSTANT(bool, is_integer = x::is_integer); - BOOST_STATIC_CONSTANT(bool, is_specialized = x::is_specialized); - - BOOST_STATIC_ASSERT(is_integer); - BOOST_STATIC_ASSERT(is_specialized); -# endif public: typedef typename if_true<(int(x::is_signed) diff --git a/3party/boost/boost/detail/ob_call_traits.hpp b/3party/boost/boost/detail/ob_call_traits.hpp deleted file mode 100644 index eb4df7a30f..0000000000 --- a/3party/boost/boost/detail/ob_call_traits.hpp +++ /dev/null @@ -1,168 +0,0 @@ -// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. -// Use, modification and distribution are subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt). -// -// See http://www.boost.org/libs/utility for most recent version including documentation. -// -// Crippled version for crippled compilers: -// see libs/utility/call_traits.htm -// - -/* Release notes: - 01st October 2000: - Fixed call_traits on VC6, using "poor man's partial specialisation", - using ideas taken from "Generative programming" by Krzysztof Czarnecki - & Ulrich Eisenecker. -*/ - -#ifndef BOOST_OB_CALL_TRAITS_HPP -#define BOOST_OB_CALL_TRAITS_HPP - -#ifndef BOOST_CONFIG_HPP -#include -#endif - -#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP -#include -#endif -#ifndef BOOST_COMPOSITE_TYPE_TRAITS_HPP -#include -#endif - -namespace boost{ - -#ifdef BOOST_MSVC6_MEMBER_TEMPLATES -// -// use member templates to emulate -// partial specialisation: -// -namespace detail{ - -template -struct standard_call_traits -{ - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef const T& param_type; -}; -template -struct simple_call_traits -{ - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef const T param_type; -}; -template -struct reference_call_traits -{ - typedef T value_type; - typedef T reference; - typedef T const_reference; - typedef T param_type; -}; - -template -struct call_traits_chooser -{ - template - struct rebind - { - typedef standard_call_traits type; - }; -}; - -template <> -struct call_traits_chooser -{ - template - struct rebind - { - typedef simple_call_traits type; - }; -}; - -template <> -struct call_traits_chooser -{ - template - struct rebind - { - typedef reference_call_traits type; - }; -}; - -template -struct call_traits_sizeof_chooser2 -{ - template - struct small_rebind - { - typedef simple_call_traits small_type; - }; -}; - -template<> -struct call_traits_sizeof_chooser2 -{ - template - struct small_rebind - { - typedef standard_call_traits small_type; - }; -}; - -template <> -struct call_traits_chooser -{ - template - struct rebind - { - enum { sizeof_choice = (sizeof(T) <= sizeof(void*)) }; - typedef call_traits_sizeof_chooser2<(sizeof(T) <= sizeof(void*))> chooser; - typedef typename chooser::template small_rebind bound_type; - typedef typename bound_type::small_type type; - }; -}; - -} // namespace detail -template -struct call_traits -{ -private: - typedef detail::call_traits_chooser< - ::boost::is_pointer::value, - ::boost::is_arithmetic::value, - ::boost::is_reference::value - > chooser; - typedef typename chooser::template rebind bound_type; - typedef typename bound_type::type call_traits_type; -public: - typedef typename call_traits_type::value_type value_type; - typedef typename call_traits_type::reference reference; - typedef typename call_traits_type::const_reference const_reference; - typedef typename call_traits_type::param_type param_type; -}; - -#else -// -// sorry call_traits is completely non-functional -// blame your broken compiler: -// - -template -struct call_traits -{ - typedef T value_type; - typedef T& reference; - typedef const T& const_reference; - typedef const T& param_type; -}; - -#endif // member templates - -} - -#endif // BOOST_OB_CALL_TRAITS_HPP diff --git a/3party/boost/boost/detail/ob_compressed_pair.hpp b/3party/boost/boost/detail/ob_compressed_pair.hpp index 727acab6da..326e454980 100644 --- a/3party/boost/boost/detail/ob_compressed_pair.hpp +++ b/3party/boost/boost/detail/ob_compressed_pair.hpp @@ -167,17 +167,6 @@ public: compressed_pair_1(const ::boost::compressed_pair& x) : T2(x.second()), _first(x.first()) {} -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 - // Total weirdness. If the assignment to _first is moved after - // the call to the inherited operator=, then this breaks graph/test/graph.cpp - // by way of iterator_adaptor. - compressed_pair_1& operator=(const compressed_pair_1& x) { - _first = x._first; - T2::operator=(x); - return *this; - } -#endif - first_reference first() { return _first; } first_const_reference first() const { return _first; } diff --git a/3party/boost/boost/detail/reference_content.hpp b/3party/boost/boost/detail/reference_content.hpp index daf56a8b19..36b80d244e 100644 --- a/3party/boost/boost/detail/reference_content.hpp +++ b/3party/boost/boost/detail/reference_content.hpp @@ -15,13 +15,8 @@ #include "boost/config.hpp" -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) # include "boost/mpl/bool.hpp" # include "boost/type_traits/has_nothrow_copy.hpp" -#else -# include "boost/mpl/if.hpp" -# include "boost/type_traits/is_reference.hpp" -#endif #include "boost/mpl/void.hpp" @@ -78,7 +73,6 @@ public: // queries template struct make_reference_content; -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template struct make_reference_content @@ -92,19 +86,6 @@ struct make_reference_content< T& > typedef reference_content type; }; -#else // defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - -template -struct make_reference_content - : mpl::if_< - is_reference - , reference_content - , T - > -{ -}; - -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION workaround template <> struct make_reference_content< mpl::void_ > @@ -124,7 +105,6 @@ struct make_reference_content< mpl::void_ > // reference_content type traits specializations // -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template struct has_nothrow_copy< @@ -134,7 +114,6 @@ struct has_nothrow_copy< { }; -#endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) } // namespace boost diff --git a/3party/boost/boost/detail/scoped_enum_emulation.hpp b/3party/boost/boost/detail/scoped_enum_emulation.hpp index d266e0e33c..1c7bc23c1c 100644 --- a/3party/boost/boost/detail/scoped_enum_emulation.hpp +++ b/3party/boost/boost/detail/scoped_enum_emulation.hpp @@ -1,337 +1,17 @@ -// scoped_enum_emulation.hpp ---------------------------------------------------------// - -// Copyright Beman Dawes, 2009 -// Copyright (C) 2011-2012 Vicente J. Botet Escriba -// Copyright (C) 2012 Anthony Williams - -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - /* -[section:scoped_enums Scoped Enums] + * Copyright (c) 2014 Andrey Semashev + * + * Distributed under the Boost Software License, Version 1.0. (See + * accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ -Generates C++0x scoped enums if the feature is present, otherwise emulates C++0x -scoped enums with C++03 namespaces and enums. The Boost.Config BOOST_NO_CXX11_SCOPED_ENUMS -macro is used to detect feature support. +#ifndef BOOST_DETAIL_SCOPED_ENUM_EMULATION_HPP +#define BOOST_DETAIL_SCOPED_ENUM_EMULATION_HPP -See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf for a -description of the scoped enum feature. Note that the committee changed the name -from strongly typed enum to scoped enum. +// The header file at this path is deprecated; +// use boost/core/scoped_enum.hpp instead. -Some of the enumerations defined in the standard library are scoped enums. - - enum class future_errc - { - broken_promise, - future_already_retrieved, - promise_already_satisfied, - no_state - }; - -On compilers that don't support them, the library provides two emulations: - -[heading Strict] - -* Able to specify the underlying type. -* explicit conversion to/from underlying type. -* The wrapper is not a C++03 enum type. - -The user can declare declare these types as - - BOOST_SCOPED_ENUM_DECLARE_BEGIN(future_errc) - { - broken_promise, - future_already_retrieved, - promise_already_satisfied, - no_state - } - BOOST_SCOPED_ENUM_DECLARE_END(future_errc) - -These macros allows to use 'future_errc' in almost all the cases as an scoped enum. - - future_errc err = future_errc::no_state; - -There are however some limitations: - -* The type is not a C++ enum, so 'is_enum' will be false_type. -* The emulated scoped enum can not be used in switch nor in template arguments. For these cases the user needs to use some macros. - -Instead of - - switch (ev) - { - case future_errc::broken_promise: - // ... - -use - - switch (boost::native_value(ev)) - { - case future_errc::broken_promise: - -And instead of - - #ifdef BOOST_NO_CXX11_SCOPED_ENUMS - template <> - struct BOOST_SYMBOL_VISIBLE is_error_code_enum : public true_type { }; - #endif - -use - - #ifdef BOOST_NO_CXX11_SCOPED_ENUMS - template <> - struct BOOST_SYMBOL_VISIBLE is_error_code_enum : public true_type { }; - #endif - - -Sample usage: - - BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(algae, char) { green, red, cyan }; BOOST_SCOPED_ENUM_DECLARE_END(algae) - ... - algae sample( algae::red ); - void foo( algae color ); - ... - sample = algae::green; - foo( algae::cyan ); - - Light - Caution: only the syntax is emulated; the semantics are not emulated and - the syntax emulation doesn't include being able to specify the underlying - representation type. - - The literal scoped emulation is via struct rather than namespace to allow use within classes. - Thanks to Andrey Semashev for pointing that out. - However the type is an real C++03 enum and so convertible implicitly to an int. - - Sample usage: - - BOOST_SCOPED_ENUM_START(algae) { green, red, cyan }; BOOST_SCOPED_ENUM_END - ... - BOOST_SCOPED_ENUM(algae) sample( algae::red ); - void foo( BOOST_SCOPED_ENUM(algae) color ); - ... - sample = algae::green; - foo( algae::cyan ); - - Helpful comments and suggestions were also made by Kjell Elster, Phil Endecott, - Joel Falcou, Mathias Gaunard, Felipe Magno de Almeida, Matt Calabrese, Vicente - Botet, and Daniel James. - -[endsect] -*/ - - -#ifndef BOOST_SCOPED_ENUM_EMULATION_HPP -#define BOOST_SCOPED_ENUM_EMULATION_HPP - -#include -#include - -namespace boost -{ - -#ifdef BOOST_NO_CXX11_SCOPED_ENUMS - /** - * Meta-function to get the underlying type of a scoped enum. - * - * Requires EnumType must be an enum type or the emulation of a scoped enum - */ - template - struct underlying_type - { - /** - * The member typedef type names the underlying type of EnumType. It is EnumType::underlying_type when the EnumType is an emulated scoped enum, - * std::underlying_type::type when the standard library std::underlying_type is provided. - * - * The user will need to specialize it when the compiler supports scoped enums but don't provides std::underlying_type. - */ - typedef typename EnumType::underlying_type type; - }; - - /** - * Meta-function to get the native enum type associated to an enum class or its emulation. - */ - template - struct native_type - { - /** - * The member typedef type names the native enum type associated to the scoped enum, - * which is it self if the compiler supports scoped enums or EnumType::enum_type if it is an emulated scoped enum. - */ - typedef typename EnumType::enum_type type; - }; - - /** - * Casts a scoped enum to its underlying type. - * - * This function is useful when working with scoped enum classes, which doens't implicitly convert to the underlying type. - * @param v A scoped enum. - * @returns The underlying type. - * @throws No-throws. - */ - template - UnderlyingType underlying_cast(EnumType v) - { - return v.get_underlying_value_(); - } - - /** - * Casts a scoped enum to its native enum type. - * - * This function is useful to make programs portable when the scoped enum emulation can not be use where native enums can. - * - * EnumType the scoped enum type - * - * @param v A scoped enum. - * @returns The native enum value. - * @throws No-throws. - */ - template - inline - typename EnumType::enum_type native_value(EnumType e) - { - return e.native_value_(); - } - -#else // BOOST_NO_CXX11_SCOPED_ENUMS - - template - struct underlying_type - { - //typedef typename std::underlying_type::type type; - }; - - template - struct native_type - { - typedef EnumType type; - }; - - template - UnderlyingType underlying_cast(EnumType v) - { - return static_cast(v); - } - - template - inline - EnumType native_value(EnumType e) - { - return e; - } +#include #endif -} - - -#ifdef BOOST_NO_CXX11_SCOPED_ENUMS - -#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS - -#define BOOST_SCOPED_ENUM_UT_DECLARE_CONVERSION_OPERATOR \ - explicit operator underlying_type() const { return get_underlying_value_(); } - -#else - -#define BOOST_SCOPED_ENUM_UT_DECLARE_CONVERSION_OPERATOR - -#endif - -/** - * Start a declaration of a scoped enum. - * - * @param EnumType The new scoped enum. - * @param UnderlyingType The underlying type. - */ -#define BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(EnumType, UnderlyingType) \ - struct EnumType { \ - typedef UnderlyingType underlying_type; \ - EnumType() BOOST_NOEXCEPT {} \ - explicit EnumType(underlying_type v) : v_(v) {} \ - underlying_type get_underlying_value_() const { return v_; } \ - BOOST_SCOPED_ENUM_UT_DECLARE_CONVERSION_OPERATOR \ - private: \ - underlying_type v_; \ - typedef EnumType self_type; \ - public: \ - enum enum_type - -#define BOOST_SCOPED_ENUM_DECLARE_END2() \ - enum_type get_native_value_() const BOOST_NOEXCEPT { return enum_type(v_); } \ - operator enum_type() const BOOST_NOEXCEPT { return get_native_value_(); } \ - friend bool operator ==(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)==enum_type(rhs.v_); } \ - friend bool operator ==(self_type lhs, enum_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)==rhs; } \ - friend bool operator ==(enum_type lhs, self_type rhs) BOOST_NOEXCEPT { return lhs==enum_type(rhs.v_); } \ - friend bool operator !=(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)!=enum_type(rhs.v_); } \ - friend bool operator !=(self_type lhs, enum_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)!=rhs; } \ - friend bool operator !=(enum_type lhs, self_type rhs) BOOST_NOEXCEPT { return lhs!=enum_type(rhs.v_); } \ - friend bool operator <(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)>enum_type(rhs.v_); } \ - friend bool operator >(self_type lhs, enum_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)>rhs; } \ - friend bool operator >(enum_type lhs, self_type rhs) BOOST_NOEXCEPT { return lhs>enum_type(rhs.v_); } \ - friend bool operator >=(self_type lhs, self_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)>=enum_type(rhs.v_); } \ - friend bool operator >=(self_type lhs, enum_type rhs) BOOST_NOEXCEPT { return enum_type(lhs.v_)>=rhs; } \ - friend bool operator >=(enum_type lhs, self_type rhs) BOOST_NOEXCEPT { return lhs>=enum_type(rhs.v_); } \ - }; - -#define BOOST_SCOPED_ENUM_DECLARE_END(EnumType) \ - ; \ - EnumType(enum_type v) BOOST_NOEXCEPT : v_(v) {} \ - BOOST_SCOPED_ENUM_DECLARE_END2() - -/** - * Starts a declaration of a scoped enum with the default int underlying type. - * - * @param EnumType The new scoped enum. - */ -#define BOOST_SCOPED_ENUM_DECLARE_BEGIN(EnumType) \ - BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(EnumType,int) - -/** - * Name of the native enum type. - * - * @param NT The new scoped enum. - */ -#define BOOST_SCOPED_ENUM_NATIVE(EnumType) EnumType::enum_type -/** - * Forward declares an scoped enum. - * - * @param NT The scoped enum. - */ -#define BOOST_SCOPED_ENUM_FORWARD_DECLARE(EnumType) struct EnumType - -#else // BOOST_NO_CXX11_SCOPED_ENUMS - -#define BOOST_SCOPED_ENUM_UT_DECLARE_BEGIN(EnumType,UnderlyingType) enum class EnumType:UnderlyingType -#define BOOST_SCOPED_ENUM_DECLARE_BEGIN(EnumType) enum class EnumType -#define BOOST_SCOPED_ENUM_DECLARE_END2() -#define BOOST_SCOPED_ENUM_DECLARE_END(EnumType) ; - -#define BOOST_SCOPED_ENUM_NATIVE(EnumType) EnumType -#define BOOST_SCOPED_ENUM_FORWARD_DECLARE(EnumType) enum class EnumType - -#endif // BOOST_NO_CXX11_SCOPED_ENUMS - -#define BOOST_SCOPED_ENUM_START(name) BOOST_SCOPED_ENUM_DECLARE_BEGIN(name) -#define BOOST_SCOPED_ENUM_END BOOST_SCOPED_ENUM_DECLARE_END2() -#define BOOST_SCOPED_ENUM(name) BOOST_SCOPED_ENUM_NATIVE(name) - -//#ifdef BOOST_NO_CXX11_SCOPED_ENUMS -// -//# define BOOST_SCOPED_ENUM_START(name) struct name { enum enum_type -//# define BOOST_SCOPED_ENUM_END }; -//# define BOOST_SCOPED_ENUM(name) name::enum_type -// -//#else -// -//# define BOOST_SCOPED_ENUM_START(name) enum class name -//# define BOOST_SCOPED_ENUM_END -//# define BOOST_SCOPED_ENUM(name) name -// -//#endif -#endif // BOOST_SCOPED_ENUM_EMULATION_HPP diff --git a/3party/boost/boost/detail/sp_typeinfo.hpp b/3party/boost/boost/detail/sp_typeinfo.hpp index 43fae78ef1..4e4de55b05 100644 --- a/3party/boost/boost/detail/sp_typeinfo.hpp +++ b/3party/boost/boost/detail/sp_typeinfo.hpp @@ -9,18 +9,15 @@ // detail/sp_typeinfo.hpp // +// Deprecated, please use boost/core/typeinfo.hpp +// // Copyright 2007 Peter Dimov // -// Distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) -#include - -#if defined( BOOST_NO_TYPEID ) - -#include -#include +#include namespace boost { @@ -28,108 +25,12 @@ namespace boost namespace detail { -class sp_typeinfo -{ -private: - - sp_typeinfo( sp_typeinfo const& ); - sp_typeinfo& operator=( sp_typeinfo const& ); - - char const * name_; - -public: - - explicit sp_typeinfo( char const * name ): name_( name ) - { - } - - bool operator==( sp_typeinfo const& rhs ) const - { - return this == &rhs; - } - - bool operator!=( sp_typeinfo const& rhs ) const - { - return this != &rhs; - } - - bool before( sp_typeinfo const& rhs ) const - { - return std::less< sp_typeinfo const* >()( this, &rhs ); - } - - char const* name() const - { - return name_; - } -}; - -template struct sp_typeid_ -{ - static sp_typeinfo ti_; - - static char const * name() - { - return BOOST_CURRENT_FUNCTION; - } -}; - -#if defined(__SUNPRO_CC) -// see #4199, the Sun Studio compiler gets confused about static initialization -// constructor arguments. But an assignment works just fine. -template sp_typeinfo sp_typeid_< T >::ti_ = sp_typeid_< T >::name(); -#else -template sp_typeinfo sp_typeid_< T >::ti_(sp_typeid_< T >::name()); -#endif - -template struct sp_typeid_< T & >: sp_typeid_< T > -{ -}; - -template struct sp_typeid_< T const >: sp_typeid_< T > -{ -}; - -template struct sp_typeid_< T volatile >: sp_typeid_< T > -{ -}; - -template struct sp_typeid_< T const volatile >: sp_typeid_< T > -{ -}; +typedef boost::core::typeinfo sp_typeinfo; } // namespace detail } // namespace boost -#define BOOST_SP_TYPEID(T) (boost::detail::sp_typeid_::ti_) - -#else - -#include - -namespace boost -{ - -namespace detail -{ - -#if defined( BOOST_NO_STD_TYPEINFO ) - -typedef ::type_info sp_typeinfo; - -#else - -typedef std::type_info sp_typeinfo; - -#endif - -} // namespace detail - -} // namespace boost - -#define BOOST_SP_TYPEID(T) typeid(T) - -#endif +#define BOOST_SP_TYPEID(T) BOOST_CORE_TYPEID(T) #endif // #ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED diff --git a/3party/boost/boost/detail/utf8_codecvt_facet.hpp b/3party/boost/boost/detail/utf8_codecvt_facet.hpp index b777ff934e..753b339336 100644 --- a/3party/boost/boost/detail/utf8_codecvt_facet.hpp +++ b/3party/boost/boost/detail/utf8_codecvt_facet.hpp @@ -122,9 +122,13 @@ protected: ) const; virtual std::codecvt_base::result do_out( - std::mbstate_t & state, const wchar_t * from, - const wchar_t * from_end, const wchar_t* & from_next, - char * to, char * to_end, char * & to_next + std::mbstate_t & state, + const wchar_t * from, + const wchar_t * from_end, + const wchar_t* & from_next, + char * to, + char * to_end, + char * & to_next ) const; bool invalid_continuing_octet(unsigned char octet_1) const { @@ -137,17 +141,19 @@ protected: } // continuing octets = octets except for the leading octet - static unsigned int get_cont_octet_count(unsigned char lead_octet) { + static unsigned int get_cont_octet_count(unsigned char lead_octet) { return get_octet_count(lead_octet) - 1; } - static unsigned int get_octet_count(unsigned char lead_octet); + static unsigned int get_octet_count(unsigned char lead_octet); // How many "continuing octets" will be needed for this word // == total octets - 1. int get_cont_octet_out_count(wchar_t word) const ; - virtual bool do_always_noconv() const throw() { return false; } + virtual bool do_always_noconv() const BOOST_NOEXCEPT_OR_NOTHROW { + return false; + } // UTF-8 isn't really stateful since we rewind on partial conversions virtual std::codecvt_base::result do_unshift( @@ -155,13 +161,12 @@ protected: char * from, char * /*to*/, char * & next - ) const - { + ) const { next = from; return ok; } - virtual int do_encoding() const throw() { + virtual int do_encoding() const BOOST_NOEXCEPT_OR_NOTHROW { const int variable_byte_external_encoding=0; return variable_byte_external_encoding; } @@ -173,14 +178,10 @@ protected: const char * from, const char * from_end, std::size_t max_limit -#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) - ) const throw(); -#else - ) const; -#endif + ) const; // Largest possible value do_length(state,from,from_end,1) could return. - virtual int do_max_length() const throw () { + virtual int do_max_length() const BOOST_NOEXCEPT_OR_NOTHROW { return 6; // largest UTF-8 encoding of a UCS-4 character } }; diff --git a/3party/boost/boost/detail/utf8_codecvt_facet.ipp b/3party/boost/boost/detail/utf8_codecvt_facet.ipp index 064fdaf58e..8a13124657 100644 --- a/3party/boost/boost/detail/utf8_codecvt_facet.ipp +++ b/3party/boost/boost/detail/utf8_codecvt_facet.ipp @@ -171,14 +171,13 @@ std::codecvt_base::result utf8_codecvt_facet::do_out( // How many char objects can I process to get <= max_limit // wchar_t objects? int utf8_codecvt_facet::do_length( - BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &, + const std::mbstate_t &, const char * from, const char * from_end, std::size_t max_limit -#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) -) const throw() -#else ) const +#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) + throw() #endif { // RG - this code is confusing! I need a better way to express it. diff --git a/3party/boost/boost/detail/win/dll.hpp b/3party/boost/boost/detail/win/dll.hpp deleted file mode 100644 index 605a1bf596..0000000000 --- a/3party/boost/boost/detail/win/dll.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// dll.hpp --------------------------------------------------------------// - -// Copyright 2010 Vicente J. Botet Escriba - -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - - -#ifndef BOOST_DETAIL_WIN_DLL_HPP -#define BOOST_DETAIL_WIN_DLL_HPP - -#include -#include - -namespace boost -{ -namespace detail -{ -namespace win32 -{ -#if defined( BOOST_USE_WINDOWS_H ) - using ::LoadLibrary; - using ::FreeLibrary; - using ::GetProcAddress; - using ::GetModuleHandleA; -#else -extern "C" { - __declspec(dllimport) HMODULE_ __stdcall - LoadLibrary( - LPCTSTR_ lpFileName - ); - __declspec(dllimport) BOOL_ __stdcall - FreeLibrary( - HMODULE_ hModule - ); - __declspec(dllimport) FARPROC_ __stdcall - GetProcAddress( - HMODULE_ hModule, - LPCSTR_ lpProcName - ); - __declspec(dllimport) FARPROC_ __stdcall - GetModuleHandleA( - LPCSTR_ lpProcName - ); - -} -#endif -} -} -} - -#endif // BOOST_DETAIL_WIN_THREAD_HPP diff --git a/3party/boost/boost/detail/win/handles.hpp b/3party/boost/boost/detail/win/handles.hpp deleted file mode 100644 index 1441d10a2c..0000000000 --- a/3party/boost/boost/detail/win/handles.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// memory.hpp --------------------------------------------------------------// - -// Copyright 2010 Vicente J. Botet Escriba - -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - - -#ifndef BOOST_DETAIL_WIN_HANDLES_HPP -#define BOOST_DETAIL_WIN_HANDLES_HPP - -#include - - -namespace boost -{ -namespace detail -{ -namespace win32 -{ -#if defined( BOOST_USE_WINDOWS_H ) - using ::CloseHandle; - using ::DuplicateHandle; -#else -extern "C" { - __declspec(dllimport) int __stdcall - CloseHandle(void*); - __declspec(dllimport) int __stdcall - DuplicateHandle(void*,void*,void*,void**,unsigned long,int,unsigned long); -} - -#endif -} -} -} - -#endif // BOOST_DETAIL_WIN_HANDLES_HPP diff --git a/3party/boost/boost/detail/win/synchronization.hpp b/3party/boost/boost/detail/win/synchronization.hpp deleted file mode 100644 index 8fe015b353..0000000000 --- a/3party/boost/boost/detail/win/synchronization.hpp +++ /dev/null @@ -1,125 +0,0 @@ -// synchronizaion.hpp --------------------------------------------------------------// - -// Copyright 2010 Vicente J. Botet Escriba - -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - - -#ifndef BOOST_DETAIL_WIN_SYNCHRONIZATION_HPP -#define BOOST_DETAIL_WIN_SYNCHRONIZATION_HPP - -#include - - -namespace boost -{ -namespace detail -{ -namespace win32 -{ -#if defined( BOOST_USE_WINDOWS_H ) - typedef ::CRITICAL_SECTION CRITICAL_SECTION_; - typedef ::PAPCFUNC PAPCFUNC_; - - using ::InitializeCriticalSection; - using ::EnterCriticalSection; - using ::TryEnterCriticalSection; - using ::LeaveCriticalSection; - using ::DeleteCriticalSection; - -# ifdef BOOST_NO_ANSI_APIS - using ::CreateMutexW; - using ::CreateEventW; - using ::OpenEventW; - using ::CreateSemaphoreW; -# else - using ::CreateMutexA; - using ::CreateEventA; - using ::OpenEventA; - using ::CreateSemaphoreA; -# endif - using ::ReleaseMutex; - using ::ReleaseSemaphore; - using ::SetEvent; - using ::ResetEvent; - using ::WaitForMultipleObjects; - using ::WaitForSingleObject; - using ::QueueUserAPC; -#else -extern "C" { - struct CRITICAL_SECTION_ - { - struct critical_section_debug * DebugInfo; - long LockCount; - long RecursionCount; - void * OwningThread; - void * LockSemaphore; - #if defined(_WIN64) - unsigned __int64 SpinCount; - #else - unsigned long SpinCount; - #endif - }; - - __declspec(dllimport) void __stdcall - InitializeCriticalSection(CRITICAL_SECTION_ *); - __declspec(dllimport) void __stdcall - EnterCriticalSection(CRITICAL_SECTION_ *); - __declspec(dllimport) bool __stdcall - TryEnterCriticalSection(CRITICAL_SECTION_ *); - __declspec(dllimport) void __stdcall - LeaveCriticalSection(CRITICAL_SECTION_ *); - __declspec(dllimport) void __stdcall - DeleteCriticalSection(CRITICAL_SECTION_ *); - - struct _SECURITY_ATTRIBUTES; -# ifdef BOOST_NO_ANSI_APIS - __declspec(dllimport) void* __stdcall - CreateMutexW(_SECURITY_ATTRIBUTES*,int,wchar_t const*); - __declspec(dllimport) void* __stdcall - CreateSemaphoreW(_SECURITY_ATTRIBUTES*,long,long,wchar_t const*); - __declspec(dllimport) void* __stdcall - CreateEventW(_SECURITY_ATTRIBUTES*,int,int,wchar_t const*); - __declspec(dllimport) void* __stdcall - OpenEventW(unsigned long,int,wchar_t const*); -# else - __declspec(dllimport) void* __stdcall - CreateMutexA(_SECURITY_ATTRIBUTES*,int,char const*); - __declspec(dllimport) void* __stdcall - CreateSemaphoreA(_SECURITY_ATTRIBUTES*,long,long,char const*); - __declspec(dllimport) void* __stdcall - CreateEventA(_SECURITY_ATTRIBUTES*,int,int,char const*); - __declspec(dllimport) void* __stdcall - OpenEventA(unsigned long,int,char const*); -# endif - __declspec(dllimport) int __stdcall - ReleaseMutex(void*); - __declspec(dllimport) unsigned long __stdcall - WaitForSingleObject(void*,unsigned long); - __declspec(dllimport) unsigned long __stdcall - WaitForMultipleObjects(unsigned long nCount, - void* const * lpHandles, - int bWaitAll, - unsigned long dwMilliseconds); - __declspec(dllimport) int __stdcall - ReleaseSemaphore(void*,long,long*); - typedef void (__stdcall *PAPCFUNC8)(ulong_ptr); - __declspec(dllimport) unsigned long __stdcall - QueueUserAPC(PAPCFUNC8,void*,ulong_ptr); -# ifndef UNDER_CE - __declspec(dllimport) int __stdcall - SetEvent(void*); - __declspec(dllimport) int __stdcall - ResetEvent(void*); -# else - using ::SetEvent; - using ::ResetEvent; -# endif -} -#endif -} -} -} - -#endif // BOOST_DETAIL_WIN_SYNCHRONIZATION_HPP diff --git a/3party/boost/boost/detail/win/thread.hpp b/3party/boost/boost/detail/win/thread.hpp deleted file mode 100644 index 4e1bf307f9..0000000000 --- a/3party/boost/boost/detail/win/thread.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// thread.hpp --------------------------------------------------------------// - -// Copyright 2010 Vicente J. Botet Escriba - -// Distributed under the Boost Software License, Version 1.0. -// See http://www.boost.org/LICENSE_1_0.txt - - -#ifndef BOOST_DETAIL_WIN_THREAD_HPP -#define BOOST_DETAIL_WIN_THREAD_HPP - -#include -#include - -namespace boost -{ -namespace detail -{ -namespace win32 -{ -#if defined( BOOST_USE_WINDOWS_H ) - using ::GetCurrentThreadId; - using ::SleepEx; - using ::Sleep; -#else -extern "C" { -# ifndef UNDER_CE - __declspec(dllimport) unsigned long __stdcall - GetCurrentThreadId(void); - __declspec(dllimport) unsigned long __stdcall - SleepEx(unsigned long,int); - __declspec(dllimport) void __stdcall - Sleep(unsigned long); -#else - using ::GetCurrentThreadId; - using ::SleepEx; - using ::Sleep; -#endif -} -#endif -} -} -} - -#endif // BOOST_DETAIL_WIN_THREAD_HPP diff --git a/3party/boost/boost/detail/win/GetCurrentProcess.hpp b/3party/boost/boost/detail/winapi/GetCurrentProcess.hpp similarity index 62% rename from 3party/boost/boost/detail/win/GetCurrentProcess.hpp rename to 3party/boost/boost/detail/winapi/GetCurrentProcess.hpp index a76eb06e8f..51206bb4e8 100644 --- a/3party/boost/boost/detail/win/GetCurrentProcess.hpp +++ b/3party/boost/boost/detail/winapi/GetCurrentProcess.hpp @@ -6,14 +6,18 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_GETCURRENTPROCESS_HPP -#define BOOST_DETAIL_WIN_GETCURRENTPROCESS_HPP +#ifndef BOOST_DETAIL_WINAPI_GETCURRENTPROCESS_HPP +#define BOOST_DETAIL_WINAPI_GETCURRENTPROCESS_HPP -#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) using ::GetCurrentProcess; #else @@ -22,4 +26,4 @@ namespace win32 { } } } -#endif // BOOST_DETAIL_WIN_TIME_HPP +#endif // BOOST_DETAIL_WINAPI_GETCURRENTPROCESS_HPP diff --git a/3party/boost/boost/detail/win/GetCurrentThread.hpp b/3party/boost/boost/detail/winapi/GetCurrentThread.hpp similarity index 70% rename from 3party/boost/boost/detail/win/GetCurrentThread.hpp rename to 3party/boost/boost/detail/winapi/GetCurrentThread.hpp index cdc6d36c78..595b751d13 100644 --- a/3party/boost/boost/detail/win/GetCurrentThread.hpp +++ b/3party/boost/boost/detail/winapi/GetCurrentThread.hpp @@ -6,14 +6,18 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_GETCURRENTTHREAD_HPP -#define BOOST_DETAIL_WIN_GETCURRENTTHREAD_HPP +#ifndef BOOST_DETAIL_WINAPI_GETCURRENTTHREAD_HPP +#define BOOST_DETAIL_WINAPI_GETCURRENTTHREAD_HPP -#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if defined( UNDER_CE ) // Windows CE define GetCurrentThread as an inline function in kfuncs.h inline HANDLE_ GetCurrentThread() @@ -31,4 +35,4 @@ inline HANDLE_ GetCurrentThread() } } -#endif // BOOST_DETAIL_WIN_TIME_HPP +#endif // BOOST_DETAIL_WINAPI_GETCURRENTTHREAD_HPP diff --git a/3party/boost/boost/detail/win/GetLastError.hpp b/3party/boost/boost/detail/winapi/GetLastError.hpp similarity index 63% rename from 3party/boost/boost/detail/win/GetLastError.hpp rename to 3party/boost/boost/detail/winapi/GetLastError.hpp index d040abf50d..6e9e2d998a 100644 --- a/3party/boost/boost/detail/win/GetLastError.hpp +++ b/3party/boost/boost/detail/winapi/GetLastError.hpp @@ -6,14 +6,18 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_GETLASTERROR_HPP -#define BOOST_DETAIL_WIN_GETLASTERROR_HPP +#ifndef BOOST_DETAIL_WINAPI_GETLASTERROR_HPP +#define BOOST_DETAIL_WINAPI_GETLASTERROR_HPP -#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) using ::GetLastError; #else @@ -24,4 +28,4 @@ namespace win32 { } } -#endif // BOOST_DETAIL_WIN_TIME_HPP +#endif // BOOST_DETAIL_WINAPI_GETLASTERROR_HPP diff --git a/3party/boost/boost/detail/win/GetProcessTimes.hpp b/3party/boost/boost/detail/winapi/GetProcessTimes.hpp similarity index 73% rename from 3party/boost/boost/detail/win/GetProcessTimes.hpp rename to 3party/boost/boost/detail/winapi/GetProcessTimes.hpp index 8d76995893..f2860b06bd 100644 --- a/3party/boost/boost/detail/win/GetProcessTimes.hpp +++ b/3party/boost/boost/detail/winapi/GetProcessTimes.hpp @@ -6,14 +6,18 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_GETPROCESSTIMES_HPP -#define BOOST_DETAIL_WIN_GETPROCESSTIMES_HPP +#ifndef BOOST_DETAIL_WINAPI_GETPROCESSTIMES_HPP +#define BOOST_DETAIL_WINAPI_GETPROCESSTIMES_HPP -#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if !defined(UNDER_CE) // Windows CE does not define GetProcessTimes #if defined( BOOST_USE_WINDOWS_H ) using ::GetProcessTimes; @@ -32,4 +36,4 @@ namespace win32 { } } -#endif // BOOST_DETAIL_WIN_GETPROCESSTIMES_HPP +#endif // BOOST_DETAIL_WINAPI_GETPROCESSTIMES_HPP diff --git a/3party/boost/boost/detail/win/GetThreadTimes.hpp b/3party/boost/boost/detail/winapi/GetThreadTimes.hpp similarity index 71% rename from 3party/boost/boost/detail/win/GetThreadTimes.hpp rename to 3party/boost/boost/detail/winapi/GetThreadTimes.hpp index cf19c462ed..3428edad22 100644 --- a/3party/boost/boost/detail/win/GetThreadTimes.hpp +++ b/3party/boost/boost/detail/winapi/GetThreadTimes.hpp @@ -6,14 +6,18 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_GETTHREADTIMES_HPP -#define BOOST_DETAIL_WIN_GETTHREADTIMES_HPP +#ifndef BOOST_DETAIL_WINAPI_GETTHREADTIMES_HPP +#define BOOST_DETAIL_WINAPI_GETTHREADTIMES_HPP -#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) using ::GetThreadTimes; #else @@ -30,4 +34,4 @@ namespace win32 { } } -#endif // BOOST_DETAIL_WIN_GETTHREADTIMES_HPP +#endif // BOOST_DETAIL_WINAPI_GETTHREADTIMES_HPP diff --git a/3party/boost/boost/detail/win/LocalFree.hpp b/3party/boost/boost/detail/winapi/LocalFree.hpp similarity index 67% rename from 3party/boost/boost/detail/win/LocalFree.hpp rename to 3party/boost/boost/detail/winapi/LocalFree.hpp index da1c77b669..697016c0c6 100644 --- a/3party/boost/boost/detail/win/LocalFree.hpp +++ b/3party/boost/boost/detail/winapi/LocalFree.hpp @@ -6,14 +6,18 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_LOCALFREE_HPP -#define BOOST_DETAIL_WIN_LOCALFREE_HPP +#ifndef BOOST_DETAIL_WINAPI_LOCALFREE_HPP +#define BOOST_DETAIL_WINAPI_LOCALFREE_HPP -#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) typedef HANDLE_ HLOCAL_; @@ -26,4 +30,4 @@ namespace win32 { } } } -#endif // BOOST_DETAIL_WIN_LOCALFREE_HPP +#endif // BOOST_DETAIL_WINAPI_LOCALFREE_HPP diff --git a/3party/boost/boost/detail/win/basic_types.hpp b/3party/boost/boost/detail/winapi/basic_types.hpp similarity index 67% rename from 3party/boost/boost/detail/win/basic_types.hpp rename to 3party/boost/boost/detail/winapi/basic_types.hpp index f4e34721cf..09d907bdc2 100644 --- a/3party/boost/boost/detail/win/basic_types.hpp +++ b/3party/boost/boost/detail/winapi/basic_types.hpp @@ -6,15 +6,17 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_BASIC_TYPES_HPP -#define BOOST_DETAIL_WIN_BASIC_TYPES_HPP -#include +#ifndef BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP +#define BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP + #include #include +#include + #if defined( BOOST_USE_WINDOWS_H ) # include #elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined(__CYGWIN__) -# include +# include // @FIXME Which condition must be tested # ifdef UNDER_CE # ifndef WINAPI @@ -29,20 +31,36 @@ # define WINAPI __stdcall # endif # endif +# ifndef NTAPI +# define NTAPI __stdcall +# endif #else # error "Win32 functions not available" #endif +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) typedef ::BOOL BOOL_; + typedef ::BOOLEAN BOOLEAN_; + typedef ::PBOOLEAN PBOOLEAN_; + typedef ::BYTE BYTE_; typedef ::WORD WORD_; typedef ::DWORD DWORD_; typedef ::HANDLE HANDLE_; + typedef ::HMODULE HMODULE_; typedef ::LONG LONG_; + typedef ::ULONG ULONG_; typedef ::LONGLONG LONGLONG_; + typedef ::ULONGLONG ULONGLONG_; + typedef ::INT_PTR INT_PTR_; + typedef ::UINT_PTR UINT_PTR_; + typedef ::LONG_PTR LONG_PTR_; typedef ::ULONG_PTR ULONG_PTR_; typedef ::LARGE_INTEGER LARGE_INTEGER_; typedef ::PLARGE_INTEGER PLARGE_INTEGER_; @@ -57,32 +75,37 @@ namespace win32 { #else extern "C" { typedef int BOOL_; + typedef unsigned char BYTE_; + typedef BYTE_ BOOLEAN_; + typedef BOOLEAN_* PBOOLEAN_; typedef unsigned short WORD_; typedef unsigned long DWORD_; typedef void* HANDLE_; + typedef void* HMODULE_; typedef long LONG_; + typedef unsigned long ULONG_; -// @FIXME Which condition must be tested -//~ #if !defined(_M_IX86) -//~ #if defined(BOOST_NO_INT64_T) - //~ typedef double LONGLONG_; -//~ #else - //~ typedef __int64 LONGLONG_; -//~ #endif -//~ #else - //~ typedef double LONGLONG_; -//~ #endif typedef boost::int64_t LONGLONG_; + typedef boost::uint64_t ULONGLONG_; // @FIXME Which condition must be tested # ifdef _WIN64 #if defined(__CYGWIN__) + typedef long INT_PTR_; + typedef unsigned long UINT_PTR_; + typedef long LONG_PTR_; typedef unsigned long ULONG_PTR_; #else + typedef __int64 INT_PTR_; + typedef unsigned __int64 UINT_PTR_; + typedef __int64 LONG_PTR_; typedef unsigned __int64 ULONG_PTR_; #endif # else + typedef int INT_PTR_; + typedef unsigned int UINT_PTR_; + typedef long LONG_PTR_; typedef unsigned long ULONG_PTR_; # endif @@ -102,10 +125,10 @@ extern "C" { typedef wchar_t WCHAR_; typedef WCHAR_ *LPWSTR_; typedef const WCHAR_ *LPCWSTR_; - } #endif } } } -#endif // BOOST_DETAIL_WIN_TIME_HPP + +#endif // BOOST_DETAIL_WINAPI_BASIC_TYPES_HPP diff --git a/3party/boost/boost/detail/winapi/config.hpp b/3party/boost/boost/detail/winapi/config.hpp new file mode 100644 index 0000000000..2b0cdfbada --- /dev/null +++ b/3party/boost/boost/detail/winapi/config.hpp @@ -0,0 +1,53 @@ +// config.hpp --------------------------------------------------------------// + +// Copyright 2013 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_DETAIL_WINAPI_CONFIG_HPP_INCLUDED_ +#define BOOST_DETAIL_WINAPI_CONFIG_HPP_INCLUDED_ + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +// These constants reflect _WIN32_WINNT_* macros from sdkddkver.h +// See also: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx#setting_winver_or__win32_winnt +#define BOOST_WINAPI_VERSION_NT4 0x0400 +#define BOOST_WINAPI_VERSION_WIN2K 0x0500 +#define BOOST_WINAPI_VERSION_WINXP 0x0501 +#define BOOST_WINAPI_VERSION_WS03 0x0502 +#define BOOST_WINAPI_VERSION_WIN6 0x0600 +#define BOOST_WINAPI_VERSION_VISTA 0x0600 +#define BOOST_WINAPI_VERSION_WS08 0x0600 +#define BOOST_WINAPI_VERSION_LONGHORN 0x0600 +#define BOOST_WINAPI_VERSION_WIN7 0x0601 +#define BOOST_WINAPI_VERSION_WIN8 0x0602 +#define BOOST_WINAPI_VERSION_WINBLUE 0x0603 + +#if !defined(BOOST_USE_WINAPI_VERSION) +#if defined(_WIN32_WINNT) +#define BOOST_USE_WINAPI_VERSION _WIN32_WINNT +#elif defined(WINVER) +#define BOOST_USE_WINAPI_VERSION WINVER +#else +// By default use Windows XP API +#define BOOST_USE_WINAPI_VERSION BOOST_WINAPI_VERSION_WINXP +#endif +#endif + +#if defined(BOOST_USE_WINDOWS_H) +// We have to define the version macros so that windows.h provides the necessary symbols +#if !defined(_WIN32_WINNT) +#define _WIN32_WINNT BOOST_USE_WINAPI_VERSION +#endif +#if !defined(WINVER) +#define WINVER BOOST_USE_WINAPI_VERSION +#endif +#endif + +#endif // BOOST_DETAIL_WINAPI_CONFIG_HPP_INCLUDED_ diff --git a/3party/boost/boost/detail/win/directory_management.hpp b/3party/boost/boost/detail/winapi/directory_management.hpp similarity index 74% rename from 3party/boost/boost/detail/win/directory_management.hpp rename to 3party/boost/boost/detail/winapi/directory_management.hpp index 1ffe659766..19af1ee4ea 100644 --- a/3party/boost/boost/detail/win/directory_management.hpp +++ b/3party/boost/boost/detail/winapi/directory_management.hpp @@ -6,17 +6,21 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_DIRECTORY_MANAGEMENT_HPP -#define BOOST_DETAIL_WIN_DIRECTORY_MANAGEMENT_HPP +#ifndef BOOST_DETAIL_WINAPI_DIRECTORY_MANAGEMENT_HPP +#define BOOST_DETAIL_WINAPI_DIRECTORY_MANAGEMENT_HPP -#include -#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) using ::CreateDirectory; @@ -33,11 +37,10 @@ extern "C" { GetTempPathA(unsigned long length, char *buffer); __declspec(dllimport) int __stdcall RemoveDirectoryA(LPCTSTR_); - } #endif } } } -#endif // BOOST_DETAIL_WIN_THREAD_HPP +#endif // BOOST_DETAIL_WINAPI_THREAD_HPP diff --git a/3party/boost/boost/detail/winapi/dll.hpp b/3party/boost/boost/detail/winapi/dll.hpp new file mode 100644 index 0000000000..2ec5a73bc9 --- /dev/null +++ b/3party/boost/boost/detail/winapi/dll.hpp @@ -0,0 +1,86 @@ +// dll.hpp --------------------------------------------------------------// + +// Copyright 2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_DETAIL_WINAPI_DLL_HPP +#define BOOST_DETAIL_WINAPI_DLL_HPP + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost +{ +namespace detail +{ +namespace winapi +{ +#if defined( BOOST_USE_WINDOWS_H ) + typedef ::FARPROC FARPROC_; + typedef ::NEARPROC NEARPROC_; + typedef ::PROC PROC_; + +# ifdef BOOST_NO_ANSI_APIS + using ::LoadLibraryW; + using ::GetModuleHandleW; +# else + using ::LoadLibraryA; + using ::GetModuleHandleA; +# endif + using ::FreeLibrary; + using ::GetProcAddress; +#else +extern "C" { +# ifdef _WIN64 + typedef INT_PTR_ (WINAPI *FARPROC_)(); + typedef INT_PTR_ (WINAPI *NEARPROC_)(); + typedef INT_PTR_ (WINAPI *PROC_)(); +# else + typedef int (WINAPI *FARPROC_)(); + typedef int (WINAPI *NEARPROC_)(); + typedef int (WINAPI *PROC_)(); +# endif // _WIN64 + +# ifdef BOOST_NO_ANSI_APIS + __declspec(dllimport) HMODULE_ WINAPI + LoadLibraryW( + LPCWSTR_ lpFileName + ); + __declspec(dllimport) HMODULE_ WINAPI + GetModuleHandleW( + LPCWSTR_ lpFileName + ); +# else + __declspec(dllimport) HMODULE_ WINAPI + LoadLibraryA( + LPCSTR_ lpFileName + ); + __declspec(dllimport) HMODULE_ WINAPI + GetModuleHandleA( + LPCSTR_ lpFileName + ); +# endif + + __declspec(dllimport) BOOL_ WINAPI + FreeLibrary( + HMODULE_ hModule + ); + __declspec(dllimport) FARPROC_ WINAPI + GetProcAddress( + HMODULE_ hModule, + LPCSTR_ lpProcName + ); +} +#endif +} +} +} + +#endif // BOOST_DETAIL_WINAPI_DLL_HPP diff --git a/3party/boost/boost/detail/win/error_handling.hpp b/3party/boost/boost/detail/winapi/error_handling.hpp similarity index 89% rename from 3party/boost/boost/detail/win/error_handling.hpp rename to 3party/boost/boost/detail/winapi/error_handling.hpp index d6fb428a76..fbe9924b25 100644 --- a/3party/boost/boost/detail/win/error_handling.hpp +++ b/3party/boost/boost/detail/winapi/error_handling.hpp @@ -6,15 +6,20 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_ERROR_HANDLING_HPP -#define BOOST_DETAIL_WIN_ERROR_HANDLING_HPP +#ifndef BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP +#define BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP -#include -#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { + #if defined( BOOST_USE_WINDOWS_H ) using ::FormatMessageA; using ::FormatMessageW; @@ -85,4 +90,4 @@ extern "C" { } } } -#endif // BOOST_DETAIL_WIN_ERROR_HANDLING_HPP +#endif // BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP diff --git a/3party/boost/boost/detail/win/file_management.hpp b/3party/boost/boost/detail/winapi/file_management.hpp similarity index 92% rename from 3party/boost/boost/detail/win/file_management.hpp rename to 3party/boost/boost/detail/winapi/file_management.hpp index 5cb0dbff29..c1d5978ba7 100644 --- a/3party/boost/boost/detail/win/file_management.hpp +++ b/3party/boost/boost/detail/winapi/file_management.hpp @@ -6,17 +6,21 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_FILE_MANAGEMENT_HPP -#define BOOST_DETAIL_WIN_FILE_MANAGEMENT_HPP +#ifndef BOOST_DETAIL_WINAPI_FILE_MANAGEMENT_HPP +#define BOOST_DETAIL_WINAPI_FILE_MANAGEMENT_HPP -#include -#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) using ::CreateFileA; @@ -123,4 +127,4 @@ extern "C" { } } -#endif // BOOST_DETAIL_WIN_THREAD_HPP +#endif // BOOST_DETAIL_WINAPI_THREAD_HPP diff --git a/3party/boost/boost/detail/winapi/handles.hpp b/3party/boost/boost/detail/winapi/handles.hpp new file mode 100644 index 0000000000..7108daa10b --- /dev/null +++ b/3party/boost/boost/detail/winapi/handles.hpp @@ -0,0 +1,46 @@ +// memory.hpp --------------------------------------------------------------// + +// Copyright 2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_DETAIL_WINAPI_HANDLES_HPP +#define BOOST_DETAIL_WINAPI_HANDLES_HPP + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost +{ +namespace detail +{ +namespace winapi +{ +#if defined( BOOST_USE_WINDOWS_H ) + using ::CloseHandle; + using ::DuplicateHandle; + + const DWORD_ duplicate_close_source = DUPLICATE_CLOSE_SOURCE; + const DWORD_ duplicate_same_access = DUPLICATE_SAME_ACCESS; + const HANDLE_ invalid_handle_value = INVALID_HANDLE_VALUE; +#else +extern "C" { + __declspec(dllimport) int __stdcall + CloseHandle(void*); + __declspec(dllimport) int __stdcall + DuplicateHandle(void*,void*,void*,void**,unsigned long,int,unsigned long); +} + const DWORD_ duplicate_close_source = 1; + const DWORD_ duplicate_same_access = 2; + const HANDLE_ invalid_handle_value = (HANDLE_)(-1); +#endif +} +} +} + +#endif // BOOST_DETAIL_WINAPI_HANDLES_HPP diff --git a/3party/boost/boost/detail/win/memory.hpp b/3party/boost/boost/detail/winapi/memory.hpp similarity index 80% rename from 3party/boost/boost/detail/win/memory.hpp rename to 3party/boost/boost/detail/winapi/memory.hpp index 8bf59ad87e..b5316e09e0 100644 --- a/3party/boost/boost/detail/win/memory.hpp +++ b/3party/boost/boost/detail/winapi/memory.hpp @@ -6,19 +6,22 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_MEMORY_HPP -#define BOOST_DETAIL_WIN_MEMORY_HPP +#ifndef BOOST_DETAIL_WINAPI_MEMORY_HPP +#define BOOST_DETAIL_WINAPI_MEMORY_HPP -#include -#include -#include +#include +#include +#include +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) using ::CreateFileMappingA; @@ -30,9 +33,7 @@ namespace win32 using ::OpenFileMappingA; using ::UnmapViewOfFile; #else -# ifdef HeapAlloc -# undef HeapAlloc -# endif +#undef HeapAlloc extern "C" { __declspec(dllimport) void * __stdcall CreateFileMappingA (void *, SECURITY_ATTRIBUTES_*, unsigned long, unsigned long, unsigned long, const char *); @@ -56,4 +57,4 @@ extern "C" { } } -#endif // BOOST_DETAIL_WIN_SYNCHRONIZATION_HPP +#endif // BOOST_DETAIL_WINAPI_MEMORY_HPP diff --git a/3party/boost/boost/detail/win/process.hpp b/3party/boost/boost/detail/winapi/process.hpp similarity index 53% rename from 3party/boost/boost/detail/win/process.hpp rename to 3party/boost/boost/detail/winapi/process.hpp index 10c3a9392c..de287b15fc 100644 --- a/3party/boost/boost/detail/win/process.hpp +++ b/3party/boost/boost/detail/winapi/process.hpp @@ -6,23 +6,26 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_PROCESS_HPP -#define BOOST_DETAIL_WIN_PROCESS_HPP +#ifndef BOOST_DETAIL_WINAPI_PROCESS_HPP +#define BOOST_DETAIL_WINAPI_PROCESS_HPP -#include -#include +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) using ::GetCurrentProcessId; #else # ifndef UNDER_CE -extern "C" { - __declspec(dllimport) unsigned long __stdcall - GetCurrentProcessId(void); -} +extern "C" { + __declspec(dllimport) DWORD_ WINAPI GetCurrentProcessId(void); +} # else using ::GetCurrentProcessId; # endif @@ -30,4 +33,4 @@ extern "C" { } } } -#endif // BOOST_DETAIL_WIN_PROCESS_HPP +#endif // BOOST_DETAIL_WINAPI_PROCESS_HPP diff --git a/3party/boost/boost/detail/win/security.hpp b/3party/boost/boost/detail/winapi/security.hpp similarity index 85% rename from 3party/boost/boost/detail/win/security.hpp rename to 3party/boost/boost/detail/winapi/security.hpp index ee38985193..79925c6c67 100644 --- a/3party/boost/boost/detail/win/security.hpp +++ b/3party/boost/boost/detail/winapi/security.hpp @@ -6,17 +6,20 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_SECURITY_HPP -#define BOOST_DETAIL_WIN_SECURITY_HPP +#ifndef BOOST_DETAIL_WINAPI_SECURITY_HPP +#define BOOST_DETAIL_WINAPI_SECURITY_HPP -#include +#include +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) typedef ::SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES_; @@ -59,4 +62,4 @@ extern "C" { } } -#endif // BOOST_DETAIL_WIN_SECURITY_HPP +#endif // BOOST_DETAIL_WINAPI_SECURITY_HPP diff --git a/3party/boost/boost/detail/winapi/synchronization.hpp b/3party/boost/boost/detail/winapi/synchronization.hpp new file mode 100644 index 0000000000..b9497cbf7c --- /dev/null +++ b/3party/boost/boost/detail/winapi/synchronization.hpp @@ -0,0 +1,293 @@ +// synchronizaion.hpp --------------------------------------------------------------// + +// Copyright 2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_DETAIL_WINAPI_SYNCHRONIZATION_HPP +#define BOOST_DETAIL_WINAPI_SYNCHRONIZATION_HPP + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost +{ +namespace detail +{ +namespace winapi +{ +#if defined( BOOST_USE_WINDOWS_H ) + typedef ::CRITICAL_SECTION CRITICAL_SECTION_; + typedef ::PAPCFUNC PAPCFUNC_; + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + typedef ::INIT_ONCE INIT_ONCE_; + typedef ::PINIT_ONCE PINIT_ONCE_; + typedef ::LPINIT_ONCE LPINIT_ONCE_; + #define BOOST_DETAIL_WINAPI_INIT_ONCE_STATIC_INIT INIT_ONCE_STATIC_INIT + typedef ::PINIT_ONCE_FN PINIT_ONCE_FN_; + + typedef ::SRWLOCK SRWLOCK_; + typedef ::PSRWLOCK PSRWLOCK_; + #define BOOST_DETAIL_WINAPI_SRWLOCK_INIT SRWLOCK_INIT + + typedef ::CONDITION_VARIABLE CONDITION_VARIABLE_; + typedef ::PCONDITION_VARIABLE PCONDITION_VARIABLE_; + #define BOOST_DETAIL_WINAPI_CONDITION_VARIABLE_INIT CONDITION_VARIABLE_INIT +#endif + + using ::InitializeCriticalSection; +#if BOOST_USE_WINAPI_VERSION >= 0x0403 + using ::InitializeCriticalSectionAndSpinCount; +#endif + using ::EnterCriticalSection; + using ::TryEnterCriticalSection; + using ::LeaveCriticalSection; + using ::DeleteCriticalSection; + +# ifdef BOOST_NO_ANSI_APIS + using ::CreateMutexW; + using ::OpenMutexW; + using ::CreateEventW; + using ::OpenEventW; + using ::CreateSemaphoreW; + using ::OpenSemaphoreW; +# else + using ::CreateMutexA; + using ::OpenMutexA; + using ::CreateEventA; + using ::OpenEventA; + using ::CreateSemaphoreA; + using ::OpenSemaphoreA; +# endif + using ::ReleaseMutex; + using ::ReleaseSemaphore; + using ::SetEvent; + using ::ResetEvent; + using ::WaitForMultipleObjects; + using ::WaitForSingleObject; + using ::QueueUserAPC; + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + using ::InitOnceInitialize; + using ::InitOnceExecuteOnce; + using ::InitOnceBeginInitialize; + using ::InitOnceComplete; + + using ::InitializeSRWLock; + using ::AcquireSRWLockExclusive; + using ::TryAcquireSRWLockExclusive; + using ::ReleaseSRWLockExclusive; + using ::AcquireSRWLockShared; + using ::TryAcquireSRWLockShared; + using ::ReleaseSRWLockShared; + + using ::InitializeConditionVariable; + using ::WakeConditionVariable; + using ::WakeAllConditionVariable; + using ::SleepConditionVariableCS; + using ::SleepConditionVariableSRW; +#endif + + const DWORD_ infinite = INFINITE; + const DWORD_ wait_abandoned = WAIT_ABANDONED; + const DWORD_ wait_object_0 = WAIT_OBJECT_0; + const DWORD_ wait_timeout = WAIT_TIMEOUT; + const DWORD_ wait_failed = WAIT_FAILED; + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + const DWORD_ init_once_async = INIT_ONCE_ASYNC; + const DWORD_ init_once_check_only = INIT_ONCE_CHECK_ONLY; + const DWORD_ init_once_init_failed = INIT_ONCE_INIT_FAILED; + const DWORD_ init_once_ctx_reserved_bits = INIT_ONCE_CTX_RESERVED_BITS; + + const ULONG_ condition_variable_lockmode_shared = CONDITION_VARIABLE_LOCKMODE_SHARED; +#endif + +#else // defined( BOOST_USE_WINDOWS_H ) + +extern "C" { + + typedef struct CRITICAL_SECTION_ + { + struct critical_section_debug * DebugInfo; + long LockCount; + long RecursionCount; + void * OwningThread; + void * LockSemaphore; + #if defined(_WIN64) + unsigned __int64 SpinCount; + #else + unsigned long SpinCount; + #endif + } + *PCRITICAL_SECTION_; + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + typedef union INIT_ONCE_ + { + PVOID_ Ptr; + } + *PINIT_ONCE_, *LPINIT_ONCE_; + #define BOOST_DETAIL_WINAPI_INIT_ONCE_STATIC_INIT {0} + typedef BOOL_ (WINAPI *PINIT_ONCE_FN_)(PINIT_ONCE_ InitOnce, PVOID_ Parameter, PVOID_ *Context); + + typedef struct SRWLOCK_ + { + PVOID_ Ptr; + } + * PSRWLOCK_; + #define BOOST_DETAIL_WINAPI_SRWLOCK_INIT {0} + + typedef struct CONDITION_VARIABLE_ + { + PVOID_ Ptr; + } + * PCONDITION_VARIABLE_; + #define BOOST_DETAIL_WINAPI_CONDITION_VARIABLE_INIT {0} + +#endif + + __declspec(dllimport) void WINAPI + InitializeCriticalSection(PCRITICAL_SECTION_); +#if BOOST_USE_WINAPI_VERSION >= 0x0403 + __declspec(dllimport) BOOL_ WINAPI + InitializeCriticalSectionAndSpinCount(CRITICAL_SECTION_* lpCS, DWORD_ dwSpinCount); +#endif + __declspec(dllimport) void WINAPI + EnterCriticalSection(PCRITICAL_SECTION_); + __declspec(dllimport) BOOL_ WINAPI + TryEnterCriticalSection(PCRITICAL_SECTION_); + __declspec(dllimport) void WINAPI + LeaveCriticalSection(PCRITICAL_SECTION_); + __declspec(dllimport) void WINAPI + DeleteCriticalSection(PCRITICAL_SECTION_); + + struct _SECURITY_ATTRIBUTES; +# ifdef BOOST_NO_ANSI_APIS + __declspec(dllimport) HANDLE_ WINAPI + CreateMutexW(_SECURITY_ATTRIBUTES*, BOOL_, LPCWSTR_); + __declspec(dllimport) HANDLE_ WINAPI + OpenMutexW(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCWSTR_ lpName); + __declspec(dllimport) HANDLE_ WINAPI + CreateSemaphoreW(_SECURITY_ATTRIBUTES*, LONG_, LONG_, LPCWSTR_); + __declspec(dllimport) HANDLE_ WINAPI + OpenSemaphoreW(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCWSTR_ lpName); + __declspec(dllimport) HANDLE_ WINAPI + CreateEventW(_SECURITY_ATTRIBUTES*, BOOL_, BOOL_, LPCWSTR_); + __declspec(dllimport) HANDLE_ WINAPI + OpenEventW(DWORD_, BOOL_, LPCWSTR_); +# else + __declspec(dllimport) HANDLE_ WINAPI + CreateMutexA(_SECURITY_ATTRIBUTES*, BOOL_, LPCSTR_); + __declspec(dllimport) HANDLE_ WINAPI + OpenMutexA(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCSTR_ lpName); + __declspec(dllimport) HANDLE_ WINAPI + CreateSemaphoreA(_SECURITY_ATTRIBUTES*, LONG_, LONG_, LPCSTR_); + __declspec(dllimport) HANDLE_ WINAPI + OpenSemaphoreA(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCSTR_ lpName); + __declspec(dllimport) HANDLE_ WINAPI + CreateEventA(_SECURITY_ATTRIBUTES*, BOOL_, BOOL_, LPCSTR_); + __declspec(dllimport) HANDLE_ WINAPI + OpenEventA(DWORD_, BOOL_, LPCSTR_); +# endif + __declspec(dllimport) BOOL_ WINAPI + ReleaseMutex(HANDLE_); + __declspec(dllimport) DWORD_ WINAPI + WaitForSingleObject(HANDLE_, DWORD_); + __declspec(dllimport) DWORD_ WINAPI + WaitForMultipleObjects(DWORD_ nCount, + HANDLE_ const * lpHandles, + BOOL_ bWaitAll, + DWORD_ dwMilliseconds); + __declspec(dllimport) BOOL_ WINAPI + ReleaseSemaphore(HANDLE_, LONG_, LONG_*); + __declspec(dllimport) BOOL_ WINAPI + SetEvent(HANDLE_); + __declspec(dllimport) BOOL_ WINAPI + ResetEvent(HANDLE_); + + typedef void (__stdcall *PAPCFUNC_)(ULONG_PTR_); + __declspec(dllimport) DWORD_ WINAPI + QueueUserAPC(PAPCFUNC_, HANDLE_, ULONG_PTR_); + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + __declspec(dllimport) void WINAPI InitOnceInitialize(PINIT_ONCE_); + __declspec(dllimport) BOOL_ WINAPI InitOnceExecuteOnce(PINIT_ONCE_ InitOnce, PINIT_ONCE_FN_ InitFn, PVOID_ Parameter, LPVOID_* Context); + __declspec(dllimport) BOOL_ WINAPI InitOnceBeginInitialize(LPINIT_ONCE_ lpInitOnce, DWORD_ dwFlags, BOOL_* fPending, LPVOID_* lpContext); + __declspec(dllimport) BOOL_ WINAPI InitOnceComplete(LPINIT_ONCE_ lpInitOnce, DWORD_ dwFlags, LPVOID_* lpContext); + + + __declspec(dllimport) void WINAPI InitializeSRWLock(PSRWLOCK_ SRWLock); + __declspec(dllimport) void WINAPI AcquireSRWLockExclusive(PSRWLOCK_ SRWLock); + __declspec(dllimport) BOOLEAN_ WINAPI TryAcquireSRWLockExclusive(PSRWLOCK_ SRWLock); + __declspec(dllimport) void WINAPI ReleaseSRWLockExclusive(PSRWLOCK_ SRWLock); + __declspec(dllimport) void WINAPI AcquireSRWLockShared(PSRWLOCK_ SRWLock); + __declspec(dllimport) BOOLEAN_ WINAPI TryAcquireSRWLockShared(PSRWLOCK_ SRWLock); + __declspec(dllimport) void WINAPI ReleaseSRWLockShared(PSRWLOCK_ SRWLock); + + __declspec(dllimport) void WINAPI InitializeConditionVariable(PCONDITION_VARIABLE_ ConditionVariable); + __declspec(dllimport) void WINAPI WakeConditionVariable(PCONDITION_VARIABLE_ ConditionVariable); + __declspec(dllimport) void WINAPI WakeAllConditionVariable(PCONDITION_VARIABLE_ ConditionVariable); + __declspec(dllimport) BOOL_ WINAPI SleepConditionVariableCS(PCONDITION_VARIABLE_ ConditionVariable, PCRITICAL_SECTION_ CriticalSection, DWORD_ dwMilliseconds); + __declspec(dllimport) BOOL_ WINAPI SleepConditionVariableSRW(PCONDITION_VARIABLE_ ConditionVariable, PSRWLOCK_ SRWLock, DWORD_ dwMilliseconds, ULONG_ Flags); +#endif + +} // extern "C" + +const DWORD_ infinite = (DWORD_)0xFFFFFFFF; +const DWORD_ wait_abandoned = 0x00000080L; +const DWORD_ wait_object_0 = 0x00000000L; +const DWORD_ wait_timeout = 0x00000102L; +const DWORD_ wait_failed = (DWORD_)0xFFFFFFFF; + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 +const DWORD_ init_once_async = 0x00000002UL; +const DWORD_ init_once_check_only = 0x00000001UL; +const DWORD_ init_once_init_failed = 0x00000004UL; +const DWORD_ init_once_ctx_reserved_bits = 2; + +const ULONG_ condition_variable_lockmode_shared = 0x00000001; +#endif + +#endif // defined( BOOST_USE_WINDOWS_H ) + +const DWORD_ max_non_infinite_wait = (DWORD_)0xFFFFFFFE; + +BOOST_FORCEINLINE HANDLE_ create_anonymous_mutex(_SECURITY_ATTRIBUTES* lpAttributes, BOOL_ bInitialOwner) +{ +#ifdef BOOST_NO_ANSI_APIS + return CreateMutexW(lpAttributes, bInitialOwner, 0); +#else + return CreateMutexA(lpAttributes, bInitialOwner, 0); +#endif +} + +BOOST_FORCEINLINE HANDLE_ create_anonymous_semaphore(_SECURITY_ATTRIBUTES* lpAttributes, LONG_ lInitialCount, LONG_ lMaximumCount) +{ +#ifdef BOOST_NO_ANSI_APIS + return CreateSemaphoreW(lpAttributes, lInitialCount, lMaximumCount, 0); +#else + return CreateSemaphoreA(lpAttributes, lInitialCount, lMaximumCount, 0); +#endif +} + +BOOST_FORCEINLINE HANDLE_ create_anonymous_event(_SECURITY_ATTRIBUTES* lpAttributes, BOOL_ bManualReset, BOOL_ bInitialState) +{ +#ifdef BOOST_NO_ANSI_APIS + return CreateEventW(lpAttributes, bManualReset, bInitialState, 0); +#else + return CreateEventA(lpAttributes, bManualReset, bInitialState, 0); +#endif +} + +} +} +} + +#endif // BOOST_DETAIL_WINAPI_SYNCHRONIZATION_HPP diff --git a/3party/boost/boost/detail/win/system.hpp b/3party/boost/boost/detail/winapi/system.hpp similarity index 64% rename from 3party/boost/boost/detail/win/system.hpp rename to 3party/boost/boost/detail/winapi/system.hpp index 3bcffcec8e..2c2d82a8a9 100644 --- a/3party/boost/boost/detail/win/system.hpp +++ b/3party/boost/boost/detail/winapi/system.hpp @@ -1,24 +1,31 @@ // system.hpp --------------------------------------------------------------// // Copyright 2010 Vicente J. Botet Escriba +// Copyright (c) Microsoft Corporation 2014 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_SYSTEM_HPP -#define BOOST_DETAIL_WIN_SYSTEM_HPP -#include -#include +#ifndef BOOST_DETAIL_WINAPI_SYSTEM_HPP +#define BOOST_DETAIL_WINAPI_SYSTEM_HPP -#include -extern "C" __declspec(dllimport) void __stdcall GetSystemInfo (struct system_info *); +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) typedef ::SYSTEM_INFO SYSTEM_INFO_; +# if BOOST_USE_WINAPI_VERSION < BOOST_WINAPI_VERSION_WINXP +extern "C" __declspec(dllimport) void __stdcall GetSystemInfo (struct system_info *); +# else +extern "C" __declspec(dllimport) void __stdcall GetNativeSystemInfo (struct system_info *); +# endif #else extern "C" { typedef struct _SYSTEM_INFO { @@ -40,11 +47,16 @@ extern "C" { WORD_ wProcessorRevision; } SYSTEM_INFO_; +# if BOOST_USE_WINAPI_VERSION < BOOST_WINAPI_VERSION_WINXP __declspec(dllimport) void __stdcall GetSystemInfo (struct system_info *); +# else + __declspec(dllimport) void __stdcall + GetNativeSystemInfo (struct system_info *); +# endif } #endif } } } -#endif // BOOST_DETAIL_WIN_TIME_HPP +#endif // BOOST_DETAIL_WINAPI_SYSTEM_HPP diff --git a/3party/boost/boost/detail/winapi/thread.hpp b/3party/boost/boost/detail/winapi/thread.hpp new file mode 100644 index 0000000000..ee0dac6242 --- /dev/null +++ b/3party/boost/boost/detail/winapi/thread.hpp @@ -0,0 +1,49 @@ +// thread.hpp --------------------------------------------------------------// + +// Copyright 2010 Vicente J. Botet Escriba + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_DETAIL_WINAPI_THREAD_HPP +#define BOOST_DETAIL_WINAPI_THREAD_HPP + +#include +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost +{ +namespace detail +{ +namespace winapi +{ +#if defined( BOOST_USE_WINDOWS_H ) + using ::GetCurrentThreadId; + using ::SleepEx; + using ::Sleep; + using ::SwitchToThread; +#else +extern "C" { +# ifndef UNDER_CE + __declspec(dllimport) DWORD_ WINAPI GetCurrentThreadId(void); + __declspec(dllimport) DWORD_ WINAPI SleepEx(DWORD_, BOOL_); + __declspec(dllimport) void WINAPI Sleep(DWORD_); + __declspec(dllimport) BOOL_ WINAPI SwitchToThread(void); +#else + using ::GetCurrentThreadId; + using ::SleepEx; + using ::Sleep; + using ::SwitchToThread; +#endif +} +#endif +} +} +} + +#endif // BOOST_DETAIL_WINAPI_THREAD_HPP diff --git a/3party/boost/boost/detail/winapi/thread_pool.hpp b/3party/boost/boost/detail/winapi/thread_pool.hpp new file mode 100644 index 0000000000..57059dc1b2 --- /dev/null +++ b/3party/boost/boost/detail/winapi/thread_pool.hpp @@ -0,0 +1,96 @@ +// thread_pool.hpp --------------------------------------------------------------// + +// Copyright 2013 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_DETAIL_WINAPI_THREAD_POOL_HPP +#define BOOST_DETAIL_WINAPI_THREAD_POOL_HPP + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K + +namespace boost +{ +namespace detail +{ +namespace winapi +{ +#if defined( BOOST_USE_WINDOWS_H ) + +typedef ::WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACKFUNC_; +typedef ::WAITORTIMERCALLBACK WAITORTIMERCALLBACK_; + +using ::RegisterWaitForSingleObject; +using ::UnregisterWait; +using ::UnregisterWaitEx; + +const ULONG_ wt_execute_default = WT_EXECUTEDEFAULT; +const ULONG_ wt_execute_in_io_thread = WT_EXECUTEINIOTHREAD; +const ULONG_ wt_execute_in_ui_thread = WT_EXECUTEINUITHREAD; +const ULONG_ wt_execute_in_wait_thread = WT_EXECUTEINWAITTHREAD; +const ULONG_ wt_execute_only_once = WT_EXECUTEONLYONCE; +const ULONG_ wt_execute_in_timer_thread = WT_EXECUTEINTIMERTHREAD; +const ULONG_ wt_execute_long_function = WT_EXECUTELONGFUNCTION; +const ULONG_ wt_execute_in_persistent_io_thread = WT_EXECUTEINPERSISTENTIOTHREAD; +const ULONG_ wt_execute_in_persistent_thread = WT_EXECUTEINPERSISTENTTHREAD; +const ULONG_ wt_transfer_impersonation = WT_TRANSFER_IMPERSONATION; + +inline ULONG_ wt_set_max_threadpool_threads(ULONG_ flags, ULONG_ limit) +{ + return WT_SET_MAX_THREADPOOL_THREADS(flags, limit); +} + +#else + +extern "C" { + +typedef void (NTAPI* WAITORTIMERCALLBACKFUNC_) (PVOID_, BOOLEAN_); +typedef WAITORTIMERCALLBACKFUNC_ WAITORTIMERCALLBACK_; + +__declspec(dllimport) BOOL_ WINAPI RegisterWaitForSingleObject +( + HANDLE_* phNewWaitObject, + HANDLE_ hObject, + WAITORTIMERCALLBACK_ Callback, + PVOID_ Context, + ULONG_ dwMilliseconds, + ULONG_ dwFlags +); + +__declspec(dllimport) BOOL_ WINAPI UnregisterWait(HANDLE_ WaitHandle); +__declspec(dllimport) BOOL_ WINAPI UnregisterWaitEx(HANDLE_ WaitHandle, HANDLE_ CompletionEvent); + +} // extern "C" + +const ULONG_ wt_execute_default = 0x00000000; +const ULONG_ wt_execute_in_io_thread = 0x00000001; +const ULONG_ wt_execute_in_ui_thread = 0x00000002; +const ULONG_ wt_execute_in_wait_thread = 0x00000004; +const ULONG_ wt_execute_only_once = 0x00000008; +const ULONG_ wt_execute_in_timer_thread = 0x00000020; +const ULONG_ wt_execute_long_function = 0x00000010; +const ULONG_ wt_execute_in_persistent_io_thread = 0x00000040; +const ULONG_ wt_execute_in_persistent_thread = 0x00000080; +const ULONG_ wt_transfer_impersonation = 0x00000100; + +inline ULONG_ wt_set_max_threadpool_threads(ULONG_ flags, ULONG_ limit) +{ + return flags | (limit << 16); +} + +#endif +} +} +} + +#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K + +#endif // BOOST_DETAIL_WINAPI_THREAD_POOL_HPP diff --git a/3party/boost/boost/detail/win/time.hpp b/3party/boost/boost/detail/winapi/time.hpp similarity index 53% rename from 3party/boost/boost/detail/win/time.hpp rename to 3party/boost/boost/detail/winapi/time.hpp index 7f636edbae..6a6b447117 100644 --- a/3party/boost/boost/detail/win/time.hpp +++ b/3party/boost/boost/detail/winapi/time.hpp @@ -1,21 +1,28 @@ // time.hpp --------------------------------------------------------------// // Copyright 2010 Vicente J. Botet Escriba +// Copyright (c) Microsoft Corporation 2014 // Distributed under the Boost Software License, Version 1.0. // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_TIME_HPP -#define BOOST_DETAIL_WIN_TIME_HPP +#ifndef BOOST_DETAIL_WINAPI_TIME_HPP +#define BOOST_DETAIL_WINAPI_TIME_HPP -#include +#include +#include +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 { +namespace winapi { + #if defined( BOOST_USE_WINDOWS_H ) + typedef FILETIME FILETIME_; typedef PFILETIME PFILETIME_; typedef LPFILETIME LPFILETIME_; @@ -23,15 +30,24 @@ namespace win32 { typedef SYSTEMTIME SYSTEMTIME_; typedef SYSTEMTIME* PSYSTEMTIME_; - #ifndef UNDER_CE // Windows CE does not define GetSystemTimeAsFileTime + #ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME // Windows CE does not define GetSystemTimeAsFileTime using ::GetSystemTimeAsFileTime; #endif + #if BOOST_PLAT_WINDOWS_DESKTOP using ::FileTimeToLocalFileTime; + #endif using ::GetSystemTime; using ::SystemTimeToFileTime; + + #if BOOST_PLAT_WINDOWS_DESKTOP using ::GetTickCount; + #endif + #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + using ::GetTickCount64; + #endif #else + extern "C" { typedef struct _FILETIME { DWORD_ dwLowDateTime; @@ -49,24 +65,41 @@ extern "C" { WORD_ wMilliseconds; } SYSTEMTIME_, *PSYSTEMTIME_; - #ifndef UNDER_CE // Windows CE does not define GetSystemTimeAsFileTime + #ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME // Windows CE does not define GetSystemTimeAsFileTime __declspec(dllimport) void WINAPI GetSystemTimeAsFileTime(FILETIME_* lpFileTime); #endif __declspec(dllimport) int WINAPI - FileTimeToLocalFileTime(const FILETIME_* lpFileTime, + FileTimeToLocalFileTime(const FILETIME_* lpFileTime, FILETIME_* lpLocalFileTime); __declspec(dllimport) void WINAPI GetSystemTime(SYSTEMTIME_* lpSystemTime); __declspec(dllimport) int WINAPI - SystemTimeToFileTime(const SYSTEMTIME_* lpSystemTime, + SystemTimeToFileTime(const SYSTEMTIME_* lpSystemTime, FILETIME_* lpFileTime); - __declspec(dllimport) unsigned long __stdcall + #if BOOST_PLAT_WINDOWS_DESKTOP + __declspec(dllimport) DWORD_ WINAPI GetTickCount(); + #endif + #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 + __declspec(dllimport) ULONGLONG_ WINAPI + GetTickCount64(); + #endif +} + +#endif + +#ifndef BOOST_HAS_GETSYSTEMTIMEASFILETIME +inline void WINAPI GetSystemTimeAsFileTime(FILETIME_* lpFileTime) +{ + SYSTEMTIME_ st; + GetSystemTime(&st); + SystemTimeToFileTime(&st, lpFileTime); } #endif + } } } -#endif // BOOST_DETAIL_WIN_TIME_HPP +#endif // BOOST_DETAIL_WINAPI_TIME_HPP diff --git a/3party/boost/boost/detail/win/timers.hpp b/3party/boost/boost/detail/winapi/timers.hpp similarity index 74% rename from 3party/boost/boost/detail/win/timers.hpp rename to 3party/boost/boost/detail/winapi/timers.hpp index 753c91f83e..04c6dfbc41 100644 --- a/3party/boost/boost/detail/win/timers.hpp +++ b/3party/boost/boost/detail/winapi/timers.hpp @@ -6,17 +6,20 @@ // See http://www.boost.org/LICENSE_1_0.txt -#ifndef BOOST_DETAIL_WIN_TIMERS_HPP -#define BOOST_DETAIL_WIN_TIMERS_HPP +#ifndef BOOST_DETAIL_WINAPI_TIMERS_HPP +#define BOOST_DETAIL_WINAPI_TIMERS_HPP -#include +#include +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif namespace boost { namespace detail { -namespace win32 +namespace winapi { #if defined( BOOST_USE_WINDOWS_H ) using ::QueryPerformanceCounter; @@ -38,4 +41,4 @@ extern "C" { } } -#endif // BOOST_DETAIL_WIN_TIMERS_HPP +#endif // BOOST_DETAIL_WINAPI_TIMERS_HPP diff --git a/3party/boost/boost/detail/winapi/tls.hpp b/3party/boost/boost/detail/winapi/tls.hpp new file mode 100644 index 0000000000..d948693cc9 --- /dev/null +++ b/3party/boost/boost/detail/winapi/tls.hpp @@ -0,0 +1,49 @@ +// tls.hpp --------------------------------------------------------------// + +// Copyright 2013 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_DETAIL_WINAPI_TLS_HPP +#define BOOST_DETAIL_WINAPI_TLS_HPP + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost +{ +namespace detail +{ +namespace winapi +{ +#if defined( BOOST_USE_WINDOWS_H ) + +using ::TlsAlloc; +using ::TlsGetValue; +using ::TlsSetValue; +using ::TlsFree; + +const DWORD_ tls_out_of_indexes = TLS_OUT_OF_INDEXES; + +#else + +extern "C" { +__declspec(dllimport) DWORD_ WINAPI TlsAlloc(void); +__declspec(dllimport) LPVOID_ WINAPI TlsGetValue(DWORD_ dwTlsIndex); +__declspec(dllimport) BOOL_ WINAPI TlsSetValue(DWORD_ dwTlsIndex, LPVOID_ lpTlsValue); +__declspec(dllimport) BOOL_ WINAPI TlsFree(DWORD_ dwTlsIndex); +} + +const DWORD_ tls_out_of_indexes = 0xFFFFFFFF; + +#endif +} +} +} + +#endif // BOOST_DETAIL_WINAPI_TLS_HPP diff --git a/3party/boost/boost/detail/winapi/waitable_timer.hpp b/3party/boost/boost/detail/winapi/waitable_timer.hpp new file mode 100644 index 0000000000..52a7338a20 --- /dev/null +++ b/3party/boost/boost/detail/winapi/waitable_timer.hpp @@ -0,0 +1,110 @@ +// waitable_timer.hpp --------------------------------------------------------------// + +// Copyright 2013 Andrey Semashev + +// Distributed under the Boost Software License, Version 1.0. +// See http://www.boost.org/LICENSE_1_0.txt + + +#ifndef BOOST_DETAIL_WINAPI_WAITABLE_TIMER_HPP +#define BOOST_DETAIL_WINAPI_WAITABLE_TIMER_HPP + +#include + +#ifdef BOOST_HAS_PRAGMA_ONCE +#pragma once +#endif + +namespace boost +{ +namespace detail +{ +namespace winapi +{ +#if defined( BOOST_USE_WINDOWS_H ) + +typedef ::PTIMERAPCROUTINE PTIMERAPCROUTINE_; + +# ifdef BOOST_NO_ANSI_APIS +using ::CreateWaitableTimerW; +using ::OpenWaitableTimerW; +# else +using ::CreateWaitableTimerA; +using ::OpenWaitableTimerA; +# endif +using ::SetWaitableTimer; +using ::CancelWaitableTimer; + +#else + +extern "C" { + +struct _SECURITY_ATTRIBUTES; + +typedef void (WINAPI* PTIMERAPCROUTINE_) +( + LPVOID_ lpArgToCompletionRoutine, + DWORD_ dwTimerLowValue, + DWORD_ dwTimerHighValue +); + +# ifdef BOOST_NO_ANSI_APIS +__declspec(dllimport) HANDLE_ WINAPI CreateWaitableTimerW +( + _SECURITY_ATTRIBUTES* lpTimerAttributes, + BOOL_ bManualReset, + LPCWSTR_ lpTimerName +); + +__declspec(dllimport) HANDLE_ WINAPI OpenWaitableTimerW +( + DWORD_ dwDesiredAccess, + BOOL_ bInheritHandle, + LPCWSTR_ lpTimerName +); +# else +__declspec(dllimport) HANDLE_ WINAPI CreateWaitableTimerA +( + _SECURITY_ATTRIBUTES* lpTimerAttributes, + BOOL_ bManualReset, + LPCSTR_ lpTimerName +); + +__declspec(dllimport) HANDLE_ WINAPI OpenWaitableTimerA +( + DWORD_ dwDesiredAccess, + BOOL_ bInheritHandle, + LPCSTR_ lpTimerName +); +# endif + +__declspec(dllimport) BOOL_ WINAPI SetWaitableTimer +( + HANDLE_ hTimer, + const LARGE_INTEGER_ *lpDueTime, + LONG_ lPeriod, + PTIMERAPCROUTINE_ pfnCompletionRoutine, + LPVOID_ lpArgToCompletionRoutine, + BOOL_ fResume +); + +__declspec(dllimport) BOOL_ WINAPI CancelWaitableTimer(HANDLE_ hTimer); + +} + +#endif + +BOOST_FORCEINLINE HANDLE_ create_anonymous_waitable_timer(_SECURITY_ATTRIBUTES* lpTimerAttributes, BOOL_ bManualReset) +{ +#ifdef BOOST_NO_ANSI_APIS + return CreateWaitableTimerW(lpTimerAttributes, bManualReset, 0); +#else + return CreateWaitableTimerA(lpTimerAttributes, bManualReset, 0); +#endif +} + +} +} +} + +#endif // BOOST_DETAIL_WINAPI_WAITABLE_TIMER_HPP diff --git a/3party/boost/boost/dynamic_bitset/dynamic_bitset.hpp b/3party/boost/boost/dynamic_bitset/dynamic_bitset.hpp index 930e4b2dab..4d6011c2e9 100644 --- a/3party/boost/boost/dynamic_bitset/dynamic_bitset.hpp +++ b/3party/boost/boost/dynamic_bitset/dynamic_bitset.hpp @@ -2,6 +2,10 @@ // // Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek // Copyright (c) 2003-2006, 2008 Gennaro Prota +// Copyright (c) 2014 Ahmed Charles +// +// Copyright (c) 2014 Glen Joseph Fernandes +// glenfe at live dot com // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -36,9 +40,13 @@ #include "boost/dynamic_bitset_fwd.hpp" #include "boost/detail/dynamic_bitset.hpp" #include "boost/detail/iterator.hpp" // used to implement append(Iter, Iter) -#include "boost/static_assert.hpp" +#include "boost/move/move.hpp" #include "boost/limits.hpp" #include "boost/pending/lowest_bit.hpp" +#include "boost/static_assert.hpp" +#include "boost/utility/addressof.hpp" +#include "boost/detail/no_exceptions_support.hpp" +#include "boost/throw_exception.hpp" namespace boost { @@ -46,21 +54,22 @@ namespace boost { template class dynamic_bitset { - // Portability note: member function templates are defined inside - // this class definition to avoid problems with VC++. Similarly, - // with the member functions of nested classes. - // - // [October 2008: the note above is mostly historical; new versions - // of VC++ are likely able to digest a more drinking form of the - // code; but changing it now is probably not worth the risks...] + // Portability note: member function templates are defined inside + // this class definition to avoid problems with VC++. Similarly, + // with the member functions of nested classes. + // + // [October 2008: the note above is mostly historical; new versions + // of VC++ are likely able to digest a more drinking form of the + // code; but changing it now is probably not worth the risks...] - BOOST_STATIC_ASSERT((bool)detail::dynamic_bitset_impl::allowed_block_type::value); + BOOST_STATIC_ASSERT((bool)detail::dynamic_bitset_impl::allowed_block_type::value); + typedef std::vector buffer_type; public: typedef Block block_type; typedef Allocator allocator_type; typedef std::size_t size_type; - typedef block_type block_width_type; + typedef typename buffer_type::size_type block_width_type; BOOST_STATIC_CONSTANT(block_width_type, bits_per_block = (std::numeric_limits::digits)); BOOST_STATIC_CONSTANT(size_type, npos = static_cast(-1)); @@ -207,6 +216,11 @@ public: void swap(dynamic_bitset& b); dynamic_bitset& operator=(const dynamic_bitset& b); +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + dynamic_bitset(dynamic_bitset&& src); + dynamic_bitset& operator=(dynamic_bitset&& src); +#endif // BOOST_NO_CXX11_RVALUE_REFERENCES + allocator_type get_allocator() const; // size changing operations @@ -270,10 +284,12 @@ public: dynamic_bitset& flip(size_type n); dynamic_bitset& flip(); bool test(size_type n) const; + bool test_set(size_type n, bool val = true); + bool all() const; bool any() const; bool none() const; dynamic_bitset operator~() const; - size_type count() const; + size_type count() const BOOST_NOEXCEPT; // subscript reference operator[](size_type pos) { @@ -283,10 +299,10 @@ public: unsigned long to_ulong() const; - size_type size() const; - size_type num_blocks() const; - size_type max_size() const; - bool empty() const; + size_type size() const BOOST_NOEXCEPT; + size_type num_blocks() const BOOST_NOEXCEPT; + size_type max_size() const BOOST_NOEXCEPT; + bool empty() const BOOST_NOEXCEPT; bool is_subset_of(const dynamic_bitset& a) const; bool is_proper_subset_of(const dynamic_bitset& a) const; @@ -330,17 +346,16 @@ public: private: BOOST_STATIC_CONSTANT(block_width_type, ulong_width = std::numeric_limits::digits); - typedef std::vector buffer_type; void m_zero_unused_bits(); bool m_check_invariants() const; size_type m_do_find_from(size_type first_block) const; - block_width_type count_extra_bits() const { return bit_index(size()); } - static size_type block_index(size_type pos) { return pos / bits_per_block; } - static block_width_type bit_index(size_type pos) { return static_cast(pos % bits_per_block); } - static Block bit_mask(size_type pos) { return Block(1) << bit_index(pos); } + block_width_type count_extra_bits() const BOOST_NOEXCEPT { return bit_index(size()); } + static size_type block_index(size_type pos) BOOST_NOEXCEPT { return pos / bits_per_block; } + static block_width_type bit_index(size_type pos) BOOST_NOEXCEPT { return static_cast(pos % bits_per_block); } + static Block bit_mask(size_type pos) BOOST_NOEXCEPT { return Block(1) << bit_index(pos); } template void init_from_string(const std::basic_string& s, @@ -633,6 +648,34 @@ operator=(const dynamic_bitset& b) return *this; } +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES + +template +inline dynamic_bitset:: +dynamic_bitset(dynamic_bitset&& b) + : m_bits(boost::move(b.m_bits)), m_num_bits(boost::move(b.m_num_bits)) +{ + // Required so that assert(m_check_invariants()); works. + assert((b.m_bits = buffer_type()).empty()); + b.m_num_bits = 0; +} + +template +inline dynamic_bitset& dynamic_bitset:: +operator=(dynamic_bitset&& b) +{ + if (boost::addressof(b) == this) { return *this; } + + m_bits = boost::move(b.m_bits); + m_num_bits = boost::move(b.m_num_bits); + // Required so that assert(m_check_invariants()); works. + assert((b.m_bits = buffer_type()).empty()); + b.m_num_bits = 0; + return *this; +} + +#endif // BOOST_NO_CXX11_RVALUE_REFERENCES + template inline typename dynamic_bitset::allocator_type dynamic_bitset::get_allocator() const @@ -807,7 +850,7 @@ dynamic_bitset::operator<<=(size_type n) } // zero out div blocks at the less significant end - std::fill_n(b, div, static_cast(0)); + std::fill_n(m_bits.begin(), div, static_cast(0)); // zero out any 1 bit that flowed into the unused part m_zero_unused_bits(); // thanks to Lester Gong @@ -860,7 +903,7 @@ dynamic_bitset & dynamic_bitset::operator>>=(size_type n) { // div blocks are zero filled at the most significant end - std::fill_n(b + (num_blocks()-div), div, static_cast(0)); + std::fill_n(m_bits.begin() + (num_blocks()-div), div, static_cast(0)); } return *this; @@ -966,6 +1009,46 @@ bool dynamic_bitset::test(size_type pos) const return m_unchecked_test(pos); } +template +bool dynamic_bitset::test_set(size_type pos, bool val) +{ + bool const b = test(pos); + if (b != val) { + set(pos, val); + } + return b; +} + +template +bool dynamic_bitset::all() const +{ + if (empty()) { + return true; + } + + const block_width_type extra_bits = count_extra_bits(); + block_type const all_ones = ~static_cast(0); + + if (extra_bits == 0) { + for (size_type i = 0, e = num_blocks(); i < e; ++i) { + if (m_bits[i] != all_ones) { + return false; + } + } + } else { + for (size_type i = 0, e = num_blocks() - 1; i < e; ++i) { + if (m_bits[i] != all_ones) { + return false; + } + } + block_type const mask = ~(~static_cast(0) << extra_bits); + if (m_highest_block() != mask) { + return false; + } + } + return true; +} + template bool dynamic_bitset::any() const { @@ -992,7 +1075,7 @@ dynamic_bitset::operator~() const template typename dynamic_bitset::size_type -dynamic_bitset::count() const +dynamic_bitset::count() const BOOST_NOEXCEPT { using detail::dynamic_bitset_impl::table_width; using detail::dynamic_bitset_impl::access_by_bytes; @@ -1101,7 +1184,7 @@ to_ulong() const // Check for overflows. This may be a performance burden on very // large bitsets but is required by the specification, sorry if (find_next(ulong_width - 1) != npos) - throw std::overflow_error("boost::dynamic_bitset::to_ulong overflow"); + BOOST_THROW_EXCEPTION(std::overflow_error("boost::dynamic_bitset::to_ulong overflow")); // Ok, from now on we can be sure there's no "on" bit @@ -1126,21 +1209,21 @@ to_ulong() const template inline typename dynamic_bitset::size_type -dynamic_bitset::size() const +dynamic_bitset::size() const BOOST_NOEXCEPT { return m_num_bits; } template inline typename dynamic_bitset::size_type -dynamic_bitset::num_blocks() const +dynamic_bitset::num_blocks() const BOOST_NOEXCEPT { return m_bits.size(); } template inline typename dynamic_bitset::size_type -dynamic_bitset::max_size() const +dynamic_bitset::max_size() const BOOST_NOEXCEPT { // Semantics of vector<>::max_size() aren't very clear // (see lib issue 197) and many library implementations @@ -1161,7 +1244,7 @@ dynamic_bitset::max_size() const } template -inline bool dynamic_bitset::empty() const +inline bool dynamic_bitset::empty() const BOOST_NOEXCEPT { return size() == 0; } @@ -1230,7 +1313,7 @@ dynamic_bitset::m_do_find_from(size_type first_block) const if (i >= num_blocks()) return npos; // not found - return i * bits_per_block + boost::lowest_bit(m_bits[i]); + return i * bits_per_block + static_cast(boost::lowest_bit(m_bits[i])); } @@ -1257,11 +1340,11 @@ dynamic_bitset::find_next(size_type pos) const const size_type blk = block_index(pos); const block_width_type ind = bit_index(pos); - // mask out bits before pos - const Block fore = m_bits[blk] & ( ~Block(0) << ind ); + // shift bits upto one immediately after current + const Block fore = m_bits[blk] >> ind; return fore? - blk * bits_per_block + lowest_bit(fore) + pos + static_cast(lowest_bit(fore)) : m_do_find_from(blk + 1); @@ -1422,19 +1505,20 @@ operator<<(std::basic_ostream& os, const Ch zero = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0'); const Ch one = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1'); - try { + BOOST_TRY { - typedef typename dynamic_bitset::size_type bitsetsize_type; + typedef typename dynamic_bitset::size_type bitset_size_type; typedef basic_streambuf buffer_type; buffer_type * buf = os.rdbuf(); - size_t npad = os.width() <= 0 // careful: os.width() is signed (and can be < 0) - || (bitsetsize_type) os.width() <= b.size()? 0 : os.width() - b.size(); + // careful: os.width() is signed (and can be < 0) + const bitset_size_type width = (os.width() <= 0) ? 0 : static_cast(os.width()); + streamsize npad = (width <= b.size()) ? 0 : width - b.size(); const Ch fill_char = os.fill(); const ios_base::fmtflags adjustfield = os.flags() & ios_base::adjustfield; - // if needed fill at left; pad is decresed along the way + // if needed fill at left; pad is decreased along the way if (adjustfield != ios_base::left) { for (; 0 < npad; --npad) if (Tr::eq_int_type(Tr::eof(), buf->sputc(fill_char))) { @@ -1445,7 +1529,7 @@ operator<<(std::basic_ostream& os, if (err == ok) { // output the bitset - for (bitsetsize_type i = b.size(); 0 < i; --i) { + for (bitset_size_type i = b.size(); 0 < i; --i) { typename buffer_type::int_type ret = buf->sputc(b.test(i-1)? one : zero); if (Tr::eq_int_type(Tr::eof(), ret)) { @@ -1468,13 +1552,14 @@ operator<<(std::basic_ostream& os, os.width(0); - } catch (...) { // see std 27.6.1.1/4 + } BOOST_CATCH (...) { // see std 27.6.1.1/4 bool rethrow = false; - try { os.setstate(ios_base::failbit); } catch (...) { rethrow = true; } + BOOST_TRY { os.setstate(ios_base::failbit); } BOOST_CATCH (...) { rethrow = true; } BOOST_CATCH_END if (rethrow) - throw; + BOOST_RETHROW; } + BOOST_CATCH_END } if(err != ok) @@ -1520,7 +1605,7 @@ operator>>(std::istream& is, dynamic_bitset& b) const std::streamsize w = is.width(); const size_type limit = w > 0 && static_cast(w) < b.max_size() - ? w : b.max_size(); + ? static_cast(w) : b.max_size(); typename bitset_type::bit_appender appender(b); std::streambuf * buf = is.rdbuf(); for(int c = buf->sgetc(); appender.get_count() < limit; c = buf->snextc() ) { @@ -1533,13 +1618,14 @@ operator>>(std::istream& is, dynamic_bitset& b) break; // non digit character else { - try { + BOOST_TRY { appender.do_append(char(c) == '1'); } - catch(...) { + BOOST_CATCH(...) { is.setstate(std::ios::failbit); // assume this can't throw - throw; + BOOST_RETHROW; } + BOOST_CATCH_END } } // for @@ -1568,7 +1654,7 @@ operator>>(std::basic_istream& is, dynamic_bitset& b) const streamsize w = is.width(); const size_type limit = 0 < w && static_cast(w) < b.max_size()? - w : b.max_size(); + static_cast(w) : b.max_size(); ios_base::iostate err = ios_base::goodbit; typename basic_istream::sentry cerberos(is); // skips whitespaces @@ -1580,7 +1666,7 @@ operator>>(std::basic_istream& is, dynamic_bitset& b) const Ch one = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1'); b.clear(); - try { + BOOST_TRY { typename bitset_type::bit_appender appender(b); basic_streambuf * buf = is.rdbuf(); typename Tr::int_type c = buf->sgetc(); @@ -1603,7 +1689,7 @@ operator>>(std::basic_istream& is, dynamic_bitset& b) } // for } - catch (...) { + BOOST_CATCH (...) { // catches from stream buf, or from vector: // // bits_stored bits have been extracted and stored, and @@ -1611,13 +1697,15 @@ operator>>(std::basic_istream& is, dynamic_bitset& b) // append to the underlying vector (out of memory) bool rethrow = false; // see std 27.6.1.1/4 - try { is.setstate(ios_base::badbit); } - catch(...) { rethrow = true; } + BOOST_TRY { is.setstate(ios_base::badbit); } + BOOST_CATCH(...) { rethrow = true; } + BOOST_CATCH_END if (rethrow) - throw; + BOOST_RETHROW; } + BOOST_CATCH_END } is.width(0); @@ -1694,7 +1782,7 @@ inline typename dynamic_bitset::size_type dynamic_bitset::calc_num_blocks(size_type num_bits) { return num_bits / bits_per_block - + static_cast( num_bits % bits_per_block != 0 ); + + static_cast( num_bits % bits_per_block != 0 ); } // gives a reference to the highest block diff --git a/3party/boost/boost/exception.hpp b/3party/boost/boost/exception.hpp deleted file mode 100644 index 6424159c6d..0000000000 --- a/3party/boost/boost/exception.hpp +++ /dev/null @@ -1,11 +0,0 @@ -//Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. - -//Distributed under the Boost Software License, Version 1.0. (See accompanying -//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef UUID_1D94A7C6054E11DB9804B622A1EF5492 -#define UUID_1D94A7C6054E11DB9804B622A1EF5492 - -#error The header has been deprecated. Please #include instead. - -#endif diff --git a/3party/boost/boost/exception/N3757.hpp b/3party/boost/boost/exception/N3757.hpp new file mode 100644 index 0000000000..23b06066b1 --- /dev/null +++ b/3party/boost/boost/exception/N3757.hpp @@ -0,0 +1,46 @@ +//Copyright (c) 2006-2013 Emil Dotchevski and Reverge Studios, Inc. + +//Distributed under the Boost Software License, Version 1.0. (See accompanying +//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef UUID_9011016A11A711E3B46CD9FA6088709B +#define UUID_9011016A11A711E3B46CD9FA6088709B +#if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#pragma GCC system_header +#endif +#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#pragma warning(push,1) +#endif + +#include +#include + +namespace +boost + { + //Here we're using the boost::error_info machinery to store the info in the exception + //object. Within the context of N3757, this is strictly an implementation detail. + + template + inline + void + exception:: + set( typename Tag::type const & v ) + { + exception_detail::set_info(*this,error_info(v)); + } + + template + inline + typename Tag::type const * + exception:: + get() const + { + return get_error_info >(*this); + } + } + +#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#pragma warning(pop) +#endif +#endif diff --git a/3party/boost/boost/exception/detail/attribute_noreturn.hpp b/3party/boost/boost/exception/detail/attribute_noreturn.hpp deleted file mode 100644 index ae9f031efe..0000000000 --- a/3party/boost/boost/exception/detail/attribute_noreturn.hpp +++ /dev/null @@ -1,17 +0,0 @@ -//Copyright (c) 2009 Emil Dotchevski and Reverge Studios, Inc. - -//Distributed under the Boost Software License, Version 1.0. (See accompanying -//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#ifndef UUID_61531AB0680611DEADD5846855D89593 -#define UUID_61531AB0680611DEADD5846855D89593 - -#if defined(_MSC_VER) -#define BOOST_ATTRIBUTE_NORETURN __declspec(noreturn) -#elif defined(__GNUC__) -#define BOOST_ATTRIBUTE_NORETURN __attribute__((__noreturn__)) -#else -#define BOOST_ATTRIBUTE_NORETURN -#endif - -#endif diff --git a/3party/boost/boost/exception/detail/clone_current_exception.hpp b/3party/boost/boost/exception/detail/clone_current_exception.hpp index cc201b908d..6fc1374737 100644 --- a/3party/boost/boost/exception/detail/clone_current_exception.hpp +++ b/3party/boost/boost/exception/detail/clone_current_exception.hpp @@ -1,10 +1,16 @@ -//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. +//Copyright (c) 2006-2013 Emil Dotchevski and Reverge Studios, Inc. //Distributed under the Boost Software License, Version 1.0. (See accompanying //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef UUID_81522C0EB56511DFAB613DB0DFD72085 #define UUID_81522C0EB56511DFAB613DB0DFD72085 +#if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#pragma GCC system_header +#endif +#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#pragma warning(push,1) +#endif #ifdef BOOST_NO_EXCEPTIONS # error This header requires exception handling to be enabled. @@ -44,4 +50,7 @@ boost } } +#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#pragma warning(pop) +#endif #endif diff --git a/3party/boost/boost/exception/detail/exception_ptr.hpp b/3party/boost/boost/exception/detail/exception_ptr.hpp index b2ee3656b9..530a6bd629 100644 --- a/3party/boost/boost/exception/detail/exception_ptr.hpp +++ b/3party/boost/boost/exception/detail/exception_ptr.hpp @@ -21,6 +21,9 @@ #include #include #include +//#ifndef BOOST_NO_RTTI +//#include +//#endif #include #include #include @@ -31,7 +34,7 @@ namespace boost { class exception_ptr; - BOOST_ATTRIBUTE_NORETURN void rethrow_exception( exception_ptr const & ); + BOOST_NORETURN void rethrow_exception( exception_ptr const & ); exception_ptr current_exception(); class @@ -89,7 +92,7 @@ boost std::string to_string( original_exception_type const & x ) { - return x.value()->name(); + return /*units::detail::demangle*/(x.value()->name()); } #endif @@ -118,10 +121,12 @@ boost { Exception ba; exception_detail::clone_impl c(ba); +#ifndef BOOST_EXCEPTION_DISABLE c << throw_function(BOOST_CURRENT_FUNCTION) << throw_file(__FILE__) << throw_line(__LINE__); +#endif static exception_ptr ep(shared_ptr(new exception_detail::clone_impl(c))); return ep; } @@ -449,7 +454,7 @@ boost return ret; } - BOOST_ATTRIBUTE_NORETURN + BOOST_NORETURN inline void rethrow_exception( exception_ptr const & p ) diff --git a/3party/boost/boost/exception/detail/type_info.hpp b/3party/boost/boost/exception/detail/type_info.hpp index 15fa1c49f4..0af8ef52ee 100644 --- a/3party/boost/boost/exception/detail/type_info.hpp +++ b/3party/boost/boost/exception/detail/type_info.hpp @@ -15,9 +15,9 @@ #include #include #include -#ifndef BOOST_NO_TYPEID -#include -#endif +//#ifndef BOOST_NO_TYPEID +//#include +//#endif #include namespace @@ -31,7 +31,7 @@ boost #ifdef BOOST_NO_TYPEID return BOOST_CURRENT_FUNCTION; #else - return units::detail::demangle(typeid(T*).name()); + return /*units::detail::demangle*/(typeid(T*).name()); #endif } @@ -43,7 +43,7 @@ boost #ifdef BOOST_NO_TYPEID return BOOST_CURRENT_FUNCTION; #else - return units::detail::demangle(typeid(T).name()); + return /*units::detail::demangle*/(typeid(T).name()); #endif } diff --git a/3party/boost/boost/exception/diagnostic_information.hpp b/3party/boost/boost/exception/diagnostic_information.hpp index 5ac8c6b15c..7889c8f9f3 100644 --- a/3party/boost/boost/exception/diagnostic_information.hpp +++ b/3party/boost/boost/exception/diagnostic_information.hpp @@ -16,9 +16,9 @@ #include #include #include -#ifndef BOOST_NO_RTTI -#include -#endif +//#ifndef BOOST_NO_RTTI +//#include +//#endif #include #include #include @@ -151,7 +151,7 @@ boost #ifndef BOOST_NO_RTTI if ( verbose ) tmp << std::string("Dynamic exception type: ") << - units::detail::demangle((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_->name()) << '\n'; + /*units::detail::demangle*/((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_->name()) << '\n'; #endif if( with_what && se && verbose ) tmp << "std::exception::what: " << wh << '\n'; diff --git a/3party/boost/boost/exception/exception.hpp b/3party/boost/boost/exception/exception.hpp index 31d43178df..d762cf827e 100644 --- a/3party/boost/boost/exception/exception.hpp +++ b/3party/boost/boost/exception/exception.hpp @@ -207,6 +207,12 @@ boost class exception { + // + public: + template void set( typename Tag::type const & ); + template typename Tag::type const * get() const; + // + protected: exception(): diff --git a/3party/boost/boost/filesystem/operations.hpp b/3party/boost/boost/filesystem/operations.hpp index dc01b7d8ba..9005b3e94b 100644 --- a/3party/boost/boost/filesystem/operations.hpp +++ b/3party/boost/boost/filesystem/operations.hpp @@ -33,8 +33,9 @@ #include #include #include +#include +#include #include - #include #include // for pair #include @@ -54,6 +55,116 @@ namespace boost namespace filesystem { + //--------------------------------------------------------------------------------------// + // // + // class filesystem_error // + // // + //--------------------------------------------------------------------------------------// + + class BOOST_SYMBOL_VISIBLE filesystem_error : public system::system_error + { + // see http://www.boost.org/more/error_handling.html for design rationale + + // all functions are inline to avoid issues with crossing dll boundaries + + // functions previously throw() are now BOOST_NOEXCEPT_OR_NOTHROW + // functions previously without throw() are now BOOST_NOEXCEPT + + public: + // compiler generates copy constructor and copy assignment + + filesystem_error( + const std::string & what_arg, system::error_code ec) BOOST_NOEXCEPT + : system::system_error(ec, what_arg) + { + try + { + m_imp_ptr.reset(new m_imp); + } + catch (...) { m_imp_ptr.reset(); } + } + + filesystem_error( + const std::string & what_arg, const path& path1_arg, + system::error_code ec) BOOST_NOEXCEPT + : system::system_error(ec, what_arg) + { + try + { + m_imp_ptr.reset(new m_imp); + m_imp_ptr->m_path1 = path1_arg; + } + catch (...) { m_imp_ptr.reset(); } + } + + filesystem_error( + const std::string & what_arg, const path& path1_arg, + const path& path2_arg, system::error_code ec) BOOST_NOEXCEPT + : system::system_error(ec, what_arg) + { + try + { + m_imp_ptr.reset(new m_imp); + m_imp_ptr->m_path1 = path1_arg; + m_imp_ptr->m_path2 = path2_arg; + } + catch (...) { m_imp_ptr.reset(); } + } + + ~filesystem_error() BOOST_NOEXCEPT_OR_NOTHROW{} + + const path& path1() const BOOST_NOEXCEPT + { + static const path empty_path; + return m_imp_ptr.get() ? m_imp_ptr->m_path1 : empty_path; + } + const path& path2() const BOOST_NOEXCEPT + { + static const path empty_path; + return m_imp_ptr.get() ? m_imp_ptr->m_path2 : empty_path; + } + + const char* what() const BOOST_NOEXCEPT_OR_NOTHROW + { + if (!m_imp_ptr.get()) + return system::system_error::what(); + + try + { + if (m_imp_ptr->m_what.empty()) + { + m_imp_ptr->m_what = system::system_error::what(); + if (!m_imp_ptr->m_path1.empty()) + { + m_imp_ptr->m_what += ": \""; + m_imp_ptr->m_what += m_imp_ptr->m_path1.string(); + m_imp_ptr->m_what += "\""; + } + if (!m_imp_ptr->m_path2.empty()) + { + m_imp_ptr->m_what += ", \""; + m_imp_ptr->m_what += m_imp_ptr->m_path2.string(); + m_imp_ptr->m_what += "\""; + } + } + return m_imp_ptr->m_what.c_str(); + } + catch (...) + { + return system::system_error::what(); + } + } + + private: + struct m_imp + { + path m_path1; // may be empty() + path m_path2; // may be empty() + std::string m_what; // not built until needed + }; + boost::shared_ptr m_imp_ptr; + }; + //--------------------------------------------------------------------------------------// // file_type // //--------------------------------------------------------------------------------------// @@ -108,7 +219,7 @@ namespace boost others_exe = 01, // S_IXOTH, Execute/search permission, others others_all = 07, // S_IRWXO, Read, write, execute/search by others - all_all = owner_all|group_all|others_all, // 0777 + all_all = 0777, // owner_all|group_all|others_all // other POSIX bits @@ -121,7 +232,7 @@ namespace boost // (SVID-v4.2) On directories: restricted deletion flag // Also see http://en.wikipedia.org/wiki/Sticky_bit - perms_mask = all_all|set_uid_on_exe|set_gid_on_exe|sticky_bit, // 07777 + perms_mask = 07777, // all_all|set_uid_on_exe|set_gid_on_exe|sticky_bit perms_not_known = 0xFFFF, // present when directory_entry cache not loaded @@ -721,6 +832,37 @@ namespace detail { return m_imp == rhs.m_imp; } }; + // enable C++11 range-base for statement use ---------------------------------------// + + // begin() and end() are only used by a range-based for statement in the context of + // auto - thus the top-level const is stripped - so returning const is harmless and + // emphasizes begin() is just a pass through. + inline + const directory_iterator& begin(const directory_iterator& iter) {return iter;} + inline + directory_iterator end(const directory_iterator&) {return directory_iterator();} + + // enable BOOST_FOREACH ------------------------------------------------------------// + + inline + directory_iterator& range_begin(directory_iterator& iter) {return iter;} + inline + directory_iterator range_begin(const directory_iterator& iter) {return iter;} + inline + directory_iterator range_end(const directory_iterator&) {return directory_iterator();} + } // namespace filesystem + + // namespace boost template specializations + template<> + struct range_mutable_iterator + { typedef boost::filesystem::directory_iterator type; }; + template<> + struct range_const_iterator + { typedef boost::filesystem::directory_iterator type; }; + +namespace filesystem +{ + //--------------------------------------------------------------------------------------// // // // recursive_directory_iterator helpers // @@ -751,6 +893,8 @@ namespace detail void increment(system::error_code* ec); // ec == 0 means throw on error + bool push_directory(system::error_code& ec) BOOST_NOEXCEPT; + void pop(); }; @@ -760,9 +904,14 @@ namespace detail // clients of struct 'boost::filesystem::detail::recur_dir_itr_imp' inline - void recur_dir_itr_imp::increment(system::error_code* ec) - // ec == 0 means throw on error + bool recur_dir_itr_imp::push_directory(system::error_code& ec) BOOST_NOEXCEPT + // Returns: true if push occurs, otherwise false. Always returns false on error. { + ec.clear(); + + // Discover if the iterator is for a directory that needs to be recursed into, + // taking symlinks and options into account. + if ((m_options & symlink_option::_detail_no_push) == symlink_option::_detail_no_push) m_options &= ~symlink_option::_detail_no_push; @@ -775,40 +924,78 @@ namespace detail // && is_directory(m_stack.top()->status())) ... // The predicate code has since been rewritten to pass error_code arguments, // per ticket #5653. - bool or_pred = (m_options & symlink_option::recurse) == symlink_option::recurse - || (ec == 0 ? !is_symlink(m_stack.top()->symlink_status()) - : !is_symlink(m_stack.top()->symlink_status(*ec))); - if (ec != 0 && *ec) - return; - bool and_pred = or_pred && (ec == 0 ? is_directory(m_stack.top()->status()) - : is_directory(m_stack.top()->status(*ec))); - if (ec != 0 && *ec) - return; - if (and_pred) + file_status symlink_stat; + + if ((m_options & symlink_option::recurse) != symlink_option::recurse) { - if (ec == 0) - m_stack.push(directory_iterator(m_stack.top()->path())); - else - { - m_stack.push(directory_iterator(m_stack.top()->path(), *ec)); - if (*ec) - return; - } - if (m_stack.top() != directory_iterator()) + symlink_stat = m_stack.top()->symlink_status(ec); + if (ec) + return false; + } + + if ((m_options & symlink_option::recurse) == symlink_option::recurse + || !is_symlink(symlink_stat)) + { + file_status stat = m_stack.top()->status(ec); + if (ec || !is_directory(stat)) + return false; + + directory_iterator next(m_stack.top()->path(), ec); + if (!ec && next != directory_iterator()) { + m_stack.push(next); ++m_level; - return; + return true; } - m_stack.pop(); } } + return false; + } + inline + void recur_dir_itr_imp::increment(system::error_code* ec) + // ec == 0 means throw on error + // + // Invariant: On return, the top of the iterator stack is the next valid (possibly + // end) iterator, regardless of whether or not an error is reported, and regardless of + // whether any error is reported by exception or error code. In other words, progress + // is always made so a loop on the iterator will always eventually terminate + // regardless of errors. + { + system::error_code ec_push_directory; + + // if various conditions are met, push a directory_iterator into the iterator stack + if (push_directory(ec_push_directory)) + { + if (ec) + ec->clear(); + return; + } + + // Do the actual increment operation on the top iterator in the iterator + // stack, popping the stack if necessary, until either the stack is empty or a + // non-end iterator is reached. while (!m_stack.empty() && ++m_stack.top() == directory_iterator()) { m_stack.pop(); --m_level; } + + // report errors if any + if (ec_push_directory) + { + if (ec) + *ec = ec_push_directory; + else + { + BOOST_FILESYSTEM_THROW(filesystem_error( + "filesystem::recursive_directory_iterator directory error", + ec_push_directory)); + } + } + else if (ec) + ec->clear(); } inline @@ -967,117 +1154,46 @@ namespace detail }; + // enable C++11 range-base for statement use ---------------------------------------// + + // begin() and end() are only used by a range-based for statement in the context of + // auto - thus the top-level const is stripped - so returning const is harmless and + // emphasizes begin() is just a pass through. + inline + const recursive_directory_iterator& begin(const recursive_directory_iterator& iter) + {return iter;} + inline + recursive_directory_iterator end(const recursive_directory_iterator&) + {return recursive_directory_iterator();} + + // enable BOOST_FOREACH ------------------------------------------------------------// + + inline + recursive_directory_iterator& range_begin(recursive_directory_iterator& iter) + {return iter;} + inline + recursive_directory_iterator range_begin(const recursive_directory_iterator& iter) + {return iter;} + inline + recursive_directory_iterator range_end(const recursive_directory_iterator&) + {return recursive_directory_iterator();} + } // namespace filesystem + + // namespace boost template specializations + template<> + struct range_mutable_iterator + { typedef boost::filesystem::recursive_directory_iterator type; }; + template<> + struct range_const_iterator + { typedef boost::filesystem::recursive_directory_iterator type; }; + +namespace filesystem +{ + # if !defined(BOOST_FILESYSTEM_NO_DEPRECATED) typedef recursive_directory_iterator wrecursive_directory_iterator; # endif -//--------------------------------------------------------------------------------------// -// // -// class filesystem_error // -// // -//--------------------------------------------------------------------------------------// - - class BOOST_SYMBOL_VISIBLE filesystem_error : public system::system_error - { - // see http://www.boost.org/more/error_handling.html for design rationale - - // all functions are inline to avoid issues with crossing dll boundaries - - public: - // compiler generates copy constructor and copy assignment - - filesystem_error( - const std::string & what_arg, system::error_code ec) - : system::system_error(ec, what_arg) - { - try - { - m_imp_ptr.reset(new m_imp); - } - catch (...) { m_imp_ptr.reset(); } - } - - filesystem_error( - const std::string & what_arg, const path& path1_arg, - system::error_code ec) - : system::system_error(ec, what_arg) - { - try - { - m_imp_ptr.reset(new m_imp); - m_imp_ptr->m_path1 = path1_arg; - } - catch (...) { m_imp_ptr.reset(); } - } - - filesystem_error( - const std::string & what_arg, const path& path1_arg, - const path& path2_arg, system::error_code ec) - : system::system_error(ec, what_arg) - { - try - { - m_imp_ptr.reset(new m_imp); - m_imp_ptr->m_path1 = path1_arg; - m_imp_ptr->m_path2 = path2_arg; - } - catch (...) { m_imp_ptr.reset(); } - } - - ~filesystem_error() throw() {} - - const path& path1() const - { - static const path empty_path; - return m_imp_ptr.get() ? m_imp_ptr->m_path1 : empty_path ; - } - const path& path2() const - { - static const path empty_path; - return m_imp_ptr.get() ? m_imp_ptr->m_path2 : empty_path ; - } - - const char* what() const throw() - { - if (!m_imp_ptr.get()) - return system::system_error::what(); - - try - { - if (m_imp_ptr->m_what.empty()) - { - m_imp_ptr->m_what = system::system_error::what(); - if (!m_imp_ptr->m_path1.empty()) - { - m_imp_ptr->m_what += ": \""; - m_imp_ptr->m_what += m_imp_ptr->m_path1.string(); - m_imp_ptr->m_what += "\""; - } - if (!m_imp_ptr->m_path2.empty()) - { - m_imp_ptr->m_what += ", \""; - m_imp_ptr->m_what += m_imp_ptr->m_path2.string(); - m_imp_ptr->m_what += "\""; - } - } - return m_imp_ptr->m_what.c_str(); - } - catch (...) - { - return system::system_error::what(); - } - } - - private: - struct m_imp - { - path m_path1; // may be empty() - path m_path2; // may be empty() - std::string m_what; // not built until needed - }; - boost::shared_ptr m_imp_ptr; - }; - // test helper -----------------------------------------------------------------------// // Not part of the documented interface since false positives are possible; diff --git a/3party/boost/boost/flyweight.hpp b/3party/boost/boost/flyweight.hpp index 6fe3042681..852ea8ecf6 100644 --- a/3party/boost/boost/flyweight.hpp +++ b/3party/boost/boost/flyweight.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_HPP #define BOOST_FLYWEIGHT_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/assoc_container_factory.hpp b/3party/boost/boost/flyweight/assoc_container_factory.hpp index bb5ae76541..96deee3ee9 100644 --- a/3party/boost/boost/flyweight/assoc_container_factory.hpp +++ b/3party/boost/boost/flyweight/assoc_container_factory.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2009 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_ASSOC_CONTAINER_FACTORY_HPP #define BOOST_FLYWEIGHT_ASSOC_CONTAINER_FACTORY_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif @@ -22,6 +22,10 @@ #include #include +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#include +#endif + namespace boost{namespace flyweights{namespace detail{ BOOST_FLYWEIGHT_NESTED_XXX_IF_NOT_PLACEHOLDER_EXPRESSION_DEF(iterator); BOOST_FLYWEIGHT_NESTED_XXX_IF_NOT_PLACEHOLDER_EXPRESSION_DEF(value_type); @@ -57,6 +61,13 @@ public: return cont.insert(x).first; } +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + handle_type insert(entry_type&& x) + { + return cont.insert(std::move(x)).first; + } +#endif + void erase(handle_type h) { cont.erase(h); diff --git a/3party/boost/boost/flyweight/assoc_container_factory_fwd.hpp b/3party/boost/boost/flyweight/assoc_container_factory_fwd.hpp index 2d0c356d74..278c04d711 100644 --- a/3party/boost/boost/flyweight/assoc_container_factory_fwd.hpp +++ b/3party/boost/boost/flyweight/assoc_container_factory_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_ASSOC_CONTAINER_FACTORY_FWD_HPP #define BOOST_FLYWEIGHT_ASSOC_CONTAINER_FACTORY_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/detail/default_value_policy.hpp b/3party/boost/boost/flyweight/detail/default_value_policy.hpp index 186e1e0d8b..4209a69c1c 100644 --- a/3party/boost/boost/flyweight/detail/default_value_policy.hpp +++ b/3party/boost/boost/flyweight/detail/default_value_policy.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2008 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -9,12 +9,14 @@ #ifndef BOOST_FLYWEIGHT_DETAIL_DEFAULT_VALUE_POLICY_HPP #define BOOST_FLYWEIGHT_DETAIL_DEFAULT_VALUE_POLICY_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif +#include /* keep it first to prevent nasty warns in MSVC */ +#include +#include #include -#include /* Default value policy: the key is the same as the value. */ @@ -35,10 +37,31 @@ struct default_value_policy:value_marker { /* template ctors */ -#define BOOST_FLYWEIGHT_PERFECT_FWD_NAME explicit rep_type -#define BOOST_FLYWEIGHT_PERFECT_FWD_BODY(n) \ - :x(BOOST_PP_ENUM_PARAMS(n,t)){} -#include +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)&&\ + !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)&&\ + BOOST_WORKAROUND(__GNUC__,<=4)&&(__GNUC__<4||__GNUC_MINOR__<=4) + +/* GCC 4.4.2 (and probably prior) bug: the default ctor generated by the + * variadic temmplate ctor below fails to value-initialize x. + */ + + rep_type():x(){} +#endif + +#define BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY(args) \ + :x(BOOST_FLYWEIGHT_FORWARD(args)){} + + BOOST_FLYWEIGHT_PERFECT_FWD( + explicit rep_type, + BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY) + +#undef BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY + + rep_type(const rep_type& r):x(r.x){} + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + rep_type(rep_type&& r):x(std::move(r.x)){} +#endif operator const value_type&()const{return x;} @@ -47,6 +70,10 @@ struct default_value_policy:value_marker static void construct_value(const rep_type&){} static void copy_value(const rep_type&){} + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + static void move_value(const rep_type&){} +#endif }; } /* namespace flyweights::detail */ diff --git a/3party/boost/boost/flyweight/detail/dyn_perfect_fwd.hpp b/3party/boost/boost/flyweight/detail/dyn_perfect_fwd.hpp index e921718a45..28b0c42c82 100644 --- a/3party/boost/boost/flyweight/detail/dyn_perfect_fwd.hpp +++ b/3party/boost/boost/flyweight/detail/dyn_perfect_fwd.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2008 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -6,7 +6,46 @@ * See http://www.boost.org/libs/flyweight for library home page. */ -/* no include guards */ +#ifndef BOOST_FLYWEIGHT_DETAIL_DYN_PERFECT_FWD_HPP +#define BOOST_FLYWEIGHT_DETAIL_DYN_PERFECT_FWD_HPP + +#if defined(_MSC_VER) +#pragma once +#endif + +#include + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + +#include +#include +#include +#include +#include +#include + +#define BOOST_FLYWEIGHT_PERFECT_FWD_ARG(z,n,_) \ +BOOST_PP_CAT(T,n)&& BOOST_PP_CAT(t,n) + +#define BOOST_FLYWEIGHT_PERFECT_FWD_N_AUX(n,name,body) \ +template \ +name(BOOST_PP_ENUM(n,BOOST_FLYWEIGHT_PERFECT_FWD_ARG,~)) \ +body((FORWARD)(n)) + +#define BOOST_FLYWEIGHT_PERFECT_FWD_N(z,n,data) \ +BOOST_FLYWEIGHT_PERFECT_FWD_N_AUX( \ + n,BOOST_PP_SEQ_HEAD(data), \ + BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(data))) + +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +name()body((ENUM)(0)) \ +BOOST_PP_REPEAT_FROM_TO( \ + 1,BOOST_PP_ADD(BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS,1), \ + BOOST_FLYWEIGHT_PERFECT_FWD_N,(name)(body)) + +#else + +/* no rvalue refs -> [const] Tn& overloads */ #include #include @@ -16,6 +55,7 @@ #include #include #include +#include #include #define BOOST_FLYWEIGHT_CONST(b) BOOST_PP_CAT(BOOST_FLYWEIGHT_CONST,b) @@ -34,42 +74,35 @@ BOOST_PP_CAT(T,n)& BOOST_PP_CAT(t,n) * marked const or not according to the given mask (a seq of 0 or 1) */ -#define BOOST_FLYWEIGHT_PERFECT_FWD(r,mask) \ +#define BOOST_FLYWEIGHT_PERFECT_FWD_MASK_AUX(r,name,body,mask) \ template \ -BOOST_FLYWEIGHT_PERFECT_FWD_NAME( \ +name( \ BOOST_PP_ENUM( \ BOOST_PP_SEQ_SIZE(mask),BOOST_FLYWEIGHT_PERFECT_FWD_ARG,mask)) \ -BOOST_FLYWEIGHT_PERFECT_FWD_BODY(BOOST_PP_SEQ_SIZE(mask)) +body((ENUM)(BOOST_PP_SEQ_SIZE(mask))) + +#define BOOST_FLYWEIGHT_PERFECT_FWD_MASK(r,data) \ +BOOST_FLYWEIGHT_PERFECT_FWD_MASK_AUX( \ + r, \ + BOOST_PP_SEQ_ELEM(0,BOOST_PP_SEQ_HEAD(data)), \ + BOOST_PP_SEQ_ELEM(1,BOOST_PP_SEQ_HEAD(data)), \ + BOOST_PP_SEQ_TAIL(data)) #define BOOST_FLYWEIGHT_01(z,n,_) ((0)(1)) /* Perfect forwarding overloads accepting 1 to n args */ -#define BOOST_FLYWEIGHT_PERFECT_FWDS_N(z,n,_) \ +#define BOOST_FLYWEIGHT_PERFECT_FWD_N(z,n,data) \ BOOST_PP_SEQ_FOR_EACH_PRODUCT( \ - BOOST_FLYWEIGHT_PERFECT_FWD, \ + BOOST_FLYWEIGHT_PERFECT_FWD_MASK, \ + ((data)) \ BOOST_PP_REPEAT(n,BOOST_FLYWEIGHT_01,~)) -#define BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS \ +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +name()body((ENUM)(0)) \ BOOST_PP_REPEAT_FROM_TO( \ 1,BOOST_PP_ADD(BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS,1), \ - BOOST_FLYWEIGHT_PERFECT_FWDS_N,~) + BOOST_FLYWEIGHT_PERFECT_FWD_N,(name)(body)) -/* generate the overloads */ - -BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS - -/* clean up */ - -#undef BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS -#undef BOOST_FLYWEIGHT_01 -#undef BOOST_FLYWEIGHT_PERFECT_FWD -#undef BOOST_FLYWEIGHT_PERFECT_FWD_ARG -#undef BOOST_FLYWEIGHT_CONST1 -#undef BOOST_FLYWEIGHT_CONST0 -#undef BOOST_FLYWEIGHT_CONST - -/* user supplied argument macros */ - -#undef BOOST_FLYWEIGHT_PERFECT_FWD_BODY -#undef BOOST_FLYWEIGHT_PERFECT_FWD_NAME +#endif +#endif diff --git a/3party/boost/boost/flyweight/detail/flyweight_core.hpp b/3party/boost/boost/flyweight/detail/flyweight_core.hpp index a55c43e462..8be8586e1b 100644 --- a/3party/boost/boost/flyweight/detail/flyweight_core.hpp +++ b/3party/boost/boost/flyweight/detail/flyweight_core.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2009 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -9,15 +9,15 @@ #ifndef BOOST_FLYWEIGHT_DETAIL_FLYWEIGHT_CORE_HPP #define BOOST_FLYWEIGHT_DETAIL_FLYWEIGHT_CORE_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif #include /* keep it first to prevent nasty warns in MSVC */ #include #include +#include #include -#include #if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) #pragma warning(push) @@ -63,11 +63,12 @@ public: } template - static void erase(const handle_type& h,Checker check) + static void erase(const handle_type& h,Checker chk) { typedef typename core::lock_type lock_type; + core::init(); lock_type lock(core::mutex()); - if(check(h))core::factory().erase(h); + if(chk(h))core::factory().erase(h); } }; @@ -118,16 +119,25 @@ public: /* insert overloads*/ -#define BOOST_FLYWEIGHT_PERFECT_FWD_NAME static handle_type insert -#define BOOST_FLYWEIGHT_PERFECT_FWD_BODY(n) \ -{ \ - return insert_rep(rep_type(BOOST_PP_ENUM_PARAMS(n,t))); \ +#define BOOST_FLYWEIGHT_PERFECT_FWD_INSERT_BODY(args) \ +{ \ + return insert_rep(rep_type(BOOST_FLYWEIGHT_FORWARD(args))); \ } -#include + + BOOST_FLYWEIGHT_PERFECT_FWD( + static handle_type insert, + BOOST_FLYWEIGHT_PERFECT_FWD_INSERT_BODY) + +#undef BOOST_FLYWEIGHT_PERFECT_FWD_INSERT_BODY static handle_type insert(const value_type& x){return insert_value(x);} static handle_type insert(value_type& x){return insert_value(x);} +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + static handle_type insert(const value_type&& x){return insert_value(x);} + static handle_type insert(value_type&& x){return insert_value(std::move(x));} +#endif + static const entry_type& entry(const base_handle_type& h) { return factory().entry(h); @@ -169,7 +179,12 @@ private: init(); entry_type e(x); lock_type lock(mutex()); +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + base_handle_type h(factory().insert(std::move(e))); +#else base_handle_type h(factory().insert(e)); +#endif + BOOST_TRY{ ValuePolicy::construct_value( static_cast(entry(h))); @@ -187,7 +202,13 @@ private: init(); entry_type e((rep_type(x))); lock_type lock(mutex()); + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + base_handle_type h(factory().insert(std::move(e))); +#else base_handle_type h(factory().insert(e)); +#endif + BOOST_TRY{ ValuePolicy::copy_value( static_cast(entry(h))); @@ -200,6 +221,45 @@ private: return static_cast(h); } +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + static handle_type insert_rep(rep_type&& x) + { + init(); + entry_type e(std::move(x)); + lock_type lock(mutex()); + base_handle_type h(factory().insert(std::move(e))); + + BOOST_TRY{ + ValuePolicy::construct_value( + static_cast(entry(h))); + } + BOOST_CATCH(...){ + factory().erase(h); + BOOST_RETHROW; + } + BOOST_CATCH_END + return static_cast(h); + } + + static handle_type insert_value(value_type&& x) + { + init(); + entry_type e(rep_type(std::move(x))); + lock_type lock(mutex()); + base_handle_type h(factory().insert(std::move(e))); + BOOST_TRY{ + ValuePolicy::move_value( + static_cast(entry(h))); + } + BOOST_CATCH(...){ + factory().erase(h); + BOOST_RETHROW; + } + BOOST_CATCH_END + return static_cast(h); + } +#endif + static bool static_initializer; static factory_type* static_factory_ptr; static mutex_type* static_mutex_ptr; diff --git a/3party/boost/boost/flyweight/detail/is_placeholder_expr.hpp b/3party/boost/boost/flyweight/detail/is_placeholder_expr.hpp index a53e8d2dbb..a89aad650b 100644 --- a/3party/boost/boost/flyweight/detail/is_placeholder_expr.hpp +++ b/3party/boost/boost/flyweight/detail/is_placeholder_expr.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_DETAIL_IS_PLACEHOLDER_EXPR_HPP #define BOOST_FLYWEIGHT_DETAIL_IS_PLACEHOLDER_EXPR_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/detail/nested_xxx_if_not_ph.hpp b/3party/boost/boost/flyweight/detail/nested_xxx_if_not_ph.hpp index 8221efb777..32412b41a1 100644 --- a/3party/boost/boost/flyweight/detail/nested_xxx_if_not_ph.hpp +++ b/3party/boost/boost/flyweight/detail/nested_xxx_if_not_ph.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_DETAIL_NESTED_XXX_IF_NOT_PH_HPP #define BOOST_FLYWEIGHT_DETAIL_NESTED_XXX_IF_NOT_PH_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/detail/not_placeholder_expr.hpp b/3party/boost/boost/flyweight/detail/not_placeholder_expr.hpp index a62bd09301..004c67035a 100644 --- a/3party/boost/boost/flyweight/detail/not_placeholder_expr.hpp +++ b/3party/boost/boost/flyweight/detail/not_placeholder_expr.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_DETAIL_NOT_PLACEHOLDER_EXPR_HPP #define BOOST_FLYWEIGHT_DETAIL_NOT_PLACEHOLDER_EXPR_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/detail/perfect_fwd.hpp b/3party/boost/boost/flyweight/detail/perfect_fwd.hpp index 05d670c69f..1e0faa31cc 100644 --- a/3party/boost/boost/flyweight/detail/perfect_fwd.hpp +++ b/3party/boost/boost/flyweight/detail/perfect_fwd.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2008 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -6,23 +6,78 @@ * See http://www.boost.org/libs/flyweight for library home page. */ -/* Brute force implementation of perfect forwarding overloads. - * Usage: include after having defined the argument macros: - * BOOST_FLYWEIGHT_PERFECT_FWD_NAME - * BOOST_FLYWEIGHT_PERFECT_FWD_BODY +#ifndef BOOST_FLYWEIGHT_DETAIL_PERFECT_FWD_HPP +#define BOOST_FLYWEIGHT_DETAIL_PERFECT_FWD_HPP + +#if defined(_MSC_VER) +#pragma once +#endif + +/* C++03-compatible implementation of perfect forwarding. + * Usage: + * + * # define NAME ... + * # define BODY(args) {...BOOST_FLYWEIGHT_FORWARD(args)...} + * BOOST_FLYWEIGHT_PERFECT_FWD(name,body) + * + * where NAME includes the return type and qualifiers (if any) and BODY(args) + * is expected to fo the forwarding through BOOST_FLYWEIGHT_FORWARD(args). + * + * In compilers capable of perfect forwarding, the real thing is provided + * (just one variadic args overload is generated). Otherwise the machinery + * generates n+1 overloads, if rvalue refs are supported, or else 2^(n+1)-1 + * overloads accepting any combination of lvalue refs and const lvalue refs, + * up to BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS args. */ -/* This user_definable macro limits the maximum number of arguments to - * be perfect forwarded. Beware combinatorial explosion: manual perfect - * forwarding for n arguments produces 2^n distinct overloads. - */ +#include /* keep it first to prevent nasty warns in MSVC */ +#include +#include +#include +#include + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#include +#endif + +#define BOOST_FLYWEIGHT_FORWARD_FORWARD_AUX(z,n,_) \ +std::forward(BOOST_PP_CAT(t,n)) + +#define BOOST_FLYWEIGHT_FORWARD_FORWARD(n) \ +BOOST_PP_ENUM(n,BOOST_FLYWEIGHT_FORWARD_FORWARD_AUX,~) + +#define BOOST_FLYWEIGHT_FORWARD_ENUM(n) BOOST_PP_ENUM_PARAMS(n,t) + +#define BOOST_FLYWEIGHT_FORWARD_PASS(arg) arg + +#define BOOST_FLYWEIGHT_FORWARD(args)\ +BOOST_PP_CAT(BOOST_FLYWEIGHT_FORWARD_,BOOST_PP_SEQ_HEAD(args))( \ +BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(args))) + +#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)||\ + defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) #if !defined(BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS) #define BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS 5 #endif +#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS<0 +#error BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS must be >=0 +#endif + #if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS<=5 #include #else #include #endif + +#else + +/* real perfect forwarding */ + +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +templatename(Args&&... args) \ +body((PASS)(std::forward(args)...)) + +#endif +#endif diff --git a/3party/boost/boost/flyweight/detail/pp_perfect_fwd.hpp b/3party/boost/boost/flyweight/detail/pp_perfect_fwd.hpp index 889d4c7e26..bf2ac5a01d 100644 --- a/3party/boost/boost/flyweight/detail/pp_perfect_fwd.hpp +++ b/3party/boost/boost/flyweight/detail/pp_perfect_fwd.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2008 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -6,148 +6,169 @@ * See http://www.boost.org/libs/flyweight for library home page. */ -/* no include guards */ +#ifndef BOOST_FLYWEIGHT_DETAIL_PP_PERFECT_FWD_HPP +#define BOOST_FLYWEIGHT_DETAIL_PP_PERFECT_FWD_HPP + +#if defined(_MSC_VER) +#pragma once +#endif + +#include + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + +#define BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \ +name()body((FORWARD)(0)) #if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=1 -#define BOOST_FLYWEIGHT_PERFECT_FWDS_1 \ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(1)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(1) +#define BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \ +template name(T0&& t0)body((FORWARD)(1)) #endif #if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=2 -#define BOOST_FLYWEIGHT_PERFECT_FWDS_2 \ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(2)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(2)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(2)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(2) +#define BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \ +template name(T0&& t0,T1&& t1)body((FORWARD)(2)) #endif #if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=3 -#define BOOST_FLYWEIGHT_PERFECT_FWDS_3 \ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,T2& t2)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(3)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,const T2& t2)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(3)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,T2& t2)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(3)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,const T2& t2)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(3)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,T2& t2)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(3)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,const T2& t2)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(3)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,T2& t2)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(3)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,const T2& t2)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(3) +#define BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) \ +template name(T0&& t0,T1&& t1,T2&& t2)body((FORWARD)(3)) #endif #if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=4 -#define BOOST_FLYWEIGHT_PERFECT_FWDS_4 \ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,T2& t2,T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,T2& t2,const T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,const T2& t2,T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,const T2& t2,const T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,T2& t2,T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,T2& t2,const T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,const T2& t2,T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,const T2& t2,const T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,T2& t2,T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,T2& t2,const T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,const T2& t2,T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,const T2& t2,const T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,T2& t2,T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,T2& t2,const T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,const T2& t2,T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,const T2& t2,const T3& t3)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(4) +#define BOOST_FLYWEIGHT_PERFECT_FWD_4(name,body) \ +template name(T0&& t0,T1&& t1,T2&& t2,T3&& t3)body((FORWARD)(4)) #endif #if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=5 -#define BOOST_FLYWEIGHT_PERFECT_FWDS_5 \ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,T2& t2,T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,T2& t2,T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,T2& t2,const T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,T2& t2,const T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,const T2& t2,T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,const T2& t2,T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,const T2& t2,const T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,T1& t1,const T2& t2,const T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,T2& t2,T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,T2& t2,T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,T2& t2,const T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,T2& t2,const T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,const T2& t2,T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,const T2& t2,T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,const T2& t2,const T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(T0& t0,const T1& t1,const T2& t2,const T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,T2& t2,T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,T2& t2,T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,T2& t2,const T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,T2& t2,const T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,const T2& t2,T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,const T2& t2,T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,const T2& t2,const T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,T1& t1,const T2& t2,const T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,T2& t2,T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,T2& t2,T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,T2& t2,const T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,T2& t2,const T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,const T2& t2,T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,const T2& t2,T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,const T2& t2,const T3& t3,T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5)\ -template BOOST_FLYWEIGHT_PERFECT_FWD_NAME(const T0& t0,const T1& t1,const T2& t2,const T3& t3,const T4& t4)BOOST_FLYWEIGHT_PERFECT_FWD_BODY(5) +#define BOOST_FLYWEIGHT_PERFECT_FWD_5(name,body) \ +template name(T0&& t0,T1&& t1,T2&& t2,T3&& t3,T4&& t4)body((FORWARD)(5)) +#endif + +#else + +/* no rvalue refs -> [const] Tn& overloads */ + +#define BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \ +name()body((ENUM)(0)) + +#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=1 +#define BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \ +template name(T0& t0)body((ENUM)(1))\ +template name(const T0& t0)body((ENUM)(1)) +#endif + +#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=2 +#define BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \ +template name(T0& t0,T1& t1)body((ENUM)(2))\ +template name(T0& t0,const T1& t1)body((ENUM)(2))\ +template name(const T0& t0,T1& t1)body((ENUM)(2))\ +template name(const T0& t0,const T1& t1)body((ENUM)(2)) +#endif + +#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=3 +#define BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) \ +template name(T0& t0,T1& t1,T2& t2)body((ENUM)(3))\ +template name(T0& t0,T1& t1,const T2& t2)body((ENUM)(3))\ +template name(T0& t0,const T1& t1,T2& t2)body((ENUM)(3))\ +template name(T0& t0,const T1& t1,const T2& t2)body((ENUM)(3))\ +template name(const T0& t0,T1& t1,T2& t2)body((ENUM)(3))\ +template name(const T0& t0,T1& t1,const T2& t2)body((ENUM)(3))\ +template name(const T0& t0,const T1& t1,T2& t2)body((ENUM)(3))\ +template name(const T0& t0,const T1& t1,const T2& t2)body((ENUM)(3)) +#endif + +#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=4 +#define BOOST_FLYWEIGHT_PERFECT_FWD_4(name,body) \ +template name(T0& t0,T1& t1,T2& t2,T3& t3)body((ENUM)(4))\ +template name(T0& t0,T1& t1,T2& t2,const T3& t3)body((ENUM)(4))\ +template name(T0& t0,T1& t1,const T2& t2,T3& t3)body((ENUM)(4))\ +template name(T0& t0,T1& t1,const T2& t2,const T3& t3)body((ENUM)(4))\ +template name(T0& t0,const T1& t1,T2& t2,T3& t3)body((ENUM)(4))\ +template name(T0& t0,const T1& t1,T2& t2,const T3& t3)body((ENUM)(4))\ +template name(T0& t0,const T1& t1,const T2& t2,T3& t3)body((ENUM)(4))\ +template name(T0& t0,const T1& t1,const T2& t2,const T3& t3)body((ENUM)(4))\ +template name(const T0& t0,T1& t1,T2& t2,T3& t3)body((ENUM)(4))\ +template name(const T0& t0,T1& t1,T2& t2,const T3& t3)body((ENUM)(4))\ +template name(const T0& t0,T1& t1,const T2& t2,T3& t3)body((ENUM)(4))\ +template name(const T0& t0,T1& t1,const T2& t2,const T3& t3)body((ENUM)(4))\ +template name(const T0& t0,const T1& t1,T2& t2,T3& t3)body((ENUM)(4))\ +template name(const T0& t0,const T1& t1,T2& t2,const T3& t3)body((ENUM)(4))\ +template name(const T0& t0,const T1& t1,const T2& t2,T3& t3)body((ENUM)(4))\ +template name(const T0& t0,const T1& t1,const T2& t2,const T3& t3)body((ENUM)(4)) +#endif + +#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=5 +#define BOOST_FLYWEIGHT_PERFECT_FWD_5(name,body) \ +template name(T0& t0,T1& t1,T2& t2,T3& t3,T4& t4)body((ENUM)(5))\ +template name(T0& t0,T1& t1,T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\ +template name(T0& t0,T1& t1,T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\ +template name(T0& t0,T1& t1,T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\ +template name(T0& t0,T1& t1,const T2& t2,T3& t3,T4& t4)body((ENUM)(5))\ +template name(T0& t0,T1& t1,const T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\ +template name(T0& t0,T1& t1,const T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\ +template name(T0& t0,T1& t1,const T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\ +template name(T0& t0,const T1& t1,T2& t2,T3& t3,T4& t4)body((ENUM)(5))\ +template name(T0& t0,const T1& t1,T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\ +template name(T0& t0,const T1& t1,T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\ +template name(T0& t0,const T1& t1,T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\ +template name(T0& t0,const T1& t1,const T2& t2,T3& t3,T4& t4)body((ENUM)(5))\ +template name(T0& t0,const T1& t1,const T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\ +template name(T0& t0,const T1& t1,const T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\ +template name(T0& t0,const T1& t1,const T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\ +template name(const T0& t0,T1& t1,T2& t2,T3& t3,T4& t4)body((ENUM)(5))\ +template name(const T0& t0,T1& t1,T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\ +template name(const T0& t0,T1& t1,T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\ +template name(const T0& t0,T1& t1,T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\ +template name(const T0& t0,T1& t1,const T2& t2,T3& t3,T4& t4)body((ENUM)(5))\ +template name(const T0& t0,T1& t1,const T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\ +template name(const T0& t0,T1& t1,const T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\ +template name(const T0& t0,T1& t1,const T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\ +template name(const T0& t0,const T1& t1,T2& t2,T3& t3,T4& t4)body((ENUM)(5))\ +template name(const T0& t0,const T1& t1,T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\ +template name(const T0& t0,const T1& t1,T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\ +template name(const T0& t0,const T1& t1,T2& t2,const T3& t3,const T4& t4)body((ENUM)(5))\ +template name(const T0& t0,const T1& t1,const T2& t2,T3& t3,T4& t4)body((ENUM)(5))\ +template name(const T0& t0,const T1& t1,const T2& t2,T3& t3,const T4& t4)body((ENUM)(5))\ +template name(const T0& t0,const T1& t1,const T2& t2,const T3& t3,T4& t4)body((ENUM)(5))\ +template name(const T0& t0,const T1& t1,const T2& t2,const T3& t3,const T4& t4)body((ENUM)(5)) +#endif + #endif #if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==0 -#define BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) #elif BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==1 -#define BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS \ -BOOST_FLYWEIGHT_PERFECT_FWDS_1 +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) #elif BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==2 -#define BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS \ -BOOST_FLYWEIGHT_PERFECT_FWDS_1 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_2 +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) #elif BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==3 -#define BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS \ -BOOST_FLYWEIGHT_PERFECT_FWDS_1 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_2 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_3 +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) #elif BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==4 -#define BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS \ -BOOST_FLYWEIGHT_PERFECT_FWDS_1 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_2 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_3 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_4 +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_4(name,body) #else /* BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS==5 */ -#define BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS \ -BOOST_FLYWEIGHT_PERFECT_FWDS_1 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_2 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_3 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_4 \ -BOOST_FLYWEIGHT_PERFECT_FWDS_5 +#define BOOST_FLYWEIGHT_PERFECT_FWD(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_0(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_1(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_2(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_3(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_4(name,body) \ +BOOST_FLYWEIGHT_PERFECT_FWD_5(name,body) #endif -/* generate the overloads */ - -BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS - -/* clean up */ - -#undef BOOST_FLYWEIGHT_PERFECT_FWD_OVERLOADS - -#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=1 -#undef BOOST_FLYWEIGHT_PERFECT_FWDS_1 #endif - -#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=2 -#undef BOOST_FLYWEIGHT_PERFECT_FWDS_2 -#endif - -#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=3 -#undef BOOST_FLYWEIGHT_PERFECT_FWDS_3 -#endif - -#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=4 -#undef BOOST_FLYWEIGHT_PERFECT_FWDS_4 -#endif - -#if BOOST_FLYWEIGHT_LIMIT_PERFECT_FWD_ARGS>=5 -#undef BOOST_FLYWEIGHT_PERFECT_FWDS_5 -#endif - -/* user supplied argument macros */ - -#undef BOOST_FLYWEIGHT_PERFECT_FWD_NAME -#undef BOOST_FLYWEIGHT_PERFECT_FWD_BODY diff --git a/3party/boost/boost/flyweight/detail/recursive_lw_mutex.hpp b/3party/boost/boost/flyweight/detail/recursive_lw_mutex.hpp index 5bb2082074..6e780868ec 100644 --- a/3party/boost/boost/flyweight/detail/recursive_lw_mutex.hpp +++ b/3party/boost/boost/flyweight/detail/recursive_lw_mutex.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2008 Joaquin M Lopez Munoz. +/* Copyright 2006-2013 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_DETAIL_RECURSIVE_LW_MUTEX_HPP #define BOOST_FLYWEIGHT_DETAIL_RECURSIVE_LW_MUTEX_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif @@ -39,6 +39,7 @@ typedef boost::detail::lightweight_mutex recursive_lightweight_mutex; #else /* code shamelessly ripped from */ +#include #include #include @@ -53,10 +54,10 @@ struct recursive_lightweight_mutex:noncopyable recursive_lightweight_mutex() { pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&m_,&attr); - pthread_mutexattr_destroy(&attr); + BOOST_VERIFY(pthread_mutexattr_init(&attr)==0); + BOOST_VERIFY(pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE)==0); + BOOST_VERIFY(pthread_mutex_init(&m_,&attr)==0); + BOOST_VERIFY(pthread_mutexattr_destroy(&attr)==0); } ~recursive_lightweight_mutex(){pthread_mutex_destroy(&m_);} @@ -68,10 +69,10 @@ struct recursive_lightweight_mutex:noncopyable public: scoped_lock(recursive_lightweight_mutex& m):m_(m.m_) { - pthread_mutex_lock(&m_); + BOOST_VERIFY(pthread_mutex_lock(&m_)==0); } - ~scoped_lock(){pthread_mutex_unlock(&m_);} + ~scoped_lock(){BOOST_VERIFY(pthread_mutex_unlock(&m_)==0);} private: pthread_mutex_t& m_; diff --git a/3party/boost/boost/flyweight/detail/value_tag.hpp b/3party/boost/boost/flyweight/detail/value_tag.hpp index cf4b5723a1..cec0d49976 100644 --- a/3party/boost/boost/flyweight/detail/value_tag.hpp +++ b/3party/boost/boost/flyweight/detail/value_tag.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_DETAIL_VALUE_TAG_HPP #define BOOST_FLYWEIGHT_DETAIL_VALUE_TAG_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/factory_tag.hpp b/3party/boost/boost/flyweight/factory_tag.hpp index ddb747304e..37b62556b1 100644 --- a/3party/boost/boost/flyweight/factory_tag.hpp +++ b/3party/boost/boost/flyweight/factory_tag.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_FACTORY_TAG_HPP #define BOOST_FLYWEIGHT_FACTORY_TAG_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/flyweight.hpp b/3party/boost/boost/flyweight/flyweight.hpp index b909b676fc..624649b166 100644 --- a/3party/boost/boost/flyweight/flyweight.hpp +++ b/3party/boost/boost/flyweight/flyweight.hpp @@ -1,6 +1,6 @@ /* Flyweight class. * - * Copyright 2006-2009 Joaquin M Lopez Munoz. + * Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -11,7 +11,7 @@ #ifndef BOOST_FLYWEIGHT_FLYWEIGHT_HPP #define BOOST_FLYWEIGHT_FLYWEIGHT_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -35,10 +36,15 @@ #include #include #include -#include #include #include +#if !defined(BOOST_NO_SFINAE)&&!defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) +#include +#include +#include +#endif + #if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) #pragma warning(push) #pragma warning(disable:4521) /* multiple copy ctors */ @@ -182,20 +188,52 @@ public: /* construct/copy/destroy */ - flyweight():h(core::insert(key_type())){} +#define BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY(args) \ + :h(core::insert(BOOST_FLYWEIGHT_FORWARD(args))){} + + BOOST_FLYWEIGHT_PERFECT_FWD( + explicit flyweight, + BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY) + +#undef BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY + +#if !defined(BOOST_NO_SFINAE)&&!defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) + template + flyweight( + std::initializer_list list, + typename boost::enable_if< + boost::is_convertible,key_type> >::type* =0): + h(core::insert(list)){} +#endif + flyweight(const flyweight& x):h(x.h){} flyweight(flyweight& x):h(x.h){} - /* template ctors */ +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + flyweight(const flyweight&& x):h(x.h){} + flyweight(flyweight&& x):h(x.h){} +#endif -#define BOOST_FLYWEIGHT_PERFECT_FWD_NAME explicit flyweight -#define BOOST_FLYWEIGHT_PERFECT_FWD_BODY(n) \ - :h(core::insert(BOOST_PP_ENUM_PARAMS(n,t))){} -#include +#if !defined(BOOST_NO_SFINAE)&&!defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) + template + typename boost::enable_if< + boost::is_convertible,key_type>,flyweight&>::type + operator=(std::initializer_list list) + { + return operator=(flyweight(list)); + } +#endif flyweight& operator=(const flyweight& x){h=x.h;return *this;} flyweight& operator=(const value_type& x){return operator=(flyweight(x));} +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + flyweight& operator=(value_type&& x) + { + return operator=(flyweight(std::move(x))); + } +#endif + /* convertibility to underlying type */ const key_type& get_key()const{return core::key(h);} diff --git a/3party/boost/boost/flyweight/flyweight_fwd.hpp b/3party/boost/boost/flyweight/flyweight_fwd.hpp index 6295a8dbfb..31b06742ac 100644 --- a/3party/boost/boost/flyweight/flyweight_fwd.hpp +++ b/3party/boost/boost/flyweight/flyweight_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_FLYWEIGHT_FWD_HPP #define BOOST_FLYWEIGHT_FLYWEIGHT_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/hashed_factory.hpp b/3party/boost/boost/flyweight/hashed_factory.hpp index 18062aae8b..899eb619e7 100644 --- a/3party/boost/boost/flyweight/hashed_factory.hpp +++ b/3party/boost/boost/flyweight/hashed_factory.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2009 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_HASHED_FACTORY_HPP #define BOOST_FLYWEIGHT_HASHED_FACTORY_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif @@ -22,6 +22,10 @@ #include #include +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#include +#endif + /* Flyweight factory based on a hashed container implemented * with Boost.MultiIndex. */ @@ -72,6 +76,13 @@ public: return &*cont.insert(x).first; } +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + handle_type insert(Entry&& x) + { + return &*cont.insert(std::move(x)).first; + } +#endif + void erase(handle_type h) { cont.erase(cont.iterator_to(*h)); diff --git a/3party/boost/boost/flyweight/hashed_factory_fwd.hpp b/3party/boost/boost/flyweight/hashed_factory_fwd.hpp index 1da6b211ea..a934118c61 100644 --- a/3party/boost/boost/flyweight/hashed_factory_fwd.hpp +++ b/3party/boost/boost/flyweight/hashed_factory_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_HASHED_FACTORY_FWD_HPP #define BOOST_FLYWEIGHT_HASHED_FACTORY_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/holder_tag.hpp b/3party/boost/boost/flyweight/holder_tag.hpp index 745f1320f2..43a01ff40b 100644 --- a/3party/boost/boost/flyweight/holder_tag.hpp +++ b/3party/boost/boost/flyweight/holder_tag.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_HOLDER_TAG_HPP #define BOOST_FLYWEIGHT_HOLDER_TAG_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/intermodule_holder.hpp b/3party/boost/boost/flyweight/intermodule_holder.hpp index d8d9cd3ae6..a96bc5412f 100644 --- a/3party/boost/boost/flyweight/intermodule_holder.hpp +++ b/3party/boost/boost/flyweight/intermodule_holder.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_INTERMODULE_HOLDER_HPP #define BOOST_FLYWEIGHT_INTERMODULE_HOLDER_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/intermodule_holder_fwd.hpp b/3party/boost/boost/flyweight/intermodule_holder_fwd.hpp index 8acc0ce775..f2ea8845d4 100644 --- a/3party/boost/boost/flyweight/intermodule_holder_fwd.hpp +++ b/3party/boost/boost/flyweight/intermodule_holder_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_INTERMODULE_HOLDER_FWD_HPP #define BOOST_FLYWEIGHT_INTERMODULE_HOLDER_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/key_value.hpp b/3party/boost/boost/flyweight/key_value.hpp index 5ac1c0d57d..eb58d152cb 100644 --- a/3party/boost/boost/flyweight/key_value.hpp +++ b/3party/boost/boost/flyweight/key_value.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2008 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -9,14 +9,16 @@ #ifndef BOOST_FLYWEIGHT_KEY_VALUE_HPP #define BOOST_FLYWEIGHT_KEY_VALUE_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif +#include /* keep it first to prevent nasty warns in MSVC */ +#include +#include #include #include #include -#include #include #include #include @@ -54,21 +56,34 @@ struct optimized_key_value:value_marker public: /* template ctors */ -#define BOOST_FLYWEIGHT_PERFECT_FWD_NAME explicit rep_type -#define BOOST_FLYWEIGHT_PERFECT_FWD_BODY(n) \ - :value_ptr(0) \ -{ \ - new(spc_ptr())key_type(BOOST_PP_ENUM_PARAMS(n,t)); \ +#define BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY(args) \ + :value_ptr(0) \ +{ \ + new(spc_ptr())key_type(BOOST_FLYWEIGHT_FORWARD(args)); \ } -#include - rep_type(const value_type& x):value_ptr(&x){} + BOOST_FLYWEIGHT_PERFECT_FWD( + explicit rep_type, + BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY) + +#undef BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY rep_type(const rep_type& x):value_ptr(x.value_ptr) { if(!x.value_ptr)new(key_ptr())key_type(*x.key_ptr()); } + rep_type(const value_type& x):value_ptr(&x){} + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + rep_type(rep_type&& x):value_ptr(x.value_ptr) + { + if(!x.value_ptr)new(key_ptr())key_type(std::move(*x.key_ptr())); + } + + rep_type(value_type&& x):value_ptr(&x){} +#endif + ~rep_type() { if(!value_ptr) key_ptr()->~key_type(); @@ -113,7 +128,12 @@ struct optimized_key_value:value_marker if(!value_cted()){ /* value_ptr must be ==0, oherwise copy_value would have been called */ +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + key_type k(std::move(*key_ptr())); +#else key_type k(*key_ptr()); +#endif + key_ptr()->~key_type(); value_ptr= /* guarantees key won't be re-dted at ~rep_type if the */ static_cast(spc_ptr())+1; /* next statement throws */ @@ -126,6 +146,14 @@ struct optimized_key_value:value_marker if(!value_cted())value_ptr=new(spc_ptr())value_type(*value_ptr); } +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + void move_value()const + { + if(!value_cted())value_ptr= + new(spc_ptr())value_type(std::move(const_cast(*value_ptr))); + } +#endif + mutable typename boost::aligned_storage< (sizeof(key_type)>sizeof(value_type))? sizeof(key_type):sizeof(value_type), @@ -146,6 +174,13 @@ struct optimized_key_value:value_marker { r.copy_value(); } + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + static void move_value(const rep_type& r) + { + r.move_value(); + } +#endif }; template @@ -159,14 +194,33 @@ struct regular_key_value:value_marker public: /* template ctors */ -#define BOOST_FLYWEIGHT_PERFECT_FWD_NAME explicit rep_type -#define BOOST_FLYWEIGHT_PERFECT_FWD_BODY(n) \ - :key(BOOST_PP_ENUM_PARAMS(n,t)),value_ptr(0){} -#include +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)&&\ + !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)&&\ + BOOST_WORKAROUND(__GNUC__,<=4)&&(__GNUC__<4||__GNUC_MINOR__<=4) - rep_type(const value_type& x):key(no_key_from_value_failure()){} +/* GCC 4.4.2 (and probably prior) bug: the default ctor generated by the + * variadic temmplate ctor below fails to value-initialize key. + */ + + rep_type():key(),value_ptr(0){} +#endif + +#define BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY(args) \ + :key(BOOST_FLYWEIGHT_FORWARD(args)),value_ptr(0){} + + BOOST_FLYWEIGHT_PERFECT_FWD( + explicit rep_type, + BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY) + +#undef BOOST_FLYWEIGHT_PERFECT_FWD_CTR_BODY rep_type(const rep_type& x):key(x.key),value_ptr(0){} + rep_type(const value_type& x):key(no_key_from_value_failure()){} + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + rep_type(rep_type&& x):key(std::move(x.key)),value_ptr(0){} + rep_type(value_type&& x):key(no_key_from_value_failure()){} +#endif ~rep_type() { @@ -217,7 +271,16 @@ struct regular_key_value:value_marker r.construct_value(); } + /* copy_value() and move_value() can't really ever be called, provided to avoid + * compile errors (it is the no_key_from_value_failure compile error we want to + * appear in these cases). + */ + static void copy_value(const rep_type&){} + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + static void move_value(const rep_type&){} +#endif }; } /* namespace flyweights::detail */ diff --git a/3party/boost/boost/flyweight/key_value_fwd.hpp b/3party/boost/boost/flyweight/key_value_fwd.hpp index d20d71e1c7..878a778c05 100644 --- a/3party/boost/boost/flyweight/key_value_fwd.hpp +++ b/3party/boost/boost/flyweight/key_value_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_KEY_VALUE_FWD_HPP #define BOOST_FLYWEIGHT_KEY_VALUE_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/locking_tag.hpp b/3party/boost/boost/flyweight/locking_tag.hpp index c467a4acc0..d32343679a 100644 --- a/3party/boost/boost/flyweight/locking_tag.hpp +++ b/3party/boost/boost/flyweight/locking_tag.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_LOCKING_TAG_HPP #define BOOST_FLYWEIGHT_LOCKING_TAG_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/no_locking.hpp b/3party/boost/boost/flyweight/no_locking.hpp index fa0031a046..4d1bcd8bf9 100644 --- a/3party/boost/boost/flyweight/no_locking.hpp +++ b/3party/boost/boost/flyweight/no_locking.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_NO_LOCKING_HPP #define BOOST_FLYWEIGHT_NO_LOCKING_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/no_locking_fwd.hpp b/3party/boost/boost/flyweight/no_locking_fwd.hpp index 95177e986d..132f50dc80 100644 --- a/3party/boost/boost/flyweight/no_locking_fwd.hpp +++ b/3party/boost/boost/flyweight/no_locking_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_NO_LOCKING_FWD_HPP #define BOOST_FLYWEIGHT_NO_LOCKING_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/no_tracking.hpp b/3party/boost/boost/flyweight/no_tracking.hpp index 1433d6dac0..47ce8f9efd 100644 --- a/3party/boost/boost/flyweight/no_tracking.hpp +++ b/3party/boost/boost/flyweight/no_tracking.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_NO_TRACKING_HPP #define BOOST_FLYWEIGHT_NO_TRACKING_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/no_tracking_fwd.hpp b/3party/boost/boost/flyweight/no_tracking_fwd.hpp index dd6b446e3d..a601012535 100644 --- a/3party/boost/boost/flyweight/no_tracking_fwd.hpp +++ b/3party/boost/boost/flyweight/no_tracking_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_NO_TRACKING_FWD_HPP #define BOOST_FLYWEIGHT_NO_TRACKING_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/refcounted.hpp b/3party/boost/boost/flyweight/refcounted.hpp index 28b7629c1c..7b55416376 100644 --- a/3party/boost/boost/flyweight/refcounted.hpp +++ b/3party/boost/boost/flyweight/refcounted.hpp @@ -1,4 +1,4 @@ -/* Copyright 2006-2010 Joaquin M Lopez Munoz. +/* Copyright 2006-2014 Joaquin M Lopez Munoz. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_REFCOUNTED_HPP #define BOOST_FLYWEIGHT_REFCOUNTED_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif @@ -21,6 +21,10 @@ #include #include +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#include +#endif + /* Refcounting tracking policy. * The implementation deserves some explanation; values are equipped with two * reference counts: @@ -63,6 +67,22 @@ public: x=r.x; return *this; } + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + explicit refcounted_value(Value&& x_): + x(std::move(x_)),ref(0),del_ref(0) + {} + + refcounted_value(refcounted_value&& r): + x(std::move(r.x)),ref(0),del_ref(0) + {} + + refcounted_value& operator=(refcounted_value&& r) + { + x=std::move(r.x); + return *this; + } +#endif operator const Value&()const{return x;} operator const Key&()const{return x;} @@ -103,7 +123,7 @@ public: refcounted_handle& operator=(refcounted_handle x) { - swap(*this,x); + this->swap(x); return *this; } @@ -116,9 +136,9 @@ public: operator const Handle&()const{return h;} - friend void swap(refcounted_handle& x, refcounted_handle& y) + void swap(refcounted_handle& x) { - boost::swap(x.h,y.h); + std::swap(h,x.h); } private: @@ -130,8 +150,32 @@ private: Handle h; }; +template +void swap( + refcounted_handle& x, + refcounted_handle& y) +{ + x.swap(y); +} + } /* namespace flyweights::detail */ +#if BOOST_WORKAROUND(BOOST_MSVC,<=1500) +/* swap lookup by boost::swap fails under obscure circumstances */ + +} /* namespace flyweights */ + +template +void swap( + ::boost::flyweights::detail::refcounted_handle& x, + ::boost::flyweights::detail::refcounted_handle& y) +{ + ::boost::flyweights::detail::swap(x,y); +} + +namespace flyweights{ +#endif + struct refcounted:tracking_marker { struct entry_type diff --git a/3party/boost/boost/flyweight/refcounted_fwd.hpp b/3party/boost/boost/flyweight/refcounted_fwd.hpp index cb0e727011..7da6f6ec20 100644 --- a/3party/boost/boost/flyweight/refcounted_fwd.hpp +++ b/3party/boost/boost/flyweight/refcounted_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_REFCOUNTED_FWD_HPP #define BOOST_FLYWEIGHT_REFCOUNTED_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/set_factory.hpp b/3party/boost/boost/flyweight/set_factory.hpp index 42da89586c..b0eeee75c6 100644 --- a/3party/boost/boost/flyweight/set_factory.hpp +++ b/3party/boost/boost/flyweight/set_factory.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_SET_FACTORY_HPP #define BOOST_FLYWEIGHT_SET_FACTORY_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/set_factory_fwd.hpp b/3party/boost/boost/flyweight/set_factory_fwd.hpp index 07cd0eae6b..8d26e73de0 100644 --- a/3party/boost/boost/flyweight/set_factory_fwd.hpp +++ b/3party/boost/boost/flyweight/set_factory_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_SET_FACTORY_FWD_HPP #define BOOST_FLYWEIGHT_SET_FACTORY_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/simple_locking.hpp b/3party/boost/boost/flyweight/simple_locking.hpp index 503413320d..23e7f3b8e5 100644 --- a/3party/boost/boost/flyweight/simple_locking.hpp +++ b/3party/boost/boost/flyweight/simple_locking.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_SIMPLE_LOCKING_HPP #define BOOST_FLYWEIGHT_SIMPLE_LOCKING_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/simple_locking_fwd.hpp b/3party/boost/boost/flyweight/simple_locking_fwd.hpp index c810860587..a7212fb682 100644 --- a/3party/boost/boost/flyweight/simple_locking_fwd.hpp +++ b/3party/boost/boost/flyweight/simple_locking_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_SIMPLE_LOCKING_FWD_HPP #define BOOST_FLYWEIGHT_SIMPLE_LOCKING_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/static_holder.hpp b/3party/boost/boost/flyweight/static_holder.hpp index 892bd1bf8a..6cc1f51bce 100644 --- a/3party/boost/boost/flyweight/static_holder.hpp +++ b/3party/boost/boost/flyweight/static_holder.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_STATIC_HOLDER_HPP #define BOOST_FLYWEIGHT_STATIC_HOLDER_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/static_holder_fwd.hpp b/3party/boost/boost/flyweight/static_holder_fwd.hpp index 5f6f437e59..3624900ddb 100644 --- a/3party/boost/boost/flyweight/static_holder_fwd.hpp +++ b/3party/boost/boost/flyweight/static_holder_fwd.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_STATIC_HOLDER_FWD_HPP #define BOOST_FLYWEIGHT_STATIC_HOLDER_FWD_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/tag.hpp b/3party/boost/boost/flyweight/tag.hpp index 62efc36a1d..52595541ee 100644 --- a/3party/boost/boost/flyweight/tag.hpp +++ b/3party/boost/boost/flyweight/tag.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_TAG_HPP #define BOOST_FLYWEIGHT_TAG_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/flyweight/tracking_tag.hpp b/3party/boost/boost/flyweight/tracking_tag.hpp index efc7bce7ab..cda8d05dff 100644 --- a/3party/boost/boost/flyweight/tracking_tag.hpp +++ b/3party/boost/boost/flyweight/tracking_tag.hpp @@ -9,7 +9,7 @@ #ifndef BOOST_FLYWEIGHT_TRACKING_TAG_HPP #define BOOST_FLYWEIGHT_TRACKING_TAG_HPP -#if defined(_MSC_VER)&&(_MSC_VER>=1200) +#if defined(_MSC_VER) #pragma once #endif diff --git a/3party/boost/boost/foreach.hpp b/3party/boost/boost/foreach.hpp index 33b59202d6..ac2e6134d2 100644 --- a/3party/boost/boost/foreach.hpp +++ b/3party/boost/boost/foreach.hpp @@ -20,7 +20,7 @@ #ifndef BOOST_FOREACH // MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER) # pragma once #endif @@ -32,7 +32,7 @@ // Some compilers let us detect even const-qualified rvalues at compile-time #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) \ - || BOOST_WORKAROUND(BOOST_MSVC, >= 1310) && !defined(_PREFAST_) \ + || defined(BOOST_MSVC) && !defined(_PREFAST_) \ || (BOOST_WORKAROUND(__GNUC__, == 4) && (__GNUC_MINOR__ <= 5) && !defined(BOOST_INTEL) && \ !defined(BOOST_CLANG)) \ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ >= 4) && !defined(BOOST_INTEL) && \ @@ -42,8 +42,7 @@ // Some compilers allow temporaries to be bound to non-const references. // These compilers make it impossible to for BOOST_FOREACH to detect // temporaries and avoid reevaluation of the collection expression. -# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \ - || BOOST_WORKAROUND(__BORLANDC__, < 0x593) \ +# if BOOST_WORKAROUND(__BORLANDC__, < 0x593) \ || (BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700) && defined(_MSC_VER)) \ || BOOST_WORKAROUND(__SUNPRO_CC, < 0x5100) \ || BOOST_WORKAROUND(__DECCXX_VER, <= 60590042) @@ -55,8 +54,6 @@ || defined(BOOST_NO_SFINAE) \ || BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \ || BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(1400)) \ - || BOOST_WORKAROUND(__GNUC__, < 3) \ - || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 2)) \ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 3) && defined(__APPLE_CC__)) \ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3206)) \ @@ -349,9 +346,7 @@ struct foreach_iterator // // To treat the container as an array, use boost::as_array() in , // as in BOOST_FOREACH( char ch, boost::as_array("hello") ) ... - #if !defined(BOOST_MSVC) || BOOST_MSVC > 1300 BOOST_MPL_ASSERT_MSG( (!is_char_array::value), IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING, (T&) ); - #endif // If the type is a pointer to a null terminated string (as opposed // to an array type), there is no ambiguity. @@ -380,9 +375,7 @@ struct foreach_reverse_iterator // // To treat the container as an array, use boost::as_array() in , // as in BOOST_FOREACH( char ch, boost::as_array("hello") ) ... - #if !defined(BOOST_MSVC) || BOOST_MSVC > 1300 BOOST_MPL_ASSERT_MSG( (!is_char_array::value), IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING, (T&) ); - #endif // If the type is a pointer to a null terminated string (as opposed // to an array type), there is no ambiguity. diff --git a/3party/boost/boost/format/detail/config_macros.hpp b/3party/boost/boost/format/detail/config_macros.hpp index 1f01b1789b..44d1e86c63 100644 --- a/3party/boost/boost/format/detail/config_macros.hpp +++ b/3party/boost/boost/format/detail/config_macros.hpp @@ -49,12 +49,6 @@ #define BOOST_NO_OVERLOAD_FOR_NON_CONST #endif -// gcc-2.95's native stringstream is not usable -#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) -#define BOOST_FORMAT_IGNORE_STRINGSTREAM -#endif - - // **** Workaround for io streams, stlport and msvc. #ifdef BOOST_IO_NEEDS_USING_DECLARATION namespace boost { @@ -80,6 +74,10 @@ namespace boost { // -end N.S. boost #endif // needs_using_declaration +#if ! defined(BOOST_NO_STD_LOCALE) +#include +#endif + // *** hide std::locale if it doesnt exist. // this typedef is either std::locale or int, avoids placing ifdefs everywhere diff --git a/3party/boost/boost/format/detail/msvc_disambiguater.hpp b/3party/boost/boost/format/detail/msvc_disambiguater.hpp index f12e5e97b2..c2692c4435 100644 --- a/3party/boost/boost/format/detail/msvc_disambiguater.hpp +++ b/3party/boost/boost/format/detail/msvc_disambiguater.hpp @@ -14,9 +14,7 @@ #ifndef BOOST_MSVC_DISAMBIGUATER_HPP #define BOOST_MSVC_DISAMBIGUATER_HPP -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1300) || \ - BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) - // this whole header is specifically for msvc up to 7.0 +#if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) #include #include @@ -51,6 +49,6 @@ struct disambiguater } // namespace io } // namespace boost -#endif // -BOOST_MSVC +#endif // -__DECCXX_VER #endif // -BOOST_MSVC_DISAMBIGUATER_HPP diff --git a/3party/boost/boost/format/detail/workarounds_stlport.hpp b/3party/boost/boost/format/detail/workarounds_stlport.hpp index eb35dc1708..5d435b98a0 100644 --- a/3party/boost/boost/format/detail/workarounds_stlport.hpp +++ b/3party/boost/boost/format/detail/workarounds_stlport.hpp @@ -13,12 +13,6 @@ #ifndef BOOST_MACROS_STLPORT_HPP #define BOOST_MACROS_STLPORT_HPP -#if defined(_STLPORT_VERSION) && BOOST_WORKAROUND( BOOST_MSVC, <= 1300) -// msvc-6-stlport fails to find basic_string::append( iterator, iterator) when linking -// might affect other MSwindows compilers -#define BOOST_NO_STRING_APPEND -#endif - // *** This should go to "boost/config/stdlib/stlport.hpp". // If the streams are not native and there are problems with using templates diff --git a/3party/boost/boost/format/feed_args.hpp b/3party/boost/boost/format/feed_args.hpp index 53243dccc8..dcfd955b36 100644 --- a/3party/boost/boost/format/feed_args.hpp +++ b/3party/boost/boost/format/feed_args.hpp @@ -70,9 +70,8 @@ namespace detail { } // -mk_str(..) -#if BOOST_WORKAROUND( BOOST_MSVC, <= 1300) || \ - BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) -// MSVC needs to be tricked to disambiguate this simple overload.. +#if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) +// __DECCXX needs to be tricked to disambiguate this simple overload.. // the trick is in "boost/format/msvc_disambiguater.hpp" template< class Ch, class Tr, class T> inline @@ -115,7 +114,40 @@ namespace detail { os << x ; } #endif -#endif // -msvc workaround +#endif // -__DECCXX workaround + + template< class Ch, class Tr, class T> + void call_put_head(BOOST_IO_STD basic_ostream & os, const void* x) { + put_head(os, *(typename ::boost::remove_reference::type*)x); + } + + template< class Ch, class Tr, class T> + void call_put_last(BOOST_IO_STD basic_ostream & os, const void* x) { + put_last(os, *(T*)x); + } + + template< class Ch, class Tr> + struct put_holder { + template + put_holder(T& t) + : arg(&t), + put_head(&call_put_head), + put_last(&call_put_last) + {} + const void* arg; + void (*put_head)(BOOST_IO_STD basic_ostream & os, const void* x); + void (*put_last)(BOOST_IO_STD basic_ostream & os, const void* x); + }; + + template< class Ch, class Tr> inline + void put_head( BOOST_IO_STD basic_ostream & os, const put_holder& t) { + t.put_head(os, t.arg); + } + + template< class Ch, class Tr> inline + void put_last( BOOST_IO_STD basic_ostream & os, const put_holder& t) { + t.put_last(os, t.arg); + } template< class Ch, class Tr, class Alloc, class T> @@ -258,7 +290,7 @@ namespace detail { template basic_format& - feed (basic_format& self, T x) { + feed_impl (basic_format& self, T x) { if(self.dumped_) self.clear(); distribute (self, x); ++self.cur_arg_; @@ -268,6 +300,12 @@ namespace detail { } return self; } + + template inline + basic_format& + feed (basic_format& self, T x) { + return feed_impl&>(self, put_holder(x)); + } } // namespace detail } // namespace io diff --git a/3party/boost/boost/format/format_class.hpp b/3party/boost/boost/format/format_class.hpp index 4555e56ec3..2ac59ef280 100644 --- a/3party/boost/boost/format/format_class.hpp +++ b/3party/boost/boost/format/format_class.hpp @@ -126,7 +126,7 @@ namespace boost { template friend basic_format& - io::detail::feed (basic_format&, T); + io::detail::feed_impl (basic_format&, T); template friend void io::detail::distribute (basic_format&, T); diff --git a/3party/boost/boost/format/format_fwd.hpp b/3party/boost/boost/format/format_fwd.hpp index be3228af3c..16b8565468 100644 --- a/3party/boost/boost/format/format_fwd.hpp +++ b/3party/boost/boost/format/format_fwd.hpp @@ -21,18 +21,12 @@ namespace boost { template , class Alloc = std::allocator > -#else - class Tr = std::string_char_traits, class Alloc = std::alloc > -#endif + class Tr = BOOST_IO_STD char_traits, class Alloc = std::allocator > class basic_format; typedef basic_format format; -#if !defined(BOOST_NO_STD_WSTRING) && !defined(BOOST_NO_STD_WSTREAMBUF) \ - && !defined(BOOST_FORMAT_IGNORE_STRINGSTREAM) +#if !defined(BOOST_NO_STD_WSTRING) && !defined(BOOST_NO_STD_WSTREAMBUF) typedef basic_format wformat; #endif diff --git a/3party/boost/boost/format/internals.hpp b/3party/boost/boost/format/internals.hpp index b0d874a1fb..1c67006aee 100644 --- a/3party/boost/boost/format/internals.hpp +++ b/3party/boost/boost/format/internals.hpp @@ -104,6 +104,15 @@ namespace detail { template void stream_format_state:: apply_on (basic_ios & os, boost::io::detail::locale_t * loc_default) const { + // If a locale is available, set it first. "os.fill(fill_);" may chrash otherwise. +#if !defined(BOOST_NO_STD_LOCALE) + if(loc_) + os.imbue(loc_.get()); + else if(loc_default) + os.imbue(*loc_default); +#else + (void) loc_default; // keep compiler quiet if we don't support locales +#endif // set the state of this stream according to our params if(width_ != -1) os.width(width_); @@ -114,14 +123,6 @@ namespace detail { os.flags(flags_); os.clear(rdstate_); os.exceptions(exceptions_); -#if !defined(BOOST_NO_STD_LOCALE) - if(loc_) - os.imbue(loc_.get()); - else if(loc_default) - os.imbue(*loc_default); -#else - (void) loc_default; // keep compiler quiet if we don't support locales -#endif } template diff --git a/3party/boost/boost/format/internals_fwd.hpp b/3party/boost/boost/format/internals_fwd.hpp index e44eb3c132..18cf122412 100644 --- a/3party/boost/boost/format/internals_fwd.hpp +++ b/3party/boost/boost/format/internals_fwd.hpp @@ -50,6 +50,10 @@ namespace detail { template basic_format& feed (basic_format& self, T x); + + template + basic_format& + feed_impl (basic_format& self, T x); } // namespace detail diff --git a/3party/boost/boost/format/parsing.hpp b/3party/boost/boost/format/parsing.hpp index b14ca82c98..3ff1828081 100644 --- a/3party/boost/boost/format/parsing.hpp +++ b/3party/boost/boost/format/parsing.hpp @@ -390,11 +390,7 @@ namespace detail { void append_string(String& dst, const String& src, const typename String::size_type beg, const typename String::size_type end) { -#if !defined(BOOST_NO_STRING_APPEND) dst.append(src.begin()+beg, src.begin()+end); -#else - dst += src.substr(beg, end-beg); -#endif } } // detail namespace diff --git a/3party/boost/boost/function/function_base.hpp b/3party/boost/boost/function/function_base.hpp index 78b7dd1e99..f3663d796a 100644 --- a/3party/boost/boost/function/function_base.hpp +++ b/3party/boost/boost/function/function_base.hpp @@ -56,7 +56,7 @@ // need to use std::type_info::name to compare instead of operator==. #if defined( BOOST_NO_TYPEID ) # define BOOST_FUNCTION_COMPARE_TYPE_ID(X,Y) ((X)==(Y)) -#elif (defined(__GNUC__) && __GNUC__ >= 3) \ +#elif defined(__GNUC__) \ || defined(_AIX) \ || ( defined(__sgi) && defined(__host_mips)) # include @@ -66,11 +66,11 @@ # define BOOST_FUNCTION_COMPARE_TYPE_ID(X,Y) ((X)==(Y)) #endif -#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__ICL) && __ICL <= 600 || defined(__MWERKS__) && __MWERKS__ < 0x2406 && !defined(BOOST_STRICT_CONFIG) +#if defined(__ICL) && __ICL <= 600 || defined(__MWERKS__) && __MWERKS__ < 0x2406 && !defined(BOOST_STRICT_CONFIG) # define BOOST_FUNCTION_TARGET_FIX(x) x #else # define BOOST_FUNCTION_TARGET_FIX(x) -#endif // not MSVC +#endif // __ICL etc #if !BOOST_WORKAROUND(__BORLANDC__, < 0x5A0) # define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) \ @@ -661,11 +661,7 @@ public: } template -#if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300) - const Functor* target( Functor * = 0 ) const -#else const Functor* target() const -#endif { if (!vtable) return 0; @@ -683,11 +679,7 @@ public: template bool contains(const F& f) const { -#if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300) - if (const F* fp = this->target( (F*)0 )) -#else if (const F* fp = this->template target()) -#endif { return function_equal(*fp, f); } else { diff --git a/3party/boost/boost/function/function_fwd.hpp b/3party/boost/boost/function/function_fwd.hpp index fb318c990a..e79b504899 100644 --- a/3party/boost/boost/function/function_fwd.hpp +++ b/3party/boost/boost/function/function_fwd.hpp @@ -19,8 +19,7 @@ namespace boost { namespace python { namespace objects { }}} #endif -#if defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ - || defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \ +#if defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \ || !(defined(BOOST_STRICT_CONFIG) || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540) # define BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX #endif diff --git a/3party/boost/boost/function/function_template.hpp b/3party/boost/boost/function/function_template.hpp index 73ed72ef40..72b7fabd18 100644 --- a/3party/boost/boost/function/function_template.hpp +++ b/3party/boost/boost/function/function_template.hpp @@ -935,10 +935,11 @@ namespace boost { if (stored_vtable.assign_to(f, functor)) { std::size_t value = reinterpret_cast(&stored_vtable.base); + // coverity[pointless_expression]: suppress coverity warnings on apparant if(const). if (boost::has_trivial_copy_constructor::value && boost::has_trivial_destructor::value && detail::function::function_allows_small_object_optimization::value) - value |= static_cast(0x01); + value |= static_cast(0x01); vtable = reinterpret_cast(value); } else vtable = 0; @@ -969,6 +970,7 @@ namespace boost { if (stored_vtable.assign_to_a(f, functor, a)) { std::size_t value = reinterpret_cast(&stored_vtable.base); + // coverity[pointless_expression]: suppress coverity warnings on apparant if(const). if (boost::has_trivial_copy_constructor::value && boost::has_trivial_destructor::value && detail::function::function_allows_small_object_optimization::value) diff --git a/3party/boost/boost/functional.hpp b/3party/boost/boost/functional.hpp index 3e0588e00f..b618485c10 100644 --- a/3party/boost/boost/functional.hpp +++ b/3party/boost/boost/functional.hpp @@ -6,7 +6,7 @@ // Boost functional.hpp header file // See http://www.boost.org/libs/functional for documentation. // ------------------------------------------------------------------------------ -// $Id: functional.hpp 36246 2006-12-02 14:17:26Z andreas_huber69 $ +// $Id$ // ------------------------------------------------------------------------------ #ifndef BOOST_FUNCTIONAL_HPP diff --git a/3party/boost/boost/functional/hash/detail/float_functions.hpp b/3party/boost/boost/functional/hash/detail/float_functions.hpp index 4b8374d471..f3db52f9cc 100644 --- a/3party/boost/boost/functional/hash/detail/float_functions.hpp +++ b/3party/boost/boost/functional/hash/detail/float_functions.hpp @@ -7,12 +7,12 @@ #define BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP #include -#include - -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once +#if defined(BOOST_HAS_PRAGMA_ONCE) +#pragma once #endif +#include + // Set BOOST_HASH_CONFORMANT_FLOATS to 1 for libraries known to have // sufficiently good floating point support to not require any // workarounds. diff --git a/3party/boost/boost/functional/hash/detail/hash_float.hpp b/3party/boost/boost/functional/hash/detail/hash_float.hpp index a98cd700f8..ee0ee87745 100644 --- a/3party/boost/boost/functional/hash/detail/hash_float.hpp +++ b/3party/boost/boost/functional/hash/detail/hash_float.hpp @@ -6,11 +6,11 @@ #if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER) #define BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once +#include +#if defined(BOOST_HAS_PRAGMA_ONCE) +#pragma once #endif -#include #include #include #include @@ -90,15 +90,21 @@ namespace boost return seed; } + template + struct enable_binary_hash + { + BOOST_STATIC_CONSTANT(bool, value = + std::numeric_limits::is_iec559 && + std::numeric_limits::digits == digits && + std::numeric_limits::radix == 2 && + std::numeric_limits::max_exponent == max_exponent); + }; + template inline std::size_t float_hash_impl(Float v, BOOST_DEDUCED_TYPENAME boost::enable_if_c< - std::numeric_limits::is_iec559 && - std::numeric_limits::digits == 24 && - std::numeric_limits::radix == 2 && - std::numeric_limits::max_exponent == 128, - int>::type - ) + enable_binary_hash::value, + std::size_t>::type) { return hash_binary((char*) &v, 4); } @@ -107,12 +113,8 @@ namespace boost template inline std::size_t float_hash_impl(Float v, BOOST_DEDUCED_TYPENAME boost::enable_if_c< - std::numeric_limits::is_iec559 && - std::numeric_limits::digits == 53 && - std::numeric_limits::radix == 2 && - std::numeric_limits::max_exponent == 1024, - int>::type - ) + enable_binary_hash::value, + std::size_t>::type) { return hash_binary((char*) &v, 8); } @@ -120,12 +122,8 @@ namespace boost template inline std::size_t float_hash_impl(Float v, BOOST_DEDUCED_TYPENAME boost::enable_if_c< - std::numeric_limits::is_iec559 && - std::numeric_limits::digits == 64 && - std::numeric_limits::radix == 2 && - std::numeric_limits::max_exponent == 16384, - int>::type - ) + enable_binary_hash::value, + std::size_t>::type) { return hash_binary((char*) &v, 10); } @@ -133,12 +131,8 @@ namespace boost template inline std::size_t float_hash_impl(Float v, BOOST_DEDUCED_TYPENAME boost::enable_if_c< - std::numeric_limits::is_iec559 && - std::numeric_limits::digits == 113 && - std::numeric_limits::radix == 2 && - std::numeric_limits::max_exponent == 16384, - int>::type - ) + enable_binary_hash::value, + std::size_t>::type) { return hash_binary((char*) &v, 16); } diff --git a/3party/boost/boost/functional/hash/detail/limits.hpp b/3party/boost/boost/functional/hash/detail/limits.hpp index f5b520ea9d..4a971a6ac2 100644 --- a/3party/boost/boost/functional/hash/detail/limits.hpp +++ b/3party/boost/boost/functional/hash/detail/limits.hpp @@ -9,8 +9,9 @@ #if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER) #define BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once +#include +#if defined(BOOST_HAS_PRAGMA_ONCE) +#pragma once #endif #include diff --git a/3party/boost/boost/functional/hash/extensions.hpp b/3party/boost/boost/functional/hash/extensions.hpp index 998c08e46d..eafaefe85d 100644 --- a/3party/boost/boost/functional/hash/extensions.hpp +++ b/3party/boost/boost/functional/hash/extensions.hpp @@ -13,6 +13,11 @@ #if !defined(BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP) #define BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP +#include +#if defined(BOOST_HAS_PRAGMA_ONCE) +#pragma once +#endif + #include #include #include @@ -32,18 +37,10 @@ # include #endif -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - #if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) #include #endif -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) -#include -#endif - namespace boost { template @@ -232,11 +229,7 @@ namespace boost template struct inner { -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) static std::size_t call(Array const& v) -#else - static std::size_t call(Array& v) -#endif { const int size = sizeof(v) / sizeof(*v); return boost::hash_range(v, v + size); @@ -298,8 +291,6 @@ namespace boost template struct hash_impl; -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) - template <> struct hash_impl { @@ -320,58 +311,6 @@ namespace boost #endif }; }; - -#else // Visual C++ 6.5 - - // Visual C++ 6.5 has problems with nested member functions and - // applying const to const types in templates. So we get this: - - template - struct hash_impl_msvc - { - template - struct inner - : public std::unary_function - { - std::size_t operator()(T const& val) const - { - return hash_detail::call_hash::call(val); - } - - std::size_t operator()(T& val) const - { - return hash_detail::call_hash::call(val); - } - }; - }; - - template <> - struct hash_impl_msvc - { - template - struct inner - : public std::unary_function - { - std::size_t operator()(T& val) const - { - return hash_detail::call_hash::call(val); - } - }; - }; - - template - struct hash_impl_msvc2 - : public hash_impl_msvc::value> - ::BOOST_NESTED_TEMPLATE inner {}; - - template <> - struct hash_impl - { - template - struct inner : public hash_impl_msvc2 {}; - }; - -#endif // Visual C++ 6.5 } #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } diff --git a/3party/boost/boost/functional/hash/hash.hpp b/3party/boost/boost/functional/hash/hash.hpp index aa4e49f8ae..3e5ab5bcf9 100644 --- a/3party/boost/boost/functional/hash/hash.hpp +++ b/3party/boost/boost/functional/hash/hash.hpp @@ -1,11 +1,17 @@ -// Copyright 2005-2009 Daniel James. +// Copyright 2005-2014 Daniel James. // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // Based on Peter Dimov's proposal // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf // issue 6.18. +// +// This also contains public domain code from MurmurHash. From the +// MurmurHash header: + +// MurmurHash3 was written by Austin Appleby, and is placed in the public +// domain. The author hereby disclaims copyright to this source code. #if !defined(BOOST_FUNCTIONAL_HASH_HASH_HPP) #define BOOST_FUNCTIONAL_HASH_HASH_HPP @@ -18,6 +24,7 @@ #include #include #include +#include #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) #include @@ -27,6 +34,17 @@ #include #endif +#if defined(BOOST_MSVC) +#pragma warning(push) + +#if BOOST_MSVC >= 1400 +#pragma warning(disable:6295) // Ill-defined for-loop : 'unsigned int' values + // are always of range '0' to '4294967295'. + // Loop executes infinitely. +#endif + +#endif + #if BOOST_WORKAROUND(__GNUC__, < 3) \ && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) #define BOOST_HASH_CHAR_TRAITS string_char_traits @@ -34,6 +52,12 @@ #define BOOST_HASH_CHAR_TRAITS char_traits #endif +#if defined(_MSC_VER) +# define BOOST_FUNCTIONAL_HASH_ROTL32(x, r) _rotl(x,r) +#else +# define BOOST_FUNCTIONAL_HASH_ROTL32(x, r) (x << r) | (x >> (32 - r)) +#endif + namespace boost { namespace hash_detail @@ -181,6 +205,51 @@ namespace boost return seed; } + + template + inline void hash_combine_impl(SizeT& seed, SizeT value) + { + seed ^= value + 0x9e3779b9 + (seed<<6) + (seed>>2); + } + + template + inline void hash_combine_impl(boost::uint32_t& h1, + boost::uint32_t k1) + { + const uint32_t c1 = 0xcc9e2d51; + const uint32_t c2 = 0x1b873593; + + k1 *= c1; + k1 = BOOST_FUNCTIONAL_HASH_ROTL32(k1,15); + k1 *= c2; + + h1 ^= k1; + h1 = BOOST_FUNCTIONAL_HASH_ROTL32(h1,13); + h1 = h1*5+0xe6546b64; + } + + +// Don't define 64-bit hash combine on platforms with 64 bit integers, +// and also not for 32-bit gcc as it warns about the 64-bit constant. +#if !defined(BOOST_NO_INT64_T) && \ + !(defined(__GNUC__) && ULONG_MAX == 0xffffffff) + + template + inline void hash_combine_impl(boost::uint64_t& h, + boost::uint64_t k) + { + const uint64_t m = UINT64_C(0xc6a4a7935bd1e995); + const int r = 47; + + k *= m; + k ^= k >> r; + k *= m; + + h ^= k; + h *= m; + } + +#endif // BOOST_NO_INT64_T } template @@ -237,16 +306,11 @@ namespace boost #endif #endif -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - template - inline void hash_combine(std::size_t& seed, T& v) -#else template inline void hash_combine(std::size_t& seed, T const& v) -#endif { boost::hash hasher; - seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2); + return boost::hash_detail::hash_combine_impl(seed, hasher(v)); } #if defined(BOOST_MSVC) @@ -351,7 +415,6 @@ namespace boost // // These are undefined later. -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) #define BOOST_HASH_SPECIALIZE(type) \ template <> struct hash \ : public std::unary_function \ @@ -371,45 +434,6 @@ namespace boost return boost::hash_value(v); \ } \ }; -#else -#define BOOST_HASH_SPECIALIZE(type) \ - template <> struct hash \ - : public std::unary_function \ - { \ - std::size_t operator()(type v) const \ - { \ - return boost::hash_value(v); \ - } \ - }; \ - \ - template <> struct hash \ - : public std::unary_function \ - { \ - std::size_t operator()(const type v) const \ - { \ - return boost::hash_value(v); \ - } \ - }; - -#define BOOST_HASH_SPECIALIZE_REF(type) \ - template <> struct hash \ - : public std::unary_function \ - { \ - std::size_t operator()(type const& v) const \ - { \ - return boost::hash_value(v); \ - } \ - }; \ - \ - template <> struct hash \ - : public std::unary_function \ - { \ - std::size_t operator()(type const& v) const \ - { \ - return boost::hash_value(v); \ - } \ - }; -#endif BOOST_HASH_SPECIALIZE(bool) BOOST_HASH_SPECIALIZE(char) @@ -517,6 +541,11 @@ namespace boost } #undef BOOST_HASH_CHAR_TRAITS +#undef BOOST_FUNCTIONAL_HASH_ROTL32 + +#if defined(BOOST_MSVC) +#pragma warning(pop) +#endif #endif // BOOST_FUNCTIONAL_HASH_HASH_HPP diff --git a/3party/boost/boost/functional/hash/hash_fwd.hpp b/3party/boost/boost/functional/hash/hash_fwd.hpp index 1d51b07f2d..01fe012ed6 100644 --- a/3party/boost/boost/functional/hash/hash_fwd.hpp +++ b/3party/boost/boost/functional/hash/hash_fwd.hpp @@ -10,11 +10,11 @@ #if !defined(BOOST_FUNCTIONAL_HASH_FWD_HPP) #define BOOST_FUNCTIONAL_HASH_FWD_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once +#include +#if defined(BOOST_HAS_PRAGMA_ONCE) +#pragma once #endif -#include #include #include @@ -22,11 +22,7 @@ namespace boost { template struct hash; -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) - template void hash_combine(std::size_t& seed, T& v); -#else template void hash_combine(std::size_t& seed, T const& v); -#endif template std::size_t hash_range(It, It); template void hash_range(std::size_t&, It, It); diff --git a/3party/boost/boost/functional/hash_fwd.hpp b/3party/boost/boost/functional/hash_fwd.hpp index b640988618..eea9073884 100644 --- a/3party/boost/boost/functional/hash_fwd.hpp +++ b/3party/boost/boost/functional/hash_fwd.hpp @@ -3,5 +3,9 @@ // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#include +#include +#if defined(BOOST_HAS_PRAGMA_ONCE) +#pragma once +#endif +#include diff --git a/3party/boost/boost/fusion/adapted.hpp b/3party/boost/boost/fusion/adapted.hpp index bcff7161b0..5bc33899c7 100644 --- a/3party/boost/boost/fusion/adapted.hpp +++ b/3party/boost/boost/fusion/adapted.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ADAPTED_30122005_1420) #define BOOST_FUSION_ADAPTED_30122005_1420 +#include #include #include #include @@ -18,7 +19,7 @@ // The std_tuple_iterator adaptor only supports implementations // using variadic templates -#if !defined(BOOST_NO_VARIADIC_TEMPLATES) +#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) #include #endif diff --git a/3party/boost/boost/fusion/adapted/adt.hpp b/3party/boost/boost/fusion/adapted/adt.hpp index a8293caaf8..d70cf82386 100644 --- a/3party/boost/boost/fusion/adapted/adt.hpp +++ b/3party/boost/boost/fusion/adapted/adt.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_HPP #define BOOST_FUSION_ADAPTED_ADT_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/adt/adapt_adt.hpp b/3party/boost/boost/fusion/adapted/adt/adapt_adt.hpp index 454ac922e5..3be25b1efc 100644 --- a/3party/boost/boost/fusion/adapted/adt/adapt_adt.hpp +++ b/3party/boost/boost/fusion/adapted/adt/adapt_adt.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_HPP #define BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/adt/adapt_adt_named.hpp b/3party/boost/boost/fusion/adapted/adt/adapt_adt_named.hpp index c2ace0130c..617e2f184a 100644 --- a/3party/boost/boost/fusion/adapted/adt/adapt_adt_named.hpp +++ b/3party/boost/boost/fusion/adapted/adt/adapt_adt_named.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_NAMED_HPP #define BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_NAMED_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/adt/adapt_assoc_adt.hpp b/3party/boost/boost/fusion/adapted/adt/adapt_assoc_adt.hpp index cce1dfb081..12bf6aa24f 100644 --- a/3party/boost/boost/fusion/adapted/adt/adapt_assoc_adt.hpp +++ b/3party/boost/boost/fusion/adapted/adt/adapt_assoc_adt.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_HPP #define BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp b/3party/boost/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp index b875982533..a420e5d3cb 100644 --- a/3party/boost/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp +++ b/3party/boost/boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_NAMED_HPP #define BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_NAMED_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/adt/detail/adapt_base.hpp b/3party/boost/boost/fusion/adapted/adt/detail/adapt_base.hpp index bddc79de7e..3de396dd6b 100644 --- a/3party/boost/boost/fusion/adapted/adt/detail/adapt_base.hpp +++ b/3party/boost/boost/fusion/adapted/adt/detail/adapt_base.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_DETAIL_ADAPT_BASE_HPP #define BOOST_FUSION_ADAPTED_ADT_DETAIL_ADAPT_BASE_HPP +#include #include #include #include @@ -39,6 +40,7 @@ > \ { \ template \ + BOOST_FUSION_GPU_ENABLED \ static void \ boost_fusion_adapt_adt_impl_set( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj, \ @@ -47,6 +49,7 @@ BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 3, ATTRIBUTE); \ } \ \ + BOOST_FUSION_GPU_ENABLED \ static BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \ boost_fusion_adapt_adt_impl_get( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj) \ @@ -54,6 +57,7 @@ return BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 2, ATTRIBUTE); \ } \ \ + BOOST_FUSION_GPU_ENABLED \ static BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) \ boost_fusion_adapt_adt_impl_get( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& obj) \ @@ -73,12 +77,14 @@ { \ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) type; \ \ + BOOST_FUSION_GPU_ENABLED \ explicit \ adt_attribute_proxy( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& o) \ : obj(&o) \ {} \ \ + BOOST_FUSION_GPU_ENABLED \ type get() const \ { \ return access::adt_attribute_access< \ @@ -87,6 +93,7 @@ >::boost_fusion_adapt_adt_impl_get(*obj); \ } \ \ + BOOST_FUSION_GPU_ENABLED \ operator type() const \ { \ return get(); \ @@ -106,6 +113,7 @@ { \ typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \ \ + BOOST_FUSION_GPU_ENABLED \ explicit \ adt_attribute_proxy( \ BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& o) \ @@ -113,6 +121,7 @@ {} \ \ template \ + BOOST_FUSION_GPU_ENABLED \ adt_attribute_proxy& \ operator=(Val const& val) \ { \ @@ -123,6 +132,7 @@ return *this; \ } \ \ + BOOST_FUSION_GPU_ENABLED \ type get() const \ { \ return access::adt_attribute_access< \ @@ -131,6 +141,7 @@ >::boost_fusion_adapt_adt_impl_get(*obj); \ } \ \ + BOOST_FUSION_GPU_ENABLED \ operator type() const \ { \ return get(); \ @@ -170,6 +181,7 @@ > \ type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type \ call(Seq& obj) \ { \ diff --git a/3party/boost/boost/fusion/adapted/adt/detail/extension.hpp b/3party/boost/boost/fusion/adapted/adt/detail/extension.hpp index 2f4db4dd09..6349118053 100644 --- a/3party/boost/boost/fusion/adapted/adt/detail/extension.hpp +++ b/3party/boost/boost/fusion/adapted/adt/detail/extension.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_ADT_DETAIL_EXTENSION_HPP #define BOOST_FUSION_ADAPTED_ADT_DETAIL_EXTENSION_HPP +#include #include #include #include @@ -19,16 +20,17 @@ namespace boost { namespace fusion { namespace detail { - template - struct get_identity - : remove_const::type> - {}; + template + struct get_identity + : remove_const::type> + {}; } namespace extension { // Overload as_const() to unwrap adt_attribute_proxy. template + BOOST_FUSION_GPU_ENABLED typename adt_attribute_proxy::type as_const(const adt_attribute_proxy& proxy) { return proxy.get(); diff --git a/3party/boost/boost/fusion/adapted/array/at_impl.hpp b/3party/boost/boost/fusion/adapted/array/at_impl.hpp index 12f0372670..084fffc208 100644 --- a/3party/boost/boost/fusion/adapted/array/at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/at_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_AT_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_AT_IMPL_HPP +#include #include #include @@ -26,6 +27,7 @@ namespace boost { namespace fusion { namespace extension add_reference::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/adapted/array/begin_impl.hpp b/3party/boost/boost/fusion/adapted/array/begin_impl.hpp index 2ee4d707b1..4ffaba01f1 100644 --- a/3party/boost/boost/fusion/adapted/array/begin_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/begin_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension @@ -30,6 +31,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/adapted/array/deref_impl.hpp b/3party/boost/boost/fusion/adapted/array/deref_impl.hpp index a58cf99001..a7dc7cb9ca 100644 --- a/3party/boost/boost/fusion/adapted/array/deref_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/deref_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_DEREF_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_DEREF_IMPL_HPP +#include #include #include @@ -28,6 +29,7 @@ namespace boost { namespace fusion { namespace extension >::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/adapted/array/end_impl.hpp b/3party/boost/boost/fusion/adapted/array/end_impl.hpp index 5b367f9c00..d36c6b81b3 100644 --- a/3party/boost/boost/fusion/adapted/array/end_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/end_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_END_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_END_IMPL_HPP +#include #include #include #include @@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/adapted/array/is_sequence_impl.hpp b/3party/boost/boost/fusion/adapted/array/is_sequence_impl.hpp index d6de858561..0f5d31fad3 100644 --- a/3party/boost/boost/fusion/adapted/array/is_sequence_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/is_sequence_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_IS_SEQUENCE_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_IS_SEQUENCE_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/adapted/array/is_view_impl.hpp b/3party/boost/boost/fusion/adapted/array/is_view_impl.hpp index 238eac0e58..7cf69d8a01 100644 --- a/3party/boost/boost/fusion/adapted/array/is_view_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/is_view_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_IS_VIEW_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_IS_VIEW_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/adapted/array/size_impl.hpp b/3party/boost/boost/fusion/adapted/array/size_impl.hpp index 8be5a29d81..d208da1472 100644 --- a/3party/boost/boost/fusion/adapted/array/size_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/size_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_SIZE_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_SIZE_IMPL_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/array/tag_of.hpp b/3party/boost/boost/fusion/adapted/array/tag_of.hpp index 7c732a7021..d62fe65b84 100644 --- a/3party/boost/boost/fusion/adapted/array/tag_of.hpp +++ b/3party/boost/boost/fusion/adapted/array/tag_of.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP #define BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/array/value_at_impl.hpp b/3party/boost/boost/fusion/adapted/array/value_at_impl.hpp index 4e04c37a8f..9aab11b528 100644 --- a/3party/boost/boost/fusion/adapted/array/value_at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/value_at_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_VALUE_AT_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_VALUE_AT_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/adapted/array/value_of_impl.hpp b/3party/boost/boost/fusion/adapted/array/value_of_impl.hpp index 2bbddf235e..3f91e80133 100644 --- a/3party/boost/boost/fusion/adapted/array/value_of_impl.hpp +++ b/3party/boost/boost/fusion/adapted/array/value_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_ARRAY_VALUE_OF_IMPL_HPP #define BOOST_FUSION_ADAPTED_ARRAY_VALUE_OF_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/adapted/boost_array.hpp b/3party/boost/boost/fusion/adapted/boost_array.hpp index ed9fd9b3ad..eb6c0af37a 100644 --- a/3party/boost/boost/fusion/adapted/boost_array.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_BOOST_ARRAY_27122005_1035) #define BOOST_FUSION_BOOST_ARRAY_27122005_1035 +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/boost_array/array_iterator.hpp b/3party/boost/boost/fusion/adapted/boost_array/array_iterator.hpp index 1246144980..0e39d45709 100644 --- a/3party/boost/boost/fusion/adapted/boost_array/array_iterator.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array/array_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ARRAY_ITERATOR_26122005_2250) #define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250 +#include #include #include #include @@ -31,6 +32,7 @@ namespace boost { namespace fusion typedef mpl::int_ index; typedef Array array_type; + BOOST_FUSION_GPU_ENABLED array_iterator(Array& a) : array(a) {} @@ -55,6 +57,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const & it) { @@ -69,6 +72,7 @@ namespace boost { namespace fusion typedef typename Iterator::array_type array_type; typedef array_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -91,6 +95,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(I1 const&, I2 const&) { diff --git a/3party/boost/boost/fusion/adapted/boost_array/detail/at_impl.hpp b/3party/boost/boost/fusion/adapted/boost_array/detail/at_impl.hpp index 6df8858663..15235e8e57 100644 --- a/3party/boost/boost/fusion/adapted/boost_array/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_27122005_1241) #define BOOST_FUSION_AT_IMPL_27122005_1241 +#include #include #include @@ -32,6 +33,7 @@ namespace boost { namespace fusion { typename Sequence::const_reference, typename Sequence::reference>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/adapted/boost_array/detail/begin_impl.hpp b/3party/boost/boost/fusion/adapted/boost_array/detail/begin_impl.hpp index c8bce9ffe7..5e0752c145 100644 --- a/3party/boost/boost/fusion/adapted/boost_array/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117) #define BOOST_FUSION_BEGIN_IMPL_27122005_1117 +#include #include namespace boost { namespace fusion { @@ -27,6 +28,7 @@ namespace boost { namespace fusion { { typedef array_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/3party/boost/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp b/3party/boost/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp index 8e92efd7c3..038f6db9de 100644 --- a/3party/boost/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array/detail/category_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044) #define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044 +#include #include namespace boost { namespace fusion { diff --git a/3party/boost/boost/fusion/adapted/boost_array/detail/end_impl.hpp b/3party/boost/boost/fusion/adapted/boost_array/detail/end_impl.hpp index 38b5a82cb4..13ed1e3e3d 100644 --- a/3party/boost/boost/fusion/adapted/boost_array/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_27122005_1120) #define BOOST_FUSION_END_IMPL_27122005_1120 +#include #include namespace boost { namespace fusion { @@ -27,6 +28,7 @@ namespace boost { namespace fusion { { typedef array_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/3party/boost/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp b/3party/boost/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp index cdbe6c8382..ac52e720eb 100644 --- a/3party/boost/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array/detail/is_sequence_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648) #define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648 +#include #include namespace boost { namespace fusion { diff --git a/3party/boost/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp b/3party/boost/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp index cf63c6a667..0a84aa0ae1 100644 --- a/3party/boost/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array/detail/is_view_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2221) #define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/boost_array/tag_of.hpp b/3party/boost/boost/fusion/adapted/boost_array/tag_of.hpp index f33c93fc70..d93fed1d30 100644 --- a/3party/boost/boost/fusion/adapted/boost_array/tag_of.hpp +++ b/3party/boost/boost/fusion/adapted/boost_array/tag_of.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_SEQUENCE_TAG_OF_27122005_1030) #define FUSION_SEQUENCE_TAG_OF_27122005_1030 +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/boost_tuple.hpp b/3party/boost/boost/fusion/adapted/boost_tuple.hpp index 6149478f3a..85af576461 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_BOOST_TUPLE_09272006_0732) #define BOOST_FUSION_BOOST_TUPLE_09272006_0732 +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp index 551f0fd900..416880b4e9 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BOOST_TUPLE_ITERATOR_09262006_1851) #define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851 +#include #include #include #include @@ -47,6 +48,7 @@ namespace boost { namespace fusion { typedef Cons cons_type; + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons& in_cons) : cons(in_cons) {} Cons& cons; @@ -67,6 +69,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& iter) { @@ -88,6 +91,7 @@ namespace boost { namespace fusion >::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& iter) { @@ -121,6 +125,7 @@ namespace boost { namespace fusion lazy_next_distance >::type type; + BOOST_FUSION_GPU_ENABLED static type call(I1 const&, I2 const&) { @@ -156,6 +161,7 @@ namespace boost { namespace fusion : boost_tuple_null_iterator { template + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons const&) {} }; @@ -164,6 +170,7 @@ namespace boost { namespace fusion : boost_tuple_null_iterator { template + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons const&) {} }; @@ -172,6 +179,7 @@ namespace boost { namespace fusion : boost_tuple_null_iterator > { template + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons const&) {} }; @@ -180,6 +188,7 @@ namespace boost { namespace fusion : boost_tuple_null_iterator const> { template + BOOST_FUSION_GPU_ENABLED explicit boost_tuple_iterator(Cons const&) {} }; }} diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp index 8e2312500b..32ca5bec55 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_09262006_1920) #define BOOST_FUSION_AT_IMPL_09262006_1920 +#include #include #include @@ -37,6 +38,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp index 010c442750..1fbbb19c14 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_09272006_0719) #define BOOST_FUSION_BEGIN_IMPL_09272006_0719 +#include #include namespace boost { namespace fusion @@ -26,6 +27,7 @@ namespace boost { namespace fusion { typedef boost_tuple_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp index e54702bf74..9f7f07c3a1 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_END_IMPL_09272006_0721) #define BOOST_FUSION_END_IMPL_09272006_0721 +#include #include #include #include @@ -41,6 +42,7 @@ namespace boost { namespace fusion > type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp index c74fb4dfea..eb4a1185e0 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726) #define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp index 5d639d2b23..6384411034 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_IS_VIEW_IMPL_09272006_0725) #define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp index 1dad42030f..371627867b 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SIZE_IMPL_09272006_0724) #define BOOST_FUSION_SIZE_IMPL_09272006_0724 +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp index 4f5fc6a656..3999271368 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_09262006_1926) #define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/boost_tuple/tag_of.hpp b/3party/boost/boost/fusion/adapted/boost_tuple/tag_of.hpp index 18356de2af..cf24ffbf80 100644 --- a/3party/boost/boost/fusion/adapted/boost_tuple/tag_of.hpp +++ b/3party/boost/boost/fusion/adapted/boost_tuple/tag_of.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_TAG_OF_09262006_1900) #define BOOST_FUSION_TAG_OF_09262006_1900 +#include #include namespace boost { namespace tuples diff --git a/3party/boost/boost/fusion/adapted/mpl.hpp b/3party/boost/boost/fusion/adapted/mpl.hpp index 739ff93826..3eca0320ad 100644 --- a/3party/boost/boost/fusion/adapted/mpl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_MPL_31122005_1152) #define BOOST_FUSION_MPL_31122005_1152 +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/at_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/at_impl.hpp index 99342d7b3c..3fcafaac1d 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_31122005_1642) #define BOOST_FUSION_AT_IMPL_31122005_1642 +#include #include namespace boost { namespace fusion @@ -27,6 +28,7 @@ namespace boost { namespace fusion { typedef typename mpl::at::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence) { diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/begin_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/begin_impl.hpp index ef274ba0a6..c64e2828f4 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209) #define BOOST_FUSION_BEGIN_IMPL_31122005_1209 +#include #include #include #include @@ -32,6 +33,7 @@ namespace boost { namespace fusion { >::type iterator; typedef mpl_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence) { diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/category_of_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/category_of_impl.hpp index be43a56194..8cf2f88bfe 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/category_of_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/category_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141) #define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141 +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/empty_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/empty_impl.hpp index f2eb22a0d9..4e385ff513 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/empty_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/empty_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_EMPTY_IMPL_31122005_1554) #define BOOST_FUSION_EMPTY_IMPL_31122005_1554 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/end_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/end_impl.hpp index 613ab63cc0..579e5a69e0 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_END_IMPL_31122005_1237) #define BOOST_FUSION_END_IMPL_31122005_1237 +#include #include #include #include @@ -32,6 +33,7 @@ namespace boost { namespace fusion >::type iterator; typedef mpl_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence) { diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/has_key_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/has_key_impl.hpp index b2b3253a8e..9e5a1dc4d2 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/has_key_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/has_key_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_HAS_KEY_IMPL_31122005_1647) #define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp index 2c6c5f988b..caed9e62de 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505) #define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/is_view_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/is_view_impl.hpp index bd9b7a4211..b494248972 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/is_view_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/is_view_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_IS_VIEW_IMPL_03202006_0048) #define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/size_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/size_impl.hpp index 38168724d4..379b97dca8 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/size_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/size_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SIZE_IMPL_31122005_1508) #define BOOST_FUSION_SIZE_IMPL_31122005_1508 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/mpl/detail/value_at_impl.hpp b/3party/boost/boost/fusion/adapted/mpl/detail/value_at_impl.hpp index 5560b82717..0d3eb6524b 100644 --- a/3party/boost/boost/fusion/adapted/mpl/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_31122005_1621) #define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/mpl/mpl_iterator.hpp b/3party/boost/boost/fusion/adapted/mpl/mpl_iterator.hpp index 7caa8ea728..cc03767293 100644 --- a/3party/boost/boost/fusion/adapted/mpl/mpl_iterator.hpp +++ b/3party/boost/boost/fusion/adapted/mpl/mpl_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_MPL_ITERATOR_05052005_0731) #define FUSION_MPL_ITERATOR_05052005_0731 +#include #include #include #include @@ -37,6 +38,7 @@ namespace boost { namespace fusion typename Iterator::iterator_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator) { @@ -51,6 +53,7 @@ namespace boost { namespace fusion typename mpl::next::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator) { @@ -65,6 +68,7 @@ namespace boost { namespace fusion typename mpl::prior::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator) { @@ -79,6 +83,7 @@ namespace boost { namespace fusion typename mpl::advance::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& /*i*/) { @@ -99,6 +104,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(I1 const&, I2 const&) { diff --git a/3party/boost/boost/fusion/adapted/std_pair.hpp b/3party/boost/boost/fusion/adapted/std_pair.hpp index 4263e00c98..79de3d44f3 100644 --- a/3party/boost/boost/fusion/adapted/std_pair.hpp +++ b/3party/boost/boost/fusion/adapted/std_pair.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STD_PAIR_HPP #define BOOST_FUSION_ADAPTED_STD_PAIR_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/std_tuple.hpp b/3party/boost/boost/fusion/adapted/std_tuple.hpp index a49b4807d4..984a4df478 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_BOOST_TUPLE_09242011_1744) #define BOOST_FUSION_BOOST_TUPLE_09242011_1744 +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/std_tuple/detail/at_impl.hpp b/3party/boost/boost/fusion/adapted/std_tuple/detail/at_impl.hpp index 400f366e94..cffd442885 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/detail/at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_09242011_1744) #define BOOST_FUSION_AT_IMPL_09242011_1744 +#include #include #include #include @@ -39,6 +40,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp b/3party/boost/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp index 8b219024b8..33613c20b1 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_BEGIN_IMPL_09242011_1744) #define BOOST_FUSION_BEGIN_IMPL_09242011_1744 +#include #include namespace boost { namespace fusion @@ -26,6 +27,7 @@ namespace boost { namespace fusion { typedef std_tuple_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/3party/boost/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp b/3party/boost/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp index 96d567d5e9..b41e84181f 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp @@ -4,8 +4,8 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726) -#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726 +#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_04202013_0940) +#define BOOST_FUSION_CATEGORY_OF_IMPL_04202013_0940 namespace boost { namespace fusion { diff --git a/3party/boost/boost/fusion/adapted/std_tuple/detail/end_impl.hpp b/3party/boost/boost/fusion/adapted/std_tuple/detail/end_impl.hpp index 78782b7943..77048698a1 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_END_IMPL_09242011_1744) #define BOOST_FUSION_END_IMPL_09242011_1744 +#include #include #include #include @@ -30,6 +31,7 @@ namespace boost { namespace fusion static int const size = std::tuple_size::value; typedef std_tuple_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/3party/boost/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp b/3party/boost/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp index 6da5bdc34d..672072654d 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09242011_1744) #define BOOST_FUSION_IS_SEQUENCE_IMPL_09242011_1744 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp b/3party/boost/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp index 9439431b5a..e161984f22 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_IS_VIEW_IMPL_09242011_1744) #define BOOST_FUSION_IS_VIEW_IMPL_09242011_1744 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/std_tuple/detail/size_impl.hpp b/3party/boost/boost/fusion/adapted/std_tuple/detail/size_impl.hpp index d8b10af1ef..11c294e574 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/detail/size_impl.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/detail/size_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SIZE_IMPL_09242011_1744) #define BOOST_FUSION_SIZE_IMPL_09242011_1744 +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp b/3party/boost/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp index fa9656e7b2..e3e853ca42 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/detail/value_at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_09242011_1744) #define BOOST_FUSION_VALUE_AT_IMPL_09242011_1744 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp b/3party/boost/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp index 082018a449..c4d957ea0b 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_STD_TUPLE_ITERATOR_09112011_1905) #define FUSION_STD_TUPLE_ITERATOR_09112011_1905 +#include #include #include #include @@ -35,7 +36,7 @@ namespace boost { namespace fusion typename add_const::type, Index> identity; - explicit std_tuple_iterator(Tuple& tuple) + BOOST_FUSION_GPU_ENABLED explicit std_tuple_iterator(Tuple& tuple) : tuple(tuple) {} Tuple& tuple; @@ -57,6 +58,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& iter) { @@ -71,6 +73,7 @@ namespace boost { namespace fusion typedef typename Iterator::tuple_type tuple_type; typedef std_tuple_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -93,6 +96,7 @@ namespace boost { namespace fusion { typedef mpl::int_ type; + BOOST_FUSION_GPU_ENABLED static type call(First const&, Last const&) { diff --git a/3party/boost/boost/fusion/adapted/std_tuple/tag_of.hpp b/3party/boost/boost/fusion/adapted/std_tuple/tag_of.hpp index 6d7b4d6fb7..e145335445 100644 --- a/3party/boost/boost/fusion/adapted/std_tuple/tag_of.hpp +++ b/3party/boost/boost/fusion/adapted/std_tuple/tag_of.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_TAG_OF_09112011_1842) #define BOOST_FUSION_TAG_OF_09112011_1842 +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct.hpp b/3party/boost/boost/fusion/adapted/struct.hpp index e51b514b0a..3f159038a0 100644 --- a/3party/boost/boost/fusion/adapted/struct.hpp +++ b/3party/boost/boost/fusion/adapted/struct.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/adapt_assoc_struct.hpp b/3party/boost/boost/fusion/adapted/struct/adapt_assoc_struct.hpp index 755bffd1c6..eca77d613b 100644 --- a/3party/boost/boost/fusion/adapted/struct/adapt_assoc_struct.hpp +++ b/3party/boost/boost/fusion/adapted/struct/adapt_assoc_struct.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp b/3party/boost/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp index 92c3aa3e30..2f1a9a3037 100644 --- a/3party/boost/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp +++ b/3party/boost/boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_NAMED_HPP #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_NAMED_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/adapt_struct.hpp b/3party/boost/boost/fusion/adapted/struct/adapt_struct.hpp index f20533c99e..f60ca03e19 100644 --- a/3party/boost/boost/fusion/adapted/struct/adapt_struct.hpp +++ b/3party/boost/boost/fusion/adapted/struct/adapt_struct.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/adapt_struct_named.hpp b/3party/boost/boost/fusion/adapted/struct/adapt_struct_named.hpp index 17a3d8e3ca..3f29f3a39e 100644 --- a/3party/boost/boost/fusion/adapted/struct/adapt_struct_named.hpp +++ b/3party/boost/boost/fusion/adapted/struct/adapt_struct_named.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP #define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/define_assoc_struct.hpp b/3party/boost/boost/fusion/adapted/struct/define_assoc_struct.hpp index 9d264e4085..1f5ce8dca7 100644 --- a/3party/boost/boost/fusion/adapted/struct/define_assoc_struct.hpp +++ b/3party/boost/boost/fusion/adapted/struct/define_assoc_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/define_struct.hpp b/3party/boost/boost/fusion/adapted/struct/define_struct.hpp index b733115ac0..fa1f549f91 100644 --- a/3party/boost/boost/fusion/adapted/struct/define_struct.hpp +++ b/3party/boost/boost/fusion/adapted/struct/define_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/define_struct_inline.hpp b/3party/boost/boost/fusion/adapted/struct/define_struct_inline.hpp index 9dc5b44cc6..5986c0d445 100644 --- a/3party/boost/boost/fusion/adapted/struct/define_struct_inline.hpp +++ b/3party/boost/boost/fusion/adapted/struct/define_struct_inline.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_INLINE_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_INLINE_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/detail/adapt_base.hpp b/3party/boost/boost/fusion/adapted/struct/detail/adapt_base.hpp index 1c8f040850..db702ae155 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/adapt_base.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/adapt_base.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP +#include #include #include @@ -137,6 +138,7 @@ >::type \ type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type \ call(Seq& seq) \ { \ @@ -156,6 +158,7 @@ { \ typedef char const* type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type \ call() \ { \ diff --git a/3party/boost/boost/fusion/adapted/struct/detail/at_impl.hpp b/3party/boost/boost/fusion/adapted/struct/detail/at_impl.hpp index 68fd241a88..52ed847d6e 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/at_impl.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/adapted/struct/detail/begin_impl.hpp b/3party/boost/boost/fusion/adapted/struct/detail/begin_impl.hpp index a7901fcad5..9cb68719a9 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/begin_impl.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension @@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { @@ -55,6 +57,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/adapted/struct/detail/define_struct.hpp b/3party/boost/boost/fusion/adapted/struct/detail/define_struct.hpp index 53f1e5d646..44d99f06b4 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/define_struct.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/define_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP +#include #include #include #include @@ -61,6 +62,7 @@ ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ template \ + BOOST_FUSION_GPU_ENABLED \ self_type& \ operator=(Seq const& seq) \ { \ @@ -119,6 +121,7 @@ ATTRIBUTE_TUPEL_SIZE, \ ATTRIBUTES_SEQ) \ \ + BOOST_FUSION_GPU_ENABLED \ NAME() \ : BOOST_PP_SEQ_FOR_EACH_I_R( \ 1, \ @@ -127,6 +130,7 @@ ATTRIBUTES_SEQ) \ {} \ \ + BOOST_FUSION_GPU_ENABLED \ NAME(self_type const& other_self) \ : BOOST_PP_SEQ_FOR_EACH_I_R( \ 1, \ @@ -136,6 +140,7 @@ {} \ \ template \ + BOOST_FUSION_GPU_ENABLED \ NAME(Seq const& seq \ BOOST_PP_IF( \ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \ @@ -155,6 +160,7 @@ #define BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ + BOOST_FUSION_GPU_ENABLED \ explicit \ NAME(boost::call_traits< \ BOOST_PP_TUPLE_ELEM( \ @@ -167,6 +173,7 @@ #define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1( \ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ + BOOST_FUSION_GPU_ENABLED \ explicit \ NAME(typename boost::call_traits< \ typename boost::fusion::detail::get_first_arg< \ @@ -203,6 +210,7 @@ #define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N( \ TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ + BOOST_FUSION_GPU_ENABLED \ NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \ 1, \ BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_ARG_I, \ @@ -230,6 +238,7 @@ #define BOOST_FUSION_DEFINE_STRUCT_CTOR_N( \ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ + BOOST_FUSION_GPU_ENABLED \ NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \ 1, \ BOOST_FUSION_DEFINE_STRUCT_CTOR_ARG_I, \ @@ -271,10 +280,12 @@ NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \ \ template \ + BOOST_FUSION_GPU_ENABLED \ NAME(Seq const&) \ {} \ \ template \ + BOOST_FUSION_GPU_ENABLED \ self_type& \ operator=(Seq const& seq) \ { \ diff --git a/3party/boost/boost/fusion/adapted/struct/detail/define_struct_inline.hpp b/3party/boost/boost/fusion/adapted/struct/detail/define_struct_inline.hpp index 7bc5fe08af..87ab09fa5d 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/define_struct_inline.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/define_struct_inline.hpp @@ -8,6 +8,8 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP +#include +#include #include #include #include @@ -25,8 +27,32 @@ #include #include #include +#include #include +// MSVC and GCC <= 4.4 have a bug that affects partial specializations of +// nested templates under some circumstances. This affects the implementation +// of BOOST_FUSION_DEFINE_STRUCT_INLINE, which uses such specializations for +// the iterator class's 'deref' and 'value_of' metafunctions. On these compilers +// an alternate implementation for these metafunctions is used that does not +// require such specializations. The alternate implementation takes longer +// to compile so its use is restricted to the offending compilers. +// For MSVC, the bug was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates +// For GCC, 4.4 and earlier are no longer maintained so there is no need +// to report a bug. +#if defined(BOOST_MSVC) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4))) + #define BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND +#endif + +#ifdef BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND +#include +#include +#include +#include +#include +#endif + + #define BOOST_FUSION_MAKE_DEFAULT_INIT_LIST_ENTRY(R, DATA, N, ATTRIBUTE) \ BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE)() @@ -87,6 +113,7 @@ struct deref > \ { \ typedef typename boost_fusion_detail_Sq::t##N##_type TYPE_QUAL& type; \ + BOOST_FUSION_GPU_ENABLED \ static type call(CALL_ARG_TYPE, N> const& iter) \ { \ return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \ @@ -136,6 +163,7 @@ typename boost_fusion_detail_Sq::t##N##_type& \ >::type type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type call(boost_fusion_detail_Sq& sq) \ { \ return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \ @@ -148,6 +176,96 @@ #define BOOST_FUSION_MAKE_DATA_MEMBER(R, DATA, N, ATTRIBUTE) \ BOOST_PP_TUPLE_ELEM(2, 0, ATTRIBUTE) BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); +#ifdef BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND + +#define BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTE_SEQ_SIZE) \ + template \ + struct value_of : boost::fusion::result_of::at_c< \ + ref_vec_t, \ + boost_fusion_detail_Iterator::index::value \ + > \ + { \ + }; + +#define BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ + template \ + struct deref \ + { \ + typedef typename boost::remove_const< \ + boost_fusion_detail_Iterator \ + >::type iterator_raw_type; \ + \ + static const int index = iterator_raw_type::index::value; \ + \ + typedef typename boost::fusion::result_of::at_c< \ + ref_vec_t, \ + index \ + >::type result_raw_type; \ + \ + typedef typename boost::mpl::if_< \ + boost::is_const, \ + typename boost::add_const::type, \ + result_raw_type \ + >::type type; \ + \ + BOOST_FUSION_GPU_ENABLED \ + static type call(iterator_raw_type const& iter) \ + { \ + return boost::fusion::at_c(iter.ref_vec); \ + } \ + }; + +#define BOOST_FUSION_MAKE_ITERATOR_WKND_FIELD_NAME(R, DATA, N, ATTRIBUTE) \ + BOOST_PP_COMMA_IF(N) seq.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES(ATTRIBUTES_SEQ) \ + , ref_vec(BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_ITERATOR_WKND_FIELD_NAME, \ + ~, \ + BOOST_PP_SEQ_TAIL(ATTRIBUTES_SEQ))) + +#define BOOST_FUSION_MAKE_ITERATOR_WKND_REF(Z, N, DATA) \ + BOOST_PP_COMMA_IF(N) \ + typename boost::mpl::if_< \ + boost::is_const, \ + typename boost::add_const< \ + typename boost_fusion_detail_Seq::t##N##_type \ + >::type, \ + typename boost_fusion_detail_Seq::t##N##_type \ + >::type& + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) \ + typedef boost::fusion::vector< \ + BOOST_PP_REPEAT( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_ITERATOR_WKND_REF, \ + ~) \ + > ref_vec_t; \ + \ + ref_vec_t ref_vec; + +#else + +#define BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTES_SEQ_SIZE) \ + template struct value_of; \ + BOOST_PP_REPEAT( \ + ATTRIBUTES_SEQ_SIZE, \ + BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \ + NAME) + +#define BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ + template struct deref; \ + BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \ + NAME, \ + ATTRIBUTES_SEQ) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES(ATTRIBUTES_SEQ) + +#define BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) + +#endif // BOOST_FUSION_NEED_NESTED_TEMPLATE_PARTIAL_SPEC_WKND + // Note: We can't nest the iterator inside the struct because we run into // a MSVC10 bug involving partial specializations of nested templates. @@ -218,22 +336,20 @@ typedef boost::mpl::int_ index; \ typedef boost_fusion_detail_Seq sequence_type; \ \ + BOOST_FUSION_GPU_ENABLED \ BOOST_FUSION_ITERATOR_NAME(NAME)(boost_fusion_detail_Seq& seq) \ - : seq_(seq) {} \ + : seq_(seq) \ + BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES( \ + (0)ATTRIBUTES_SEQ) \ + {} \ \ boost_fusion_detail_Seq& seq_; \ \ - template struct value_of; \ - BOOST_PP_REPEAT( \ - ATTRIBUTES_SEQ_SIZE, \ - BOOST_FUSION_MAKE_ITERATOR_VALUE_OF_SPECS, \ - NAME) \ + BOOST_FUSION_DEFINE_ITERATOR_WKND_MEMBERS(ATTRIBUTES_SEQ_SIZE) \ \ - template struct deref; \ - BOOST_PP_SEQ_FOR_EACH_I( \ - BOOST_FUSION_MAKE_ITERATOR_DEREF_SPECS, \ - NAME, \ - ATTRIBUTES_SEQ) \ + BOOST_FUSION_DEFINE_ITERATOR_VALUE_OF(NAME, ATTRIBUTES_SEQ_SIZE) \ + \ + BOOST_FUSION_DEFINE_ITERATOR_DEREF(NAME, ATTRIBUTES_SEQ) \ \ template \ struct next \ @@ -243,6 +359,7 @@ boost_fusion_detail_It::index::value + 1 \ > type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ @@ -257,6 +374,7 @@ boost_fusion_detail_It::index::value - 1 \ > type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ @@ -274,6 +392,7 @@ typename boost_fusion_detail_It1::index \ >::type type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type call(boost_fusion_detail_It1 const& it1, \ boost_fusion_detail_It2 const& it2) \ { \ @@ -293,6 +412,7 @@ + boost_fusion_detail_M::value \ > type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type call(boost_fusion_detail_It const& it) \ { \ return type(it.seq_); \ @@ -325,12 +445,14 @@ (NAME, ATTRIBUTES_SEQ) \ \ template \ + BOOST_FUSION_GPU_ENABLED \ NAME(const boost_fusion_detail_Seq& rhs) \ { \ boost::fusion::copy(rhs, *this); \ } \ \ template \ + BOOST_FUSION_GPU_ENABLED \ NAME& operator=(const boost_fusion_detail_Seq& rhs) \ { \ boost::fusion::copy(rhs, *this); \ @@ -343,6 +465,7 @@ typedef BOOST_FUSION_ITERATOR_NAME(NAME) \ type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type call(boost_fusion_detail_Sq& sq) \ { \ return type(sq); \ @@ -357,6 +480,7 @@ ATTRIBUTES_SEQ_SIZE \ > type; \ \ + BOOST_FUSION_GPU_ENABLED \ static type call(boost_fusion_detail_Sq& sq) \ { \ return type(sq); \ diff --git a/3party/boost/boost/fusion/adapted/struct/detail/deref_impl.hpp b/3party/boost/boost/fusion/adapted/struct/detail/deref_impl.hpp index 3f25efef58..a3bc9f3e19 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/deref_impl.hpp @@ -28,6 +28,7 @@ namespace boost { namespace fusion { namespace extension typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) diff --git a/3party/boost/boost/fusion/adapted/struct/detail/end_impl.hpp b/3party/boost/boost/fusion/adapted/struct/detail/end_impl.hpp index 0d09092957..b17eba7139 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/end_impl.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension @@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { @@ -55,6 +57,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/adapted/struct/detail/extension.hpp b/3party/boost/boost/fusion/adapted/struct/detail/extension.hpp index 17edb89dca..e63a0a4535 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/extension.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/extension.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp b/3party/boost/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp index c32222f8cf..afcbe5ba44 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp @@ -10,6 +10,7 @@ #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/adapted/struct/detail/namespace.hpp b/3party/boost/boost/fusion/adapted/struct/detail/namespace.hpp index 0f3ec5e0b1..2ad509df86 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/namespace.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/namespace.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/adapted/struct/detail/proxy_type.hpp b/3party/boost/boost/fusion/adapted/struct/detail/proxy_type.hpp index bf0a6ebd53..350137a482 100644 --- a/3party/boost/boost/fusion/adapted/struct/detail/proxy_type.hpp +++ b/3party/boost/boost/fusion/adapted/struct/detail/proxy_type.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP #define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP +#include #include #define BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \ @@ -18,6 +19,7 @@ \ struct NAME \ { \ + BOOST_FUSION_GPU_ENABLED \ NAME(WRAPPED_TYPE& in_obj) \ : obj(in_obj) \ {} \ diff --git a/3party/boost/boost/fusion/algorithm.hpp b/3party/boost/boost/fusion/algorithm.hpp index 0b085bf41a..f698ff9771 100644 --- a/3party/boost/boost/fusion/algorithm.hpp +++ b/3party/boost/boost/fusion/algorithm.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ALGORITHM_10022005_0549) #define FUSION_ALGORITHM_10022005_0549 +#include #include #include #include diff --git a/3party/boost/boost/fusion/algorithm/auxiliary.hpp b/3party/boost/boost/fusion/algorithm/auxiliary.hpp index 34deba37d1..ec327a0bdb 100644 --- a/3party/boost/boost/fusion/algorithm/auxiliary.hpp +++ b/3party/boost/boost/fusion/algorithm/auxiliary.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ALGORITHM_AUXILIARY_02192011_0907) #define FUSION_ALGORITHM_AUXILIARY_02192011_0907 +#include #include #endif diff --git a/3party/boost/boost/fusion/algorithm/auxiliary/copy.hpp b/3party/boost/boost/fusion/algorithm/auxiliary/copy.hpp index fd866468eb..7ac8e6f589 100644 --- a/3party/boost/boost/fusion/algorithm/auxiliary/copy.hpp +++ b/3party/boost/boost/fusion/algorithm/auxiliary/copy.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_COPY_02162011_2308) #define FUSION_COPY_02162011_2308 +#include #include #include #include @@ -33,12 +34,14 @@ namespace boost { namespace fusion typedef typename result_of::end::type end2_type; template + BOOST_FUSION_GPU_ENABLED static void call(I1 const&, I2 const&, mpl::true_) { } template + BOOST_FUSION_GPU_ENABLED static void call(I1 const& src, I2 const& dest, mpl::false_) { @@ -47,6 +50,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED static void call(I1 const& src, I2 const& dest) { @@ -57,6 +61,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if_c< @@ -69,7 +74,7 @@ namespace boost { namespace fusion copy(Seq1 const& src, Seq2& dest) { BOOST_STATIC_ASSERT( - result_of::size::value == result_of::size::value); + result_of::size::value <= result_of::size::value); detail::sequence_copy< Seq1 const, Seq2>:: diff --git a/3party/boost/boost/fusion/algorithm/auxiliary/move.hpp b/3party/boost/boost/fusion/algorithm/auxiliary/move.hpp new file mode 100644 index 0000000000..688f54a9f2 --- /dev/null +++ b/3party/boost/boost/fusion/algorithm/auxiliary/move.hpp @@ -0,0 +1,89 @@ +/*============================================================================= + Copyright (c) 2001-2013 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(FUSION_MOVE_01192013_2225) +#define FUSION_MOVE_01192013_2225 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined (BOOST_MSVC) +# pragma warning(push) +# pragma warning (disable: 4100) // unreferenced formal parameter +#endif + +namespace boost { namespace fusion +{ + namespace detail + { + template + struct sequence_move + { + typedef typename result_of::end::type end1_type; + typedef typename result_of::end::type end2_type; + + template + BOOST_FUSION_GPU_ENABLED + static void + call(I1 const&, I2 const&, mpl::true_) + { + } + + template + BOOST_FUSION_GPU_ENABLED + static void + call(I1 const& src, I2 const& dest, mpl::false_) + { + *dest = std::move(*src); + call(fusion::next(src), fusion::next(dest)); + } + + template + BOOST_FUSION_GPU_ENABLED + static void + call(I1 const& src, I2 const& dest) + { + typename result_of::equal_to::type eq; + return call(src, dest, eq); + } + }; + } + + template + BOOST_FUSION_GPU_ENABLED + inline + typename + enable_if_c< + type_traits::ice_and< + traits::is_sequence::value + , traits::is_sequence::value + >::value, + void + >::type + move(Seq1&& src, Seq2& dest) + { + BOOST_STATIC_ASSERT( + result_of::size::value <= result_of::size::value); + + detail::sequence_move< + Seq1, Seq2>:: + call(fusion::begin(src), fusion::begin(dest)); + } +}} + +#if defined (BOOST_MSVC) +# pragma warning(pop) +#endif + +#endif diff --git a/3party/boost/boost/fusion/algorithm/iteration.hpp b/3party/boost/boost/fusion/algorithm/iteration.hpp index 16a331b358..0b58a28ffe 100644 --- a/3party/boost/boost/fusion/algorithm/iteration.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ALGORITHM_ITERATION_10022005_0549) #define FUSION_ALGORITHM_ITERATION_10022005_0549 +#include #include #include #include diff --git a/3party/boost/boost/fusion/algorithm/iteration/accumulate.hpp b/3party/boost/boost/fusion/algorithm/iteration/accumulate.hpp index 4b676dea6a..430f9eb546 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/accumulate.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/accumulate.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ACCUMULATE_09172005_1032) #define FUSION_ACCUMULATE_09172005_1032 +#include #include #include #include @@ -25,6 +26,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< @@ -37,6 +39,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< diff --git a/3party/boost/boost/fusion/algorithm/iteration/accumulate_fwd.hpp b/3party/boost/boost/fusion/algorithm/iteration/accumulate_fwd.hpp index a4ca316c1e..0633349825 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/accumulate_fwd.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/accumulate_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_ACCUMULATE_FWD_HPP_INCLUDED) #define BOOST_FUSION_ACCUMULATE_FWD_HPP_INCLUDED +#include #include #include @@ -19,6 +20,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence @@ -27,6 +29,7 @@ namespace boost { namespace fusion accumulate(Sequence& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence diff --git a/3party/boost/boost/fusion/algorithm/iteration/detail/fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/detail/fold.hpp index 174c4b105c..71f60a7c63 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/detail/fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/detail/fold.hpp @@ -58,6 +58,7 @@ namespace boost { namespace fusion struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -103,6 +104,7 @@ namespace boost { namespace fusion struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -133,6 +135,7 @@ namespace boost { namespace fusion struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -150,6 +153,7 @@ namespace boost { namespace fusion struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -162,8 +166,9 @@ namespace boost { namespace fusion struct BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME) { template + BOOST_FUSION_GPU_ENABLED static Result - call(State const& state,It0 const& it0, F) + call(State const& state,It0 const&, F) { return static_cast(state); } @@ -340,6 +345,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(StateRef state, Seq& seq, F f) { @@ -363,6 +369,7 @@ namespace boost { namespace fusion { typedef StateRef type; + BOOST_FUSION_GPU_ENABLED static StateRef call(StateRef state, Seq&, F) { @@ -397,6 +404,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::BOOST_FUSION_FOLD_NAME< Seq , State const @@ -411,6 +419,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::BOOST_FUSION_FOLD_NAME< Seq const , State const @@ -425,6 +434,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::BOOST_FUSION_FOLD_NAME< Seq , State const @@ -439,6 +449,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::BOOST_FUSION_FOLD_NAME< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/iteration/detail/for_each.hpp b/3party/boost/boost/fusion/algorithm/iteration/detail/for_each.hpp index 66a1935076..81b3ab7028 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/detail/for_each.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/detail/for_each.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_FOR_EACH_05052005_1028) #define FUSION_FOR_EACH_05052005_1028 +#include #include #include #include @@ -20,12 +21,14 @@ namespace boost { namespace fusion { namespace detail { template + BOOST_FUSION_GPU_ENABLED inline void for_each_linear(First const&, Last const&, F const&, mpl::true_) { } template + BOOST_FUSION_GPU_ENABLED inline void for_each_linear(First const& first, Last const& last, F const& f, mpl::false_) { @@ -36,6 +39,7 @@ namespace detail template + BOOST_FUSION_GPU_ENABLED inline void for_each_dispatch(Sequence& seq, F const& f, Tag) { @@ -52,6 +56,7 @@ namespace detail struct for_each_unrolled { template + BOOST_FUSION_GPU_ENABLED static void call(I0 const& i0, F const& f) { f(*i0); @@ -72,6 +77,7 @@ namespace detail struct for_each_unrolled<3> { template + BOOST_FUSION_GPU_ENABLED static void call(I0 const& i0, F const& f) { f(*i0); @@ -88,6 +94,7 @@ namespace detail struct for_each_unrolled<2> { template + BOOST_FUSION_GPU_ENABLED static void call(I0 const& i0, F const& f) { f(*i0); @@ -101,6 +108,7 @@ namespace detail struct for_each_unrolled<1> { template + BOOST_FUSION_GPU_ENABLED static void call(I0 const& i0, F const& f) { f(*i0); @@ -111,12 +119,14 @@ namespace detail struct for_each_unrolled<0> { template + BOOST_FUSION_GPU_ENABLED static void call(It const&, F const&) { } }; template + BOOST_FUSION_GPU_ENABLED inline void for_each_dispatch(Sequence& seq, F const& f, random_access_traversal_tag) { @@ -126,6 +136,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED inline void for_each(Sequence& seq, F const& f, mpl::false_) // unsegmented implementation { diff --git a/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp index c89a7ddad1..140c70b1c2 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/fold.hpp @@ -24,6 +24,7 @@ namespace boost { namespace fusion struct unrolled_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -64,6 +65,7 @@ namespace boost { namespace fusion struct unrolled_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -90,6 +92,7 @@ namespace boost { namespace fusion struct unrolled_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -104,6 +107,7 @@ namespace boost { namespace fusion struct unrolled_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -115,6 +119,7 @@ namespace boost { namespace fusion struct unrolled_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const&, F) { @@ -277,6 +282,7 @@ namespace boost { namespace fusion , SeqSize >::type type; + BOOST_FUSION_GPU_ENABLED static type call(StateRef state, Seq& seq, F f) { @@ -296,6 +302,7 @@ namespace boost { namespace fusion struct fold_impl<0,StateRef,Seq,F> { typedef StateRef type; + BOOST_FUSION_GPU_ENABLED static StateRef call(StateRef state, Seq&, F) { @@ -327,6 +334,7 @@ namespace boost { namespace fusion {}; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::fold< Seq , State const @@ -340,6 +348,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::fold< Seq const , State const @@ -353,6 +362,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::fold< Seq , State const @@ -366,6 +376,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::fold< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp index 74f8a0577b..1211550d39 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/iter_fold.hpp @@ -23,6 +23,7 @@ namespace boost { namespace fusion struct unrolled_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -63,6 +64,7 @@ namespace boost { namespace fusion struct unrolled_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -89,6 +91,7 @@ namespace boost { namespace fusion struct unrolled_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -103,6 +106,7 @@ namespace boost { namespace fusion struct unrolled_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -114,8 +118,9 @@ namespace boost { namespace fusion struct unrolled_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result - call(State const& state,It0 const& it0, F) + call(State const& state,It0 const&, F) { return static_cast(state); } @@ -276,6 +281,7 @@ namespace boost { namespace fusion , SeqSize >::type type; + BOOST_FUSION_GPU_ENABLED static type call(StateRef state, Seq& seq, F f) { @@ -295,6 +301,7 @@ namespace boost { namespace fusion struct iter_fold_impl<0,StateRef,Seq,F> { typedef StateRef type; + BOOST_FUSION_GPU_ENABLED static StateRef call(StateRef state, Seq&, F) { @@ -326,6 +333,7 @@ namespace boost { namespace fusion {}; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::iter_fold< Seq , State const @@ -339,6 +347,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::iter_fold< Seq const , State const @@ -352,6 +361,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::iter_fold< Seq , State const @@ -365,6 +375,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::iter_fold< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp index 48a4134467..cc78231a50 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_fold.hpp @@ -23,6 +23,7 @@ namespace boost { namespace fusion struct unrolled_reverse_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -63,6 +64,7 @@ namespace boost { namespace fusion struct unrolled_reverse_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -89,6 +91,7 @@ namespace boost { namespace fusion struct unrolled_reverse_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -103,6 +106,7 @@ namespace boost { namespace fusion struct unrolled_reverse_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -114,6 +118,7 @@ namespace boost { namespace fusion struct unrolled_reverse_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const&, F) { @@ -276,6 +281,7 @@ namespace boost { namespace fusion , SeqSize >::type type; + BOOST_FUSION_GPU_ENABLED static type call(StateRef state, Seq& seq, F f) { @@ -295,6 +301,7 @@ namespace boost { namespace fusion struct reverse_fold_impl<0,StateRef,Seq,F> { typedef StateRef type; + BOOST_FUSION_GPU_ENABLED static StateRef call(StateRef state, Seq&, F) { @@ -326,6 +333,7 @@ namespace boost { namespace fusion {}; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::reverse_fold< Seq , State const @@ -339,6 +347,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::reverse_fold< Seq const , State const @@ -352,6 +361,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::reverse_fold< Seq , State const @@ -365,6 +375,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::reverse_fold< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp index 93b8c988dc..3023a91239 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/detail/preprocessed/reverse_iter_fold.hpp @@ -23,6 +23,7 @@ namespace boost { namespace fusion struct unrolled_reverse_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -63,6 +64,7 @@ namespace boost { namespace fusion struct unrolled_reverse_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -89,6 +91,7 @@ namespace boost { namespace fusion struct unrolled_reverse_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -103,6 +106,7 @@ namespace boost { namespace fusion struct unrolled_reverse_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result call(State const& state,It0 const& it0,F f) { @@ -114,8 +118,9 @@ namespace boost { namespace fusion struct unrolled_reverse_iter_fold { template + BOOST_FUSION_GPU_ENABLED static Result - call(State const& state,It0 const& it0, F) + call(State const& state,It0 const&, F) { return static_cast(state); } @@ -276,6 +281,7 @@ namespace boost { namespace fusion , SeqSize >::type type; + BOOST_FUSION_GPU_ENABLED static type call(StateRef state, Seq& seq, F f) { @@ -295,6 +301,7 @@ namespace boost { namespace fusion struct reverse_iter_fold_impl<0,StateRef,Seq,F> { typedef StateRef type; + BOOST_FUSION_GPU_ENABLED static StateRef call(StateRef state, Seq&, F) { @@ -326,6 +333,7 @@ namespace boost { namespace fusion {}; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::reverse_iter_fold< Seq , State const @@ -339,6 +347,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::reverse_iter_fold< Seq const , State const @@ -352,6 +361,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::reverse_iter_fold< Seq , State const @@ -365,6 +375,7 @@ namespace boost { namespace fusion f); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::reverse_iter_fold< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/iteration/detail/segmented_fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/detail/segmented_fold.hpp index 2371e1891e..58aab114a2 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/detail/segmented_fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/detail/segmented_fold.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_FOLD_S_HPP_INCLUDED) #define BOOST_FUSION_FOLD_S_HPP_INCLUDED +#include #include #include @@ -15,6 +16,7 @@ namespace boost { namespace fusion { namespace detail template struct segmented_fold_fun { + BOOST_FUSION_GPU_ENABLED explicit segmented_fold_fun(Fun const& f) : fun(f) {} @@ -27,6 +29,7 @@ namespace boost { namespace fusion { namespace detail typedef typename result_of::fold::type type; typedef mpl::true_ continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, State const& state, Context const&, segmented_fold_fun const& fun) { return fusion::fold(seq, state, fun.fun); @@ -49,6 +52,7 @@ namespace boost { namespace fusion { namespace detail >::type type; + BOOST_FUSION_GPU_ENABLED static type call(State& state, Sequence& seq, Fun fun) { return fusion::segmented_fold_until(seq, state, segmented_fold_fun(fun)); diff --git a/3party/boost/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp b/3party/boost/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp index f7ffb24d94..a5d6d4be3e 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_FOR_EACH_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_FOR_EACH_HPP_INCLUDED +#include #include #include #include @@ -17,6 +18,7 @@ namespace boost { namespace fusion { namespace detail template struct segmented_for_each_fun { + BOOST_FUSION_GPU_ENABLED explicit segmented_for_each_fun(Fun const& f) : fun(f) {} @@ -29,6 +31,7 @@ namespace boost { namespace fusion { namespace detail typedef void_ type; typedef mpl::true_ continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, State const&, Context const&, segmented_for_each_fun const& fun) { fusion::for_each(seq, fun.fun); @@ -38,6 +41,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED inline void for_each(Sequence& seq, F const& f, mpl::true_) // segmented implementation { diff --git a/3party/boost/boost/fusion/algorithm/iteration/fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/fold.hpp index 813bb6b377..a83b33b15a 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/fold.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP #define BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/algorithm/iteration/fold_fwd.hpp b/3party/boost/boost/fusion/algorithm/iteration/fold_fwd.hpp index edb43e012e..cd8dcd81c6 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/fold_fwd.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/fold_fwd.hpp @@ -17,6 +17,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::fold< Seq , State const @@ -25,6 +26,7 @@ namespace boost { namespace fusion fold(Seq& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::fold< Seq const , State const @@ -33,6 +35,7 @@ namespace boost { namespace fusion fold(Seq const& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::fold< Seq , State const @@ -41,6 +44,7 @@ namespace boost { namespace fusion fold(Seq& seq, State& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::fold< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/iteration/for_each.hpp b/3party/boost/boost/fusion/algorithm/iteration/for_each.hpp index 17cde34a4b..836f4810a6 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/for_each.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/for_each.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_FOR_EACH_20070527_0943) #define BOOST_FUSION_FOR_EACH_20070527_0943 +#include #include #include #include @@ -26,6 +27,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< @@ -38,6 +40,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< diff --git a/3party/boost/boost/fusion/algorithm/iteration/for_each_fwd.hpp b/3party/boost/boost/fusion/algorithm/iteration/for_each_fwd.hpp index b757873e6e..44a3d1da24 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/for_each_fwd.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/for_each_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_FOR_EACH_FWD_HPP_INCLUDED) #define BOOST_FUSION_FOR_EACH_FWD_HPP_INCLUDED +#include #include #include @@ -19,6 +20,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< @@ -28,6 +30,7 @@ namespace boost { namespace fusion for_each(Sequence& seq, F const& f); template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< diff --git a/3party/boost/boost/fusion/algorithm/iteration/iter_fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/iter_fold.hpp index 37c7cde40e..4c03cdf80f 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/iter_fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/iter_fold.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ALGORITHM_ITERATION_ITER_FOLD_HPP #define BOOST_FUSION_ALGORITHM_ITERATION_ITER_FOLD_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/algorithm/iteration/iter_fold_fwd.hpp b/3party/boost/boost/fusion/algorithm/iteration/iter_fold_fwd.hpp index 96ff387d27..8e4898ba0b 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/iter_fold_fwd.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/iter_fold_fwd.hpp @@ -17,6 +17,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::iter_fold< Seq , State const @@ -25,6 +26,7 @@ namespace boost { namespace fusion iter_fold(Seq& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::iter_fold< Seq const , State const @@ -33,6 +35,7 @@ namespace boost { namespace fusion iter_fold(Seq const& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::iter_fold< Seq , State const @@ -41,6 +44,7 @@ namespace boost { namespace fusion iter_fold(Seq& seq, State& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::iter_fold< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/iteration/reverse_fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/reverse_fold.hpp index c8bdef51e1..76e6bf2575 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/reverse_fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/reverse_fold.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_FOLD_HPP #define BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_FOLD_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp b/3party/boost/boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp index 40546b538a..c5596e79ef 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/reverse_fold_fwd.hpp @@ -17,6 +17,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::reverse_fold< Seq , State const @@ -25,6 +26,7 @@ namespace boost { namespace fusion reverse_fold(Seq& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::reverse_fold< Seq const , State const @@ -33,6 +35,7 @@ namespace boost { namespace fusion reverse_fold(Seq const& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::reverse_fold< Seq , State const @@ -41,6 +44,7 @@ namespace boost { namespace fusion reverse_fold(Seq& seq, State& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::reverse_fold< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp b/3party/boost/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp index 4c3d551f3c..e49f8b8310 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/reverse_iter_fold.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_ITER_FOLD_HPP #define BOOST_FUSION_ALGORITHM_ITERATION_REVERSE_ITER_FOLD_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp b/3party/boost/boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp index a28b4eec76..7b49ea69c2 100644 --- a/3party/boost/boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp +++ b/3party/boost/boost/fusion/algorithm/iteration/reverse_iter_fold_fwd.hpp @@ -17,6 +17,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::reverse_iter_fold< Seq , State const @@ -25,6 +26,7 @@ namespace boost { namespace fusion reverse_iter_fold(Seq& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::reverse_iter_fold< Seq const , State const @@ -33,6 +35,7 @@ namespace boost { namespace fusion reverse_iter_fold(Seq const& seq, State const& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::reverse_iter_fold< Seq , State const @@ -41,6 +44,7 @@ namespace boost { namespace fusion reverse_iter_fold(Seq& seq, State& state, F f); template + BOOST_FUSION_GPU_ENABLED typename result_of::reverse_iter_fold< Seq const , State const diff --git a/3party/boost/boost/fusion/algorithm/query.hpp b/3party/boost/boost/fusion/algorithm/query.hpp index b4f54e5f50..1e999b4337 100644 --- a/3party/boost/boost/fusion/algorithm/query.hpp +++ b/3party/boost/boost/fusion/algorithm/query.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ALGORITHM_QUERY_10022005_0549) #define FUSION_ALGORITHM_QUERY_10022005_0549 +#include #include #include #include diff --git a/3party/boost/boost/fusion/algorithm/query/all.hpp b/3party/boost/boost/fusion/algorithm/query/all.hpp index c6a47d8e25..d30d7952f7 100644 --- a/3party/boost/boost/fusion/algorithm/query/all.hpp +++ b/3party/boost/boost/fusion/algorithm/query/all.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ALL_05052005_1238) #define BOOST_FUSION_ALL_05052005_1238 +#include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline bool all(Sequence const& seq, F f) { diff --git a/3party/boost/boost/fusion/algorithm/query/any.hpp b/3party/boost/boost/fusion/algorithm/query/any.hpp index 8b1fca0696..4ab971485e 100644 --- a/3party/boost/boost/fusion/algorithm/query/any.hpp +++ b/3party/boost/boost/fusion/algorithm/query/any.hpp @@ -9,6 +9,7 @@ #if !defined(FUSION_ANY_05052005_1230) #define FUSION_ANY_05052005_1230 +#include #include #include @@ -24,6 +25,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline bool any(Sequence const& seq, F f) { diff --git a/3party/boost/boost/fusion/algorithm/query/count.hpp b/3party/boost/boost/fusion/algorithm/query/count.hpp index 0488716327..a86bf4fe13 100644 --- a/3party/boost/boost/fusion/algorithm/query/count.hpp +++ b/3party/boost/boost/fusion/algorithm/query/count.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_COUNT_09162005_0150) #define BOOST_FUSION_COUNT_09162005_0150 +#include #include #include #include @@ -25,6 +26,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< diff --git a/3party/boost/boost/fusion/algorithm/query/count_if.hpp b/3party/boost/boost/fusion/algorithm/query/count_if.hpp index 792979733a..ac44ac649b 100644 --- a/3party/boost/boost/fusion/algorithm/query/count_if.hpp +++ b/3party/boost/boost/fusion/algorithm/query/count_if.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_COUNT_IF_09162005_0137) #define BOOST_FUSION_COUNT_IF_09162005_0137 +#include #include #include #include @@ -25,6 +26,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< diff --git a/3party/boost/boost/fusion/algorithm/query/detail/all.hpp b/3party/boost/boost/fusion/algorithm/query/detail/all.hpp index 1465e20683..9c7b4c2672 100644 --- a/3party/boost/boost/fusion/algorithm/query/detail/all.hpp +++ b/3party/boost/boost/fusion/algorithm/query/detail/all.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ALL_05052005_1237) #define FUSION_ALL_05052005_1237 +#include #include #include #include @@ -20,6 +21,7 @@ namespace boost { namespace fusion { namespace detail { template + BOOST_FUSION_GPU_ENABLED inline bool linear_all(First const&, Last const&, F const&, mpl::true_) { @@ -27,6 +29,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED inline bool linear_all(First const& first, Last const& last, F& f, mpl::false_) { @@ -40,6 +43,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED inline bool all(Sequence const& seq, F f, Tag) { @@ -56,6 +60,7 @@ namespace boost { namespace fusion { namespace detail struct unrolled_all { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& it, F f) { return @@ -71,6 +76,7 @@ namespace boost { namespace fusion { namespace detail struct unrolled_all<3> { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& it, F f) { return @@ -84,6 +90,7 @@ namespace boost { namespace fusion { namespace detail struct unrolled_all<2> { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& it, F f) { return @@ -96,6 +103,7 @@ namespace boost { namespace fusion { namespace detail struct unrolled_all<1> { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& it, F f) { return f(*it); @@ -106,6 +114,7 @@ namespace boost { namespace fusion { namespace detail struct unrolled_all<0> { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& /*it*/, F /*f*/) { return true; @@ -113,6 +122,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED inline bool all(Sequence const& seq, F f, random_access_traversal_tag) { diff --git a/3party/boost/boost/fusion/algorithm/query/detail/any.hpp b/3party/boost/boost/fusion/algorithm/query/detail/any.hpp index 5f6b85772a..4e0536836c 100644 --- a/3party/boost/boost/fusion/algorithm/query/detail/any.hpp +++ b/3party/boost/boost/fusion/algorithm/query/detail/any.hpp @@ -9,6 +9,7 @@ #if !defined(FUSION_ANY_05052005_1229) #define FUSION_ANY_05052005_1229 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { namespace detail { template + BOOST_FUSION_GPU_ENABLED inline bool linear_any(First const&, Last const&, F const&, mpl::true_) { @@ -30,6 +32,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED inline bool linear_any(First const& first, Last const& last, F& f, mpl::false_) { @@ -43,6 +46,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED inline bool any(Sequence const& seq, F f, Tag) { @@ -59,6 +63,7 @@ namespace detail struct unrolled_any { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& it, F f) { return @@ -74,6 +79,7 @@ namespace detail struct unrolled_any<3> { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& it, F f) { return @@ -87,6 +93,7 @@ namespace detail struct unrolled_any<2> { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& it, F f) { return @@ -99,6 +106,7 @@ namespace detail struct unrolled_any<1> { template + BOOST_FUSION_GPU_ENABLED static bool call(It const& it, F f) { return f(*it); @@ -109,6 +117,7 @@ namespace detail struct unrolled_any<0> { template + BOOST_FUSION_GPU_ENABLED static bool call(It const&, F) { return false; @@ -116,6 +125,7 @@ namespace detail }; template + BOOST_FUSION_GPU_ENABLED inline bool any(Sequence const& seq, F f, random_access_traversal_tag) { diff --git a/3party/boost/boost/fusion/algorithm/query/detail/count.hpp b/3party/boost/boost/fusion/algorithm/query/detail/count.hpp index ffc6086a0c..5e046f6b5d 100644 --- a/3party/boost/boost/fusion/algorithm/query/detail/count.hpp +++ b/3party/boost/boost/fusion/algorithm/query/detail/count.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_COUNT_09162005_0158) #define FUSION_COUNT_09162005_0158 +#include #include #include #include @@ -27,6 +28,7 @@ namespace boost { namespace fusion { namespace detail struct compare_convertible { template + BOOST_FUSION_GPU_ENABLED static bool call(T1 const& x, T2 const& y) { @@ -39,6 +41,7 @@ namespace boost { namespace fusion { namespace detail struct compare_convertible { template + BOOST_FUSION_GPU_ENABLED static bool call(T1 const&, T2 const&) { @@ -50,10 +53,12 @@ namespace boost { namespace fusion { namespace detail struct count_compare { typedef typename detail::call_param::type param; + BOOST_FUSION_GPU_ENABLED count_compare(param in_x) : x(in_x) {} template + BOOST_FUSION_GPU_ENABLED bool operator()(T2 const& y) { diff --git a/3party/boost/boost/fusion/algorithm/query/detail/count_if.hpp b/3party/boost/boost/fusion/algorithm/query/detail/count_if.hpp index 7110071ddf..baf9fe9f4f 100644 --- a/3party/boost/boost/fusion/algorithm/query/detail/count_if.hpp +++ b/3party/boost/boost/fusion/algorithm/query/detail/count_if.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_COUNT_IF_09162005_0141) #define BOOST_FUSION_COUNT_IF_09162005_0141 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { namespace detail { template + BOOST_FUSION_GPU_ENABLED inline int linear_count_if(First const&, Last const&, F const&, mpl::true_) { @@ -30,6 +32,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED inline int linear_count_if(First const& first, Last const& last, F& f, mpl::false_) { @@ -45,6 +48,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED inline int count_if(Sequence const& seq, F f, Tag) { @@ -61,6 +65,7 @@ namespace detail struct unrolled_count_if { template + BOOST_FUSION_GPU_ENABLED static int call(I0 const& i0, F f) { int ct = unrolled_count_if:: @@ -91,6 +96,7 @@ namespace detail struct unrolled_count_if<3> { template + BOOST_FUSION_GPU_ENABLED static int call(I0 const& i0, F f) { int ct = 0; @@ -115,6 +121,7 @@ namespace detail struct unrolled_count_if<2> { template + BOOST_FUSION_GPU_ENABLED static int call(I0 const& i0, F f) { int ct = 0; @@ -135,6 +142,7 @@ namespace detail struct unrolled_count_if<1> { template + BOOST_FUSION_GPU_ENABLED static int call(I0 const& i0, F f) { int ct = 0; @@ -149,6 +157,7 @@ namespace detail struct unrolled_count_if<0> { template + BOOST_FUSION_GPU_ENABLED static int call(I0 const&, F) { return 0; @@ -156,6 +165,7 @@ namespace detail }; template + BOOST_FUSION_GPU_ENABLED inline int count_if(Sequence const& seq, F f, random_access_traversal_tag) { diff --git a/3party/boost/boost/fusion/algorithm/query/detail/find_if.hpp b/3party/boost/boost/fusion/algorithm/query/detail/find_if.hpp index f7bae4533c..41baab4893 100644 --- a/3party/boost/boost/fusion/algorithm/query/detail/find_if.hpp +++ b/3party/boost/boost/fusion/algorithm/query/detail/find_if.hpp @@ -9,6 +9,7 @@ #if !defined(FUSION_FIND_IF_05052005_1107) #define FUSION_FIND_IF_05052005_1107 +#include #include #include #include @@ -183,6 +184,7 @@ namespace detail type; template + BOOST_FUSION_GPU_ENABLED static type recursive_call(Iterator const& iter, mpl::true_) { @@ -190,6 +192,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED static type recursive_call(Iterator const& iter, mpl::false_) { @@ -197,6 +200,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED static type recursive_call(Iterator const& iter) { @@ -205,6 +209,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED static type choose_call(Iterator const& iter, Tag) { @@ -212,6 +217,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED static type choose_call(Iterator const& iter, random_access_traversal_tag) { @@ -220,6 +226,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED static type iter_call(Iterator const& iter) { @@ -227,6 +234,7 @@ namespace detail } template + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/algorithm/query/detail/segmented_find.hpp b/3party/boost/boost/fusion/algorithm/query/detail/segmented_find.hpp index ead57834c6..21c13a46e5 100644 --- a/3party/boost/boost/fusion/algorithm/query/detail/segmented_find.hpp +++ b/3party/boost/boost/fusion/algorithm/query/detail/segmented_find.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_FIND_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_FIND_HPP_INCLUDED +#include #include #include #include @@ -44,16 +45,19 @@ namespace boost { namespace fusion { namespace detail >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, State const&state, Context const& context, segmented_find_fun) { return call_impl(seq, state, context, continue_type()); } + BOOST_FUSION_GPU_ENABLED static type call_impl(Sequence&, State const&state, Context const&, mpl::true_) { return state; } + BOOST_FUSION_GPU_ENABLED static type call_impl(Sequence& seq, State const&, Context const& context, mpl::false_) { return fusion::make_segmented_iterator(fusion::find(seq), context); @@ -74,6 +78,7 @@ namespace boost { namespace fusion { namespace detail >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return fusion::segmented_fold_until( diff --git a/3party/boost/boost/fusion/algorithm/query/detail/segmented_find_if.hpp b/3party/boost/boost/fusion/algorithm/query/detail/segmented_find_if.hpp index 745edd2f7d..798ed085cf 100644 --- a/3party/boost/boost/fusion/algorithm/query/detail/segmented_find_if.hpp +++ b/3party/boost/boost/fusion/algorithm/query/detail/segmented_find_if.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_FIND_IF_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_FIND_IF_HPP_INCLUDED +#include #include #include #include @@ -44,16 +45,19 @@ namespace boost { namespace fusion { namespace detail >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, State const&state, Context const& context, segmented_find_if_fun) { return call_impl(seq, state, context, continue_type()); } + BOOST_FUSION_GPU_ENABLED static type call_impl(Sequence&, State const&state, Context const&, mpl::true_) { return state; } + BOOST_FUSION_GPU_ENABLED static type call_impl(Sequence& seq, State const&, Context const& context, mpl::false_) { return fusion::make_segmented_iterator(fusion::find_if(seq), context); @@ -74,6 +78,7 @@ namespace boost { namespace fusion { namespace detail >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return fusion::segmented_fold_until( diff --git a/3party/boost/boost/fusion/algorithm/query/find.hpp b/3party/boost/boost/fusion/algorithm/query/find.hpp index 16def0899a..56e53c394a 100644 --- a/3party/boost/boost/fusion/algorithm/query/find.hpp +++ b/3party/boost/boost/fusion/algorithm/query/find.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_FIND_05052005_1107) #define FUSION_FIND_05052005_1107 +#include #include #include #include @@ -46,6 +47,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -58,6 +60,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::find::type const find(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/query/find_fwd.hpp b/3party/boost/boost/fusion/algorithm/query/find_fwd.hpp index 96d989a484..a43b5eacb9 100644 --- a/3party/boost/boost/fusion/algorithm/query/find_fwd.hpp +++ b/3party/boost/boost/fusion/algorithm/query/find_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_FIND_FWD_HPP_INCLUDED) #define BOOST_FUSION_FIND_FWD_HPP_INCLUDED +#include #include #include @@ -19,6 +20,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -27,6 +29,7 @@ namespace boost { namespace fusion find(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED inline typename result_of::find::type const find(Sequence const& seq); }} diff --git a/3party/boost/boost/fusion/algorithm/query/find_if.hpp b/3party/boost/boost/fusion/algorithm/query/find_if.hpp index 9dbd46b58c..c9e5016270 100644 --- a/3party/boost/boost/fusion/algorithm/query/find_if.hpp +++ b/3party/boost/boost/fusion/algorithm/query/find_if.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_FIND_IF_05052005_1108) #define FUSION_FIND_IF_05052005_1108 +#include #include #include #include @@ -41,6 +42,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -53,6 +55,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::find_if::type const find_if(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/query/find_if_fwd.hpp b/3party/boost/boost/fusion/algorithm/query/find_if_fwd.hpp index adb8f2de60..419a68c472 100644 --- a/3party/boost/boost/fusion/algorithm/query/find_if_fwd.hpp +++ b/3party/boost/boost/fusion/algorithm/query/find_if_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_FIND_IF_FWD_HPP_INCLUDED) #define BOOST_FUSION_FIND_IF_FWD_HPP_INCLUDED +#include #include #include @@ -20,6 +21,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename lazy_disable_if< is_const @@ -28,6 +30,7 @@ namespace boost { namespace fusion find_if(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::find_if::type const find_if(Sequence const& seq); }} diff --git a/3party/boost/boost/fusion/algorithm/query/none.hpp b/3party/boost/boost/fusion/algorithm/query/none.hpp index 4eaac17fa8..bb554e3b5f 100644 --- a/3party/boost/boost/fusion/algorithm/query/none.hpp +++ b/3party/boost/boost/fusion/algorithm/query/none.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NONE_07062005_1128) #define BOOST_FUSION_NONE_07062005_1128 +#include #include namespace boost { namespace fusion @@ -22,6 +23,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline bool none(Sequence const& seq, F f) { diff --git a/3party/boost/boost/fusion/algorithm/transformation.hpp b/3party/boost/boost/fusion/algorithm/transformation.hpp index c2e152c20a..b9534e80db 100644 --- a/3party/boost/boost/fusion/algorithm/transformation.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ALGORITHM_TRANSFORMATION_10022005_0551) #define FUSION_ALGORITHM_TRANSFORMATION_10022005_0551 +#include #include #include #include @@ -25,6 +26,7 @@ #include #include #include -#include +#include +#include #endif diff --git a/3party/boost/boost/fusion/algorithm/transformation/clear.hpp b/3party/boost/boost/fusion/algorithm/transformation/clear.hpp index 946e45c842..de643408f6 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/clear.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/clear.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CLEAR_09172005_1127) #define FUSION_CLEAR_09172005_1127 +#include #include namespace boost { namespace fusion @@ -21,6 +22,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::clear::type clear(Sequence const& /*seq*/) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp index 706b667d99..33f353619e 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip10.hpp @@ -18,7 +18,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 > - struct zip< T0 , T1 > + struct zip< T0 , T1 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 > sequences; typedef typename mpl::transform >::type ref_params; @@ -26,6 +28,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1) { @@ -37,7 +40,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 > - struct zip< T0 , T1 , T2 > + struct zip< T0 , T1 , T2 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 > sequences; typedef typename mpl::transform >::type ref_params; @@ -45,6 +50,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2) { @@ -56,7 +62,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 > - struct zip< T0 , T1 , T2 , T3 > + struct zip< T0 , T1 , T2 , T3 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 > sequences; typedef typename mpl::transform >::type ref_params; @@ -64,6 +72,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) { @@ -75,7 +84,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > - struct zip< T0 , T1 , T2 , T3 , T4 > + struct zip< T0 , T1 , T2 , T3 , T4 + , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 > sequences; typedef typename mpl::transform >::type ref_params; @@ -83,6 +94,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) { @@ -94,7 +106,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 + , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 > sequences; typedef typename mpl::transform >::type ref_params; @@ -102,6 +116,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) { @@ -113,7 +128,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 + , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 > sequences; typedef typename mpl::transform >::type ref_params; @@ -121,6 +138,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) { @@ -132,7 +150,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 + , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > sequences; typedef typename mpl::transform >::type ref_params; @@ -140,6 +160,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) { @@ -151,7 +172,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > sequences; typedef typename mpl::transform >::type ref_params; @@ -159,6 +182,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) { @@ -170,7 +194,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > sequences; typedef typename mpl::transform >::type ref_params; @@ -178,6 +204,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp index 286a01200a..e7c790e04d 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip20.hpp @@ -18,7 +18,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 > - struct zip< T0 , T1 > + struct zip< T0 , T1 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 > sequences; typedef typename mpl::transform >::type ref_params; @@ -26,6 +28,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1) { @@ -37,7 +40,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 > - struct zip< T0 , T1 , T2 > + struct zip< T0 , T1 , T2 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 > sequences; typedef typename mpl::transform >::type ref_params; @@ -45,6 +50,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2) { @@ -56,7 +62,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 > - struct zip< T0 , T1 , T2 , T3 > + struct zip< T0 , T1 , T2 , T3 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 > sequences; typedef typename mpl::transform >::type ref_params; @@ -64,6 +72,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) { @@ -75,7 +84,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > - struct zip< T0 , T1 , T2 , T3 , T4 > + struct zip< T0 , T1 , T2 , T3 , T4 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 > sequences; typedef typename mpl::transform >::type ref_params; @@ -83,6 +94,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) { @@ -94,7 +106,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 > sequences; typedef typename mpl::transform >::type ref_params; @@ -102,6 +116,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) { @@ -113,7 +128,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 > sequences; typedef typename mpl::transform >::type ref_params; @@ -121,6 +138,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) { @@ -132,7 +150,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > sequences; typedef typename mpl::transform >::type ref_params; @@ -140,6 +160,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) { @@ -151,7 +172,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > sequences; typedef typename mpl::transform >::type ref_params; @@ -159,6 +182,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) { @@ -170,7 +194,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > sequences; typedef typename mpl::transform >::type ref_params; @@ -178,6 +204,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) { @@ -189,7 +216,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > sequences; typedef typename mpl::transform >::type ref_params; @@ -197,6 +226,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10) { @@ -208,7 +238,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > sequences; typedef typename mpl::transform >::type ref_params; @@ -216,6 +248,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11) { @@ -227,7 +260,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > sequences; typedef typename mpl::transform >::type ref_params; @@ -235,6 +270,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12) { @@ -246,7 +282,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > sequences; typedef typename mpl::transform >::type ref_params; @@ -254,6 +292,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13) { @@ -265,7 +304,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 + , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > sequences; typedef typename mpl::transform >::type ref_params; @@ -273,6 +314,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14) { @@ -284,7 +326,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 + , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > sequences; typedef typename mpl::transform >::type ref_params; @@ -292,6 +336,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15) { @@ -303,7 +348,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 + , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > sequences; typedef typename mpl::transform >::type ref_params; @@ -311,6 +358,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16) { @@ -322,7 +370,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 + , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > sequences; typedef typename mpl::transform >::type ref_params; @@ -330,6 +380,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17) { @@ -341,7 +392,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 + , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > sequences; typedef typename mpl::transform >::type ref_params; @@ -349,6 +402,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18) { @@ -360,7 +414,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 + , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > sequences; typedef typename mpl::transform >::type ref_params; @@ -368,6 +424,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp index 13cc0a735c..215a0ce645 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip30.hpp @@ -18,7 +18,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 > - struct zip< T0 , T1 > + struct zip< T0 , T1 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 > sequences; typedef typename mpl::transform >::type ref_params; @@ -26,6 +28,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1) { @@ -37,7 +40,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 > - struct zip< T0 , T1 , T2 > + struct zip< T0 , T1 , T2 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 > sequences; typedef typename mpl::transform >::type ref_params; @@ -45,6 +50,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2) { @@ -56,7 +62,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 > - struct zip< T0 , T1 , T2 , T3 > + struct zip< T0 , T1 , T2 , T3 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 > sequences; typedef typename mpl::transform >::type ref_params; @@ -64,6 +72,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) { @@ -75,7 +84,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > - struct zip< T0 , T1 , T2 , T3 , T4 > + struct zip< T0 , T1 , T2 , T3 , T4 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 > sequences; typedef typename mpl::transform >::type ref_params; @@ -83,6 +94,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) { @@ -94,7 +106,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 > sequences; typedef typename mpl::transform >::type ref_params; @@ -102,6 +116,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) { @@ -113,7 +128,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 > sequences; typedef typename mpl::transform >::type ref_params; @@ -121,6 +138,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) { @@ -132,7 +150,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > sequences; typedef typename mpl::transform >::type ref_params; @@ -140,6 +160,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) { @@ -151,7 +172,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > sequences; typedef typename mpl::transform >::type ref_params; @@ -159,6 +182,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) { @@ -170,7 +194,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > sequences; typedef typename mpl::transform >::type ref_params; @@ -178,6 +204,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) { @@ -189,7 +216,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > sequences; typedef typename mpl::transform >::type ref_params; @@ -197,6 +226,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10) { @@ -208,7 +238,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > sequences; typedef typename mpl::transform >::type ref_params; @@ -216,6 +248,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11) { @@ -227,7 +260,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > sequences; typedef typename mpl::transform >::type ref_params; @@ -235,6 +270,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12) { @@ -246,7 +282,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > sequences; typedef typename mpl::transform >::type ref_params; @@ -254,6 +292,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13) { @@ -265,7 +304,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > sequences; typedef typename mpl::transform >::type ref_params; @@ -273,6 +314,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14) { @@ -284,7 +326,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > sequences; typedef typename mpl::transform >::type ref_params; @@ -292,6 +336,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15) { @@ -303,7 +348,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > sequences; typedef typename mpl::transform >::type ref_params; @@ -311,6 +358,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16) { @@ -322,7 +370,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > sequences; typedef typename mpl::transform >::type ref_params; @@ -330,6 +380,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17) { @@ -341,7 +392,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > sequences; typedef typename mpl::transform >::type ref_params; @@ -349,6 +402,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18) { @@ -360,7 +414,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > sequences; typedef typename mpl::transform >::type ref_params; @@ -368,6 +424,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19) { @@ -379,7 +436,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 > sequences; typedef typename mpl::transform >::type ref_params; @@ -387,6 +446,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20) { @@ -398,7 +458,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 > sequences; typedef typename mpl::transform >::type ref_params; @@ -406,6 +468,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21) { @@ -417,7 +480,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 > sequences; typedef typename mpl::transform >::type ref_params; @@ -425,6 +490,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22) { @@ -436,7 +502,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 > sequences; typedef typename mpl::transform >::type ref_params; @@ -444,6 +512,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23) { @@ -455,7 +524,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 + , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 > sequences; typedef typename mpl::transform >::type ref_params; @@ -463,6 +534,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24) { @@ -474,7 +546,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 + , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 > sequences; typedef typename mpl::transform >::type ref_params; @@ -482,6 +556,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25) { @@ -493,7 +568,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 + , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 > sequences; typedef typename mpl::transform >::type ref_params; @@ -501,6 +578,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26) { @@ -512,7 +590,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 + , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 > sequences; typedef typename mpl::transform >::type ref_params; @@ -520,6 +600,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27) { @@ -531,7 +612,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 + , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 > sequences; typedef typename mpl::transform >::type ref_params; @@ -539,6 +622,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28) { @@ -550,7 +634,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 + , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 > sequences; typedef typename mpl::transform >::type ref_params; @@ -558,6 +644,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp index 110ac89602..9e37eedd70 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip40.hpp @@ -18,7 +18,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 > - struct zip< T0 , T1 > + struct zip< T0 , T1 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 > sequences; typedef typename mpl::transform >::type ref_params; @@ -26,6 +28,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1) { @@ -37,7 +40,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 > - struct zip< T0 , T1 , T2 > + struct zip< T0 , T1 , T2 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 > sequences; typedef typename mpl::transform >::type ref_params; @@ -45,6 +50,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2) { @@ -56,7 +62,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 > - struct zip< T0 , T1 , T2 , T3 > + struct zip< T0 , T1 , T2 , T3 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 > sequences; typedef typename mpl::transform >::type ref_params; @@ -64,6 +72,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) { @@ -75,7 +84,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > - struct zip< T0 , T1 , T2 , T3 , T4 > + struct zip< T0 , T1 , T2 , T3 , T4 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 > sequences; typedef typename mpl::transform >::type ref_params; @@ -83,6 +94,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) { @@ -94,7 +106,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 > sequences; typedef typename mpl::transform >::type ref_params; @@ -102,6 +116,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) { @@ -113,7 +128,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 > sequences; typedef typename mpl::transform >::type ref_params; @@ -121,6 +138,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) { @@ -132,7 +150,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > sequences; typedef typename mpl::transform >::type ref_params; @@ -140,6 +160,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) { @@ -151,7 +172,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > sequences; typedef typename mpl::transform >::type ref_params; @@ -159,6 +182,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) { @@ -170,7 +194,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > sequences; typedef typename mpl::transform >::type ref_params; @@ -178,6 +204,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) { @@ -189,7 +216,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > sequences; typedef typename mpl::transform >::type ref_params; @@ -197,6 +226,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10) { @@ -208,7 +238,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > sequences; typedef typename mpl::transform >::type ref_params; @@ -216,6 +248,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11) { @@ -227,7 +260,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > sequences; typedef typename mpl::transform >::type ref_params; @@ -235,6 +270,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12) { @@ -246,7 +282,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > sequences; typedef typename mpl::transform >::type ref_params; @@ -254,6 +292,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13) { @@ -265,7 +304,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > sequences; typedef typename mpl::transform >::type ref_params; @@ -273,6 +314,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14) { @@ -284,7 +326,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > sequences; typedef typename mpl::transform >::type ref_params; @@ -292,6 +336,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15) { @@ -303,7 +348,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > sequences; typedef typename mpl::transform >::type ref_params; @@ -311,6 +358,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16) { @@ -322,7 +370,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > sequences; typedef typename mpl::transform >::type ref_params; @@ -330,6 +380,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17) { @@ -341,7 +392,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > sequences; typedef typename mpl::transform >::type ref_params; @@ -349,6 +402,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18) { @@ -360,7 +414,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > sequences; typedef typename mpl::transform >::type ref_params; @@ -368,6 +424,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19) { @@ -379,7 +436,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 > sequences; typedef typename mpl::transform >::type ref_params; @@ -387,6 +446,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20) { @@ -398,7 +458,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 > sequences; typedef typename mpl::transform >::type ref_params; @@ -406,6 +468,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21) { @@ -417,7 +480,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 > sequences; typedef typename mpl::transform >::type ref_params; @@ -425,6 +490,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22) { @@ -436,7 +502,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 > sequences; typedef typename mpl::transform >::type ref_params; @@ -444,6 +512,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23) { @@ -455,7 +524,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 > sequences; typedef typename mpl::transform >::type ref_params; @@ -463,6 +534,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24) { @@ -474,7 +546,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 > sequences; typedef typename mpl::transform >::type ref_params; @@ -482,6 +556,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25) { @@ -493,7 +568,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 > sequences; typedef typename mpl::transform >::type ref_params; @@ -501,6 +578,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26) { @@ -512,7 +590,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 > sequences; typedef typename mpl::transform >::type ref_params; @@ -520,6 +600,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27) { @@ -531,7 +612,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 > sequences; typedef typename mpl::transform >::type ref_params; @@ -539,6 +622,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28) { @@ -550,7 +634,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 > sequences; typedef typename mpl::transform >::type ref_params; @@ -558,6 +644,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29) { @@ -569,7 +656,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 > sequences; typedef typename mpl::transform >::type ref_params; @@ -577,6 +666,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30) { @@ -588,7 +678,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 > sequences; typedef typename mpl::transform >::type ref_params; @@ -596,6 +688,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31) { @@ -607,7 +700,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 > sequences; typedef typename mpl::transform >::type ref_params; @@ -615,6 +710,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32) { @@ -626,7 +722,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 > sequences; typedef typename mpl::transform >::type ref_params; @@ -634,6 +732,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33) { @@ -645,7 +744,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 + , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 > sequences; typedef typename mpl::transform >::type ref_params; @@ -653,6 +754,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34) { @@ -664,7 +766,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 + , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 > sequences; typedef typename mpl::transform >::type ref_params; @@ -672,6 +776,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35) { @@ -683,7 +788,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 + , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 > sequences; typedef typename mpl::transform >::type ref_params; @@ -691,6 +798,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36) { @@ -702,7 +810,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 + , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 > sequences; typedef typename mpl::transform >::type ref_params; @@ -710,6 +820,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37) { @@ -721,7 +832,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 + , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 > sequences; typedef typename mpl::transform >::type ref_params; @@ -729,6 +842,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38) { @@ -740,7 +854,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 + , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 > sequences; typedef typename mpl::transform >::type ref_params; @@ -748,6 +864,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp index 438f991e1b..ecf300dfa4 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/detail/preprocessed/zip50.hpp @@ -18,7 +18,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 > - struct zip< T0 , T1 > + struct zip< T0 , T1 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 > sequences; typedef typename mpl::transform >::type ref_params; @@ -26,6 +28,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1) { @@ -37,7 +40,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 > - struct zip< T0 , T1 , T2 > + struct zip< T0 , T1 , T2 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 > sequences; typedef typename mpl::transform >::type ref_params; @@ -45,6 +50,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2) { @@ -56,7 +62,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 > - struct zip< T0 , T1 , T2 , T3 > + struct zip< T0 , T1 , T2 , T3 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 > sequences; typedef typename mpl::transform >::type ref_params; @@ -64,6 +72,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) { @@ -75,7 +84,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > - struct zip< T0 , T1 , T2 , T3 , T4 > + struct zip< T0 , T1 , T2 , T3 , T4 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 > sequences; typedef typename mpl::transform >::type ref_params; @@ -83,6 +94,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) { @@ -94,7 +106,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 > sequences; typedef typename mpl::transform >::type ref_params; @@ -102,6 +116,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) { @@ -113,7 +128,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 > sequences; typedef typename mpl::transform >::type ref_params; @@ -121,6 +138,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) { @@ -132,7 +150,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 > sequences; typedef typename mpl::transform >::type ref_params; @@ -140,6 +160,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) { @@ -151,7 +172,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > sequences; typedef typename mpl::transform >::type ref_params; @@ -159,6 +182,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) { @@ -170,7 +194,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > sequences; typedef typename mpl::transform >::type ref_params; @@ -178,6 +204,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) { @@ -189,7 +216,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > sequences; typedef typename mpl::transform >::type ref_params; @@ -197,6 +226,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10) { @@ -208,7 +238,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 > sequences; typedef typename mpl::transform >::type ref_params; @@ -216,6 +248,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11) { @@ -227,7 +260,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 > sequences; typedef typename mpl::transform >::type ref_params; @@ -235,6 +270,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12) { @@ -246,7 +282,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 > sequences; typedef typename mpl::transform >::type ref_params; @@ -254,6 +292,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13) { @@ -265,7 +304,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 > sequences; typedef typename mpl::transform >::type ref_params; @@ -273,6 +314,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14) { @@ -284,7 +326,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 > sequences; typedef typename mpl::transform >::type ref_params; @@ -292,6 +336,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15) { @@ -303,7 +348,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 > sequences; typedef typename mpl::transform >::type ref_params; @@ -311,6 +358,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16) { @@ -322,7 +370,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 > sequences; typedef typename mpl::transform >::type ref_params; @@ -330,6 +380,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17) { @@ -341,7 +392,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 > sequences; typedef typename mpl::transform >::type ref_params; @@ -349,6 +402,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18) { @@ -360,7 +414,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 > sequences; typedef typename mpl::transform >::type ref_params; @@ -368,6 +424,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19) { @@ -379,7 +436,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 > sequences; typedef typename mpl::transform >::type ref_params; @@ -387,6 +446,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20) { @@ -398,7 +458,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 > sequences; typedef typename mpl::transform >::type ref_params; @@ -406,6 +468,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21) { @@ -417,7 +480,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 > sequences; typedef typename mpl::transform >::type ref_params; @@ -425,6 +490,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22) { @@ -436,7 +502,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 > sequences; typedef typename mpl::transform >::type ref_params; @@ -444,6 +512,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23) { @@ -455,7 +524,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 > sequences; typedef typename mpl::transform >::type ref_params; @@ -463,6 +534,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24) { @@ -474,7 +546,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 > sequences; typedef typename mpl::transform >::type ref_params; @@ -482,6 +556,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25) { @@ -493,7 +568,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 > sequences; typedef typename mpl::transform >::type ref_params; @@ -501,6 +578,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26) { @@ -512,7 +590,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 > sequences; typedef typename mpl::transform >::type ref_params; @@ -520,6 +600,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27) { @@ -531,7 +612,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 > sequences; typedef typename mpl::transform >::type ref_params; @@ -539,6 +622,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28) { @@ -550,7 +634,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 > sequences; typedef typename mpl::transform >::type ref_params; @@ -558,6 +644,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29) { @@ -569,7 +656,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 > sequences; typedef typename mpl::transform >::type ref_params; @@ -577,6 +666,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30) { @@ -588,7 +678,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 > sequences; typedef typename mpl::transform >::type ref_params; @@ -596,6 +688,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31) { @@ -607,7 +700,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 > sequences; typedef typename mpl::transform >::type ref_params; @@ -615,6 +710,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32) { @@ -626,7 +722,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 > sequences; typedef typename mpl::transform >::type ref_params; @@ -634,6 +732,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33) { @@ -645,7 +744,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 > sequences; typedef typename mpl::transform >::type ref_params; @@ -653,6 +754,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34) { @@ -664,7 +766,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 > sequences; typedef typename mpl::transform >::type ref_params; @@ -672,6 +776,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35) { @@ -683,7 +788,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 > sequences; typedef typename mpl::transform >::type ref_params; @@ -691,6 +798,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36) { @@ -702,7 +810,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 > sequences; typedef typename mpl::transform >::type ref_params; @@ -710,6 +820,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37) { @@ -721,7 +832,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 > sequences; typedef typename mpl::transform >::type ref_params; @@ -729,6 +842,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38) { @@ -740,7 +854,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 > sequences; typedef typename mpl::transform >::type ref_params; @@ -748,6 +864,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39) { @@ -759,7 +876,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 > sequences; typedef typename mpl::transform >::type ref_params; @@ -767,6 +886,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40) { @@ -778,7 +898,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 > sequences; typedef typename mpl::transform >::type ref_params; @@ -786,6 +908,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41) { @@ -797,7 +920,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 > sequences; typedef typename mpl::transform >::type ref_params; @@ -805,6 +930,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42) { @@ -816,7 +942,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 + , void_ , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 > sequences; typedef typename mpl::transform >::type ref_params; @@ -824,6 +952,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43) { @@ -835,7 +964,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 + , void_ , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 > sequences; typedef typename mpl::transform >::type ref_params; @@ -843,6 +974,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44) { @@ -854,7 +986,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 + , void_ , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 > sequences; typedef typename mpl::transform >::type ref_params; @@ -862,6 +996,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45) { @@ -873,7 +1008,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 + , void_ , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 > sequences; typedef typename mpl::transform >::type ref_params; @@ -881,6 +1018,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45 , T46 const& t46) { @@ -892,7 +1030,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 + , void_ , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 > sequences; typedef typename mpl::transform >::type ref_params; @@ -900,6 +1040,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45 , T46 const& t46 , T47 const& t47) { @@ -911,7 +1052,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 + , void_ , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 > sequences; typedef typename mpl::transform >::type ref_params; @@ -919,6 +1062,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45 , T46 const& t46 , T47 const& t47 , T48 const& t48) { @@ -930,7 +1074,9 @@ namespace boost { namespace fusion namespace result_of { template< typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49 > - struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 > + struct zip< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 + , void_ + > { typedef mpl::vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 > sequences; typedef typename mpl::transform >::type ref_params; @@ -938,6 +1084,7 @@ namespace boost { namespace fusion }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45 , T46 const& t46 , T47 const& t47 , T48 const& t48 , T49 const& t49) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/detail/replace.hpp b/3party/boost/boost/fusion/algorithm/transformation/detail/replace.hpp index 18dab8cd65..5a7516bacc 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/detail/replace.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/detail/replace.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REPLACE_08182005_0841) #define FUSION_REPLACE_08182005_0841 +#include #include #include #include @@ -20,6 +21,7 @@ namespace boost { namespace fusion { namespace detail struct replacer_helper { template + BOOST_FUSION_GPU_ENABLED static U& call(U& x, T const&, T const&) { @@ -31,6 +33,7 @@ namespace boost { namespace fusion { namespace detail struct replacer_helper { template + BOOST_FUSION_GPU_ENABLED static U call(U& x, T const& old_value, T const& new_value) { @@ -41,6 +44,7 @@ namespace boost { namespace fusion { namespace detail template struct replacer { + BOOST_FUSION_GPU_ENABLED replacer(T const& in_old_value, T const& in_new_value) : old_value(in_old_value), new_value(in_new_value) {} @@ -57,6 +61,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(U const& x) const { diff --git a/3party/boost/boost/fusion/algorithm/transformation/detail/replace_if.hpp b/3party/boost/boost/fusion/algorithm/transformation/detail/replace_if.hpp index d45ca39219..5b9663b138 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/detail/replace_if.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/detail/replace_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REPLACE_IF_08182005_0946) #define FUSION_REPLACE_IF_08182005_0946 +#include #include #include #include @@ -20,6 +21,7 @@ namespace boost { namespace fusion { namespace detail struct replacer_if_helper { template + BOOST_FUSION_GPU_ENABLED static U& call(U& x, F&, T const&) { @@ -31,6 +33,7 @@ namespace boost { namespace fusion { namespace detail struct replacer_if_helper { template + BOOST_FUSION_GPU_ENABLED static U call(U& x, F& f, T const& new_value) { @@ -41,6 +44,7 @@ namespace boost { namespace fusion { namespace detail template struct replacer_if { + BOOST_FUSION_GPU_ENABLED replacer_if(F in_f, T const& in_new_value) : f(in_f), new_value(in_new_value) {} @@ -57,6 +61,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(U const& x) const { diff --git a/3party/boost/boost/fusion/algorithm/transformation/erase.hpp b/3party/boost/boost/fusion/algorithm/transformation/erase.hpp index 6ad737fd18..6ffdb4ded4 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/erase.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/erase.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ERASE_07232005_0534) #define FUSION_ERASE_07232005_0534 +#include #include #include #include @@ -37,18 +38,21 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(First const& first, mpl::false_) { return fusion::next(convert_iterator::call(first)); } + BOOST_FUSION_GPU_ENABLED static type call(First const& first, mpl::true_) { return convert_iterator::call(first); } + BOOST_FUSION_GPU_ENABLED static type call(First const& first) { @@ -95,6 +99,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence @@ -117,6 +122,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::erase::type erase(Sequence const& seq, First const& first, Last const& last) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/erase_key.hpp b/3party/boost/boost/fusion/algorithm/transformation/erase_key.hpp index 383f4f800d..43340047d7 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/erase_key.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/erase_key.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ERASE_KEY_10022005_1851) #define FUSION_ERASE_KEY_10022005_1851 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::erase_key::type erase_key(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/filter.hpp b/3party/boost/boost/fusion/algorithm/transformation/filter.hpp index fa347c7b58..2e290e29e0 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/filter.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/filter.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_FILTER_02122005_1839) #define FUSION_FILTER_02122005_1839 +#include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::filter::type filter(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/filter_if.hpp b/3party/boost/boost/fusion/algorithm/transformation/filter_if.hpp index d989d30858..1b9f0d323e 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/filter_if.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/filter_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_FILTER_IF_07172005_0818) #define FUSION_FILTER_IF_07172005_0818 +#include #include namespace boost { namespace fusion @@ -21,6 +22,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::filter_if::type filter_if(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/flatten.hpp b/3party/boost/boost/fusion/algorithm/transformation/flatten.hpp new file mode 100644 index 0000000000..9cd81fa964 --- /dev/null +++ b/3party/boost/boost/fusion/algorithm/transformation/flatten.hpp @@ -0,0 +1,44 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2013 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef BOOST_FUSION_ALGORITHM_FLATTEN_HPP_INCLUDED +#define BOOST_FUSION_ALGORITHM_FLATTEN_HPP_INCLUDED + + +#include +#include +#include + + +namespace boost { namespace fusion { namespace result_of +{ + template + struct flatten + { + typedef flatten_view type; + }; +}}} + +namespace boost { namespace fusion +{ + template + inline typename result_of::flatten::type + flatten(Sequence& view) + { + return flatten_view(view); + } + + template + inline typename result_of::flatten::type + flatten(Sequence const& view) + { + return flatten_view(view); + } +}} + + +#endif + diff --git a/3party/boost/boost/fusion/algorithm/transformation/insert.hpp b/3party/boost/boost/fusion/algorithm/transformation/insert.hpp index 2052fc01aa..78590222d8 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/insert.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/insert.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INSERT_07222005_0730) #define FUSION_INSERT_07222005_0730 +#include #include #include #include @@ -40,6 +41,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< diff --git a/3party/boost/boost/fusion/algorithm/transformation/insert_range.hpp b/3party/boost/boost/fusion/algorithm/transformation/insert_range.hpp index f70a78ecbc..660ed17fa5 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/insert_range.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/insert_range.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INSERT_RANGE_009172005_1147) #define FUSION_INSERT_RANGE_009172005_1147 +#include #include #include #include @@ -35,6 +36,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::insert_range::type insert_range(Sequence const& seq, Position const& pos, Range const& range) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/join.hpp b/3party/boost/boost/fusion/algorithm/transformation/join.hpp index f0cf2e4ebd..51af05352f 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/join.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/join.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_JOIN_200601222109) #define FUSION_JOIN_200601222109 +#include #include namespace boost { namespace fusion { @@ -22,6 +23,7 @@ namespace boost { namespace fusion { } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::join::type join(LhSequence const& lhs, RhSequence const& rhs) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/pop_back.hpp b/3party/boost/boost/fusion/algorithm/transformation/pop_back.hpp index 6059c555e8..b20b500356 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/pop_back.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/pop_back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_POP_BACK_09172005_1038) #define FUSION_POP_BACK_09172005_1038 +#include #include #include #include @@ -32,6 +33,7 @@ namespace boost { namespace fusion static bool const is_last = IsLast; + BOOST_FUSION_GPU_ENABLED pop_back_iterator(Iterator_ const& iterator_base) : base_type(iterator_base) {} @@ -40,6 +42,7 @@ namespace boost { namespace fusion { typedef pop_back_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(BaseIterator const& i) { @@ -91,6 +94,7 @@ namespace boost { namespace fusion typedef pop_back_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -112,6 +116,7 @@ namespace boost { namespace fusion typedef pop_back_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -147,6 +152,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::pop_back::type pop_back(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/pop_front.hpp b/3party/boost/boost/fusion/algorithm/transformation/pop_front.hpp index 75e392c26e..636ab12c9a 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/pop_front.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/pop_front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_POP_FRONT_09172005_1115) #define FUSION_POP_FRONT_09172005_1115 +#include #include #include #include @@ -31,6 +32,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::pop_front::type pop_front(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/push_back.hpp b/3party/boost/boost/fusion/algorithm/transformation/push_back.hpp index 9afe538ab2..484425d832 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/push_back.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/push_back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_PUSH_BACK_07162005_0235) #define FUSION_PUSH_BACK_07162005_0235 +#include #include #include #include @@ -26,6 +27,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< diff --git a/3party/boost/boost/fusion/algorithm/transformation/push_front.hpp b/3party/boost/boost/fusion/algorithm/transformation/push_front.hpp index abe7faadea..bda056b18e 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/push_front.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/push_front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_PUSH_FRONT_07162005_0749) #define FUSION_PUSH_FRONT_07162005_0749 +#include #include #include #include @@ -26,6 +27,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< diff --git a/3party/boost/boost/fusion/algorithm/transformation/remove.hpp b/3party/boost/boost/fusion/algorithm/transformation/remove.hpp index ce4b0febdb..18dfd1d699 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/remove.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/remove.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REMOVE_07162005_0818) #define FUSION_REMOVE_07162005_0818 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::remove::type remove(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/remove_if.hpp b/3party/boost/boost/fusion/algorithm/transformation/remove_if.hpp index e7b01b45c1..4024883971 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/remove_if.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/remove_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REMOVE_IF_07162005_0818) #define FUSION_REMOVE_IF_07162005_0818 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::remove_if::type remove_if(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/replace.hpp b/3party/boost/boost/fusion/algorithm/transformation/replace.hpp index a92e6e3738..a0a9885bd8 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/replace.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/replace.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REPLACE_08182005_0830) #define FUSION_REPLACE_08182005_0830 +#include #include #include #include @@ -24,6 +25,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< diff --git a/3party/boost/boost/fusion/algorithm/transformation/replace_if.hpp b/3party/boost/boost/fusion/algorithm/transformation/replace_if.hpp index 39b9009a79..da3557aa18 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/replace_if.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/replace_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REPLACE_IF_08182005_0939) #define FUSION_REPLACE_IF_08182005_0939 +#include #include #include #include @@ -25,6 +26,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< diff --git a/3party/boost/boost/fusion/algorithm/transformation/reverse.hpp b/3party/boost/boost/fusion/algorithm/transformation/reverse.hpp index 923b90fc6a..384224d960 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/reverse.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/reverse.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REVERSE_07212005_1230) #define FUSION_REVERSE_07212005_1230 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename enable_if< diff --git a/3party/boost/boost/fusion/algorithm/transformation/transform.hpp b/3party/boost/boost/fusion/algorithm/transformation/transform.hpp index 85e85611a1..94e45460eb 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/transform.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/transform.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_TRANSFORM_07052005_1057) #define FUSION_TRANSFORM_07052005_1057 +#include #include namespace boost { namespace fusion @@ -33,6 +34,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::transform::type transform(Sequence const& seq, F f) { @@ -40,6 +42,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::transform::type transform(Sequence1 const& seq1, Sequence2 const& seq2, F f) { diff --git a/3party/boost/boost/fusion/algorithm/transformation/zip.hpp b/3party/boost/boost/fusion/algorithm/transformation/zip.hpp index 610c60467d..796ec9e361 100644 --- a/3party/boost/boost/fusion/algorithm/transformation/zip.hpp +++ b/3party/boost/boost/fusion/algorithm/transformation/zip.hpp @@ -62,11 +62,15 @@ namespace boost { namespace fusion struct zip; } +#define FUSION_TEXT(z, n, text) , text + #define BOOST_PP_FILENAME_1 \ #define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_ZIP_SEQUENCES) #include BOOST_PP_ITERATE() +#undef FUSION_TEXT + }} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) @@ -84,13 +88,9 @@ namespace boost { namespace fusion namespace result_of { template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) > -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) - #define TEXT(z, n, text) , text - struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, TEXT, void_) > - #undef TEXT -#else - struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > -#endif + struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) + BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, FUSION_TEXT, void_) + > { typedef mpl::vector< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > sequences; typedef typename mpl::transform >::type ref_params; @@ -101,6 +101,7 @@ namespace boost { namespace fusion #define FUSION_REF_PARAM(z, n, data) const T ## n& template + BOOST_FUSION_GPU_ENABLED inline typename result_of::zip::type zip(BOOST_PP_ENUM_BINARY_PARAMS(ZIP_ITERATION, T, const& t)) { diff --git a/3party/boost/boost/fusion/container.hpp b/3party/boost/boost/fusion/container.hpp index 8bd65074e6..ab19e2cd15 100644 --- a/3party/boost/boost/fusion/container.hpp +++ b/3party/boost/boost/fusion/container.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_CLASS_10022005_0614) #define FUSION_SEQUENCE_CLASS_10022005_0614 +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/deque.hpp b/3party/boost/boost/fusion/container/deque.hpp index 0ee058a382..c07de03048 100644 --- a/3party/boost/boost/fusion/container/deque.hpp +++ b/3party/boost/boost/fusion/container/deque.hpp @@ -8,6 +8,8 @@ #if !defined(BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036) #define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036 +#include +#include #include #include diff --git a/3party/boost/boost/fusion/container/deque/back_extended_deque.hpp b/3party/boost/boost/fusion/container/deque/back_extended_deque.hpp index 738e05bbdb..a99acc7ab7 100644 --- a/3party/boost/boost/fusion/container/deque/back_extended_deque.hpp +++ b/3party/boost/boost/fusion/container/deque/back_extended_deque.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209 +#include #include #include @@ -27,17 +28,20 @@ namespace boost { namespace fusion typedef mpl::int_<(result_of::size::value + 1)> size; template + BOOST_FUSION_GPU_ENABLED back_extended_deque(Deque const& deque, Arg const& val) : base(val, deque) {} -#if defined(BOOST_NO_RVALUE_REFERENCES) +#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED back_extended_deque(Deque const& deque, Arg& val) : base(val, deque) {} #else template + BOOST_FUSION_GPU_ENABLED back_extended_deque(Deque const& deque, Arg&& val) : base(std::forward(val), deque) {} diff --git a/3party/boost/boost/fusion/container/deque/convert.hpp b/3party/boost/boost/fusion/container/deque/convert.hpp index 1910cb84fc..f791519d08 100644 --- a/3party/boost/boost/fusion/container/deque/convert.hpp +++ b/3party/boost/boost/fusion/container/deque/convert.hpp @@ -1,5 +1,5 @@ /*============================================================================= - Copyright (c) 2005-2012 Joel de Guzman + Copyright (c) 2005-2013 Joel de Guzman Copyright (c) 2006 Dan Marsden Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -8,43 +8,54 @@ #if !defined(FUSION_CONVERT_20061213_2207) #define FUSION_CONVERT_20061213_2207 -#include +#include #include #include -#include -#include + +#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +/////////////////////////////////////////////////////////////////////////////// +// C++03 (non-variadic) implementation +/////////////////////////////////////////////////////////////////////////////// +#include + +#else +/////////////////////////////////////////////////////////////////////////////// +// C++11 variadic implementation +/////////////////////////////////////////////////////////////////////////////// +#include namespace boost { namespace fusion { namespace result_of { template - struct as_deque + struct as_deque : + detail::build_deque< + typename result_of::begin::type + , typename result_of::end::type + > { - typedef typename - detail::as_deque::value> - gen; - typedef typename gen:: - template apply::type>::type - type; }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_deque::type as_deque(Sequence& seq) { - typedef typename result_of::as_deque::gen gen; - return gen::call(fusion::begin(seq)); + typedef result_of::as_deque gen; + return gen::call(fusion::begin(seq), fusion::end(seq)); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_deque::type as_deque(Sequence const& seq) { - typedef typename result_of::as_deque::gen gen; - return gen::call(fusion::begin(seq)); + typedef result_of::as_deque gen; + return gen::call(fusion::begin(seq), fusion::end(seq)); } }} #endif +#endif diff --git a/3party/boost/boost/fusion/container/deque/deque.hpp b/3party/boost/boost/fusion/container/deque/deque.hpp index 56ae290e0c..6fd3e1b0ce 100644 --- a/3party/boost/boost/fusion/container/deque/deque.hpp +++ b/3party/boost/boost/fusion/container/deque/deque.hpp @@ -8,26 +8,23 @@ #if !defined(BOOST_FUSION_DEQUE_26112006_1649) #define BOOST_FUSION_DEQUE_26112006_1649 -#include +# include /////////////////////////////////////////////////////////////////////////////// -// With variadics, we will use the PP version version +// Without variadics, we will use the PP version /////////////////////////////////////////////////////////////////////////////// -#if defined(BOOST_NO_VARIADIC_TEMPLATES) -# include +#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +# include #else -# if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) -# define BOOST_FUSION_HAS_VARIADIC_DEQUE -# endif /////////////////////////////////////////////////////////////////////////////// -// C++11 variadic interface +// C++11 interface /////////////////////////////////////////////////////////////////////////////// #include #include #include #include -#include +#include #include #include #include @@ -57,6 +54,7 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; template + BOOST_FUSION_GPU_ENABLED deque(Sequence const&, typename enable_if< mpl::and_< @@ -64,6 +62,7 @@ namespace boost { namespace fusion , result_of::empty>>::type* /*dummy*/ = 0) {} + BOOST_FUSION_GPU_ENABLED deque() {} }; @@ -80,47 +79,56 @@ namespace boost { namespace fusion typedef mpl::int_<((size::value == 0) ? 0 : -1)> next_down; typedef mpl::false_ is_view; + BOOST_FUSION_GPU_ENABLED deque() {} template + BOOST_FUSION_GPU_ENABLED deque(deque const& seq) : base(seq) {} template + BOOST_FUSION_GPU_ENABLED deque(deque& seq) : base(seq) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED deque(deque&& seq) : base(std::forward>(seq)) {} #endif + BOOST_FUSION_GPU_ENABLED deque(deque const& seq) : base(seq) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED deque(deque&& seq) : base(std::forward(seq)) {} #endif + BOOST_FUSION_GPU_ENABLED explicit deque(Head const& head, Tail const&... tail) : base(detail::deque_keyed_values::construct(head, tail...)) {} template + BOOST_FUSION_GPU_ENABLED explicit deque(Head_ const& head, Tail_ const&... tail) : base(detail::deque_keyed_values::construct(head, tail...)) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED explicit deque(Head_&& head, Tail_&&... tail) : base(detail::deque_keyed_values ::forward_(std::forward(head), std::forward(tail)...)) @@ -128,12 +136,14 @@ namespace boost { namespace fusion #endif template + BOOST_FUSION_GPU_ENABLED explicit deque(Sequence const& seq , typename disable_if >::type* /*dummy*/ = 0) : base(base::from_iterator(fusion::begin(seq))) {} template + BOOST_FUSION_GPU_ENABLED deque& operator=(deque const& rhs) { base::operator=(rhs); @@ -141,14 +151,16 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED deque& operator=(T const& rhs) { base::operator=(rhs); return *this; } -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED deque& operator=(T&& rhs) { base::operator=(std::forward(rhs)); diff --git a/3party/boost/boost/fusion/container/deque/deque_fwd.hpp b/3party/boost/boost/fusion/container/deque/deque_fwd.hpp index fc1f9cbde3..639c00e52d 100644 --- a/3party/boost/boost/fusion/container/deque/deque_fwd.hpp +++ b/3party/boost/boost/fusion/container/deque/deque_fwd.hpp @@ -8,19 +8,28 @@ #if !defined(FUSION_DEQUE_FORWARD_02092007_0749) #define FUSION_DEQUE_FORWARD_02092007_0749 +#include #include -/////////////////////////////////////////////////////////////////////////////// -// With no decltype and variadics, we will use the C++03 version -/////////////////////////////////////////////////////////////////////////////// -#if (defined(BOOST_NO_DECLTYPE) \ - || defined(BOOST_NO_VARIADIC_TEMPLATES) \ - || defined(BOOST_NO_RVALUE_REFERENCES)) -# include +#if (defined(BOOST_NO_CXX11_DECLTYPE) \ + || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \ + || defined(BOOST_NO_CXX11_RVALUE_REFERENCES)) \ + || (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) +# if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +# undef BOOST_FUSION_HAS_VARIADIC_DEQUE +# endif #else # if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) # define BOOST_FUSION_HAS_VARIADIC_DEQUE # endif +#endif + +/////////////////////////////////////////////////////////////////////////////// +// With no decltype and variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +# include +#else /////////////////////////////////////////////////////////////////////////////// // C++11 interface diff --git a/3party/boost/boost/fusion/container/deque/deque_iterator.hpp b/3party/boost/boost/fusion/container/deque/deque_iterator.hpp index d3e5f31eb7..c61d6f97f0 100644 --- a/3party/boost/boost/fusion/container/deque/deque_iterator.hpp +++ b/3party/boost/boost/fusion/container/deque/deque_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_ITERATOR_26112006_2154) #define BOOST_FUSION_DEQUE_ITERATOR_26112006_2154 +#include #include #include #include @@ -25,6 +26,7 @@ namespace boost { namespace fusion { typedef Seq sequence; typedef mpl::int_ index; + BOOST_FUSION_GPU_ENABLED deque_iterator(Seq& seq) : seq_(seq) {} @@ -47,6 +49,7 @@ namespace boost { namespace fusion { add_const, mpl::identity >::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& it) { @@ -61,6 +64,7 @@ namespace boost { namespace fusion { typedef typename Iterator::sequence sequence; typedef deque_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -87,6 +91,7 @@ namespace boost { namespace fusion { >::type type; + BOOST_FUSION_GPU_ENABLED static type call(I1 const&, I2 const&) { diff --git a/3party/boost/boost/fusion/container/deque/detail/at_impl.hpp b/3party/boost/boost/fusion/container/deque/detail/at_impl.hpp index 0684dcf19e..4c5ffa9462 100644 --- a/3party/boost/boost/fusion/container/deque/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017) #define BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017 +#include #include #include @@ -53,6 +54,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return seq.get(adjusted_index()); diff --git a/3party/boost/boost/fusion/container/deque/detail/begin_impl.hpp b/3party/boost/boost/fusion/container/deque/detail/begin_impl.hpp index 1447868a33..8e7f263350 100644 --- a/3party/boost/boost/fusion/container/deque/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034) #define BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034 +#include #include #include @@ -36,6 +37,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return type(seq); diff --git a/3party/boost/boost/fusion/container/deque/detail/build_deque.hpp b/3party/boost/boost/fusion/container/deque/detail/build_deque.hpp new file mode 100644 index 0000000000..d555c6c61c --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/build_deque.hpp @@ -0,0 +1,78 @@ +/*============================================================================= + Copyright (c) 2005-2013 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_BUILD_DEQUE_02032013_1921) +#define BOOST_FUSION_BUILD_DEQUE_02032013_1921 + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template ::value> + struct build_deque; + + template + struct build_deque + { + typedef deque<> type; + BOOST_FUSION_GPU_ENABLED + static type + call(First const&, Last const&) + { + return type(); + } + }; + + template + struct push_front_deque; + + template + struct push_front_deque> + { + typedef deque type; + + BOOST_FUSION_GPU_ENABLED + static type + call(T const& first, deque const& rest) + { + return type(front_extended_deque, T>(rest, first)); + } + }; + + template + struct build_deque + { + typedef + build_deque::type, Last> + next_build_deque; + + typedef push_front_deque< + typename result_of::value_of::type + , typename next_build_deque::type> + push_front; + + typedef typename push_front::type type; + + BOOST_FUSION_GPU_ENABLED + static type + call(First const& f, Last const& l) + { + typename result_of::value_of::type v = *f; + return push_front::call( + v, next_build_deque::call(fusion::next(f), l)); + } + }; +}}} + +#endif diff --git a/3party/boost/boost/fusion/container/deque/detail/convert_impl.hpp b/3party/boost/boost/fusion/container/deque/detail/convert_impl.hpp index 1401ef1ac8..f8ff54294e 100644 --- a/3party/boost/boost/fusion/container/deque/detail/convert_impl.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/convert_impl.hpp @@ -8,7 +8,8 @@ #if !defined(FUSION_CONVERT_IMPL_20061213_2207) #define FUSION_CONVERT_IMPL_20061213_2207 -#include +#include +#include #include #include #include @@ -17,6 +18,12 @@ namespace boost { namespace fusion { struct deque_tag; + namespace result_of + { + template + struct as_deque; + } + namespace extension { template @@ -28,14 +35,12 @@ namespace boost { namespace fusion template struct apply { - typedef detail::as_deque::value> gen; - typedef typename gen:: - template apply::type>::type - type; - + typedef result_of::as_deque gen; + typedef typename gen::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { - return gen::call(fusion::begin(seq)); + return gen::call(seq); } }; }; diff --git a/3party/boost/boost/fusion/container/deque/detail/as_deque.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/as_deque.hpp similarity index 96% rename from 3party/boost/boost/fusion/container/deque/detail/as_deque.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/as_deque.hpp index 906f4fb657..650cd7042d 100644 --- a/3party/boost/boost/fusion/container/deque/detail/as_deque.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/as_deque.hpp @@ -36,6 +36,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator) { @@ -45,7 +46,7 @@ namespace boost { namespace fusion { namespace detail }}} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp") @@ -78,7 +79,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fusion::result_of::value_of::type \ BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() @@ -116,6 +117,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/build_deque.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/build_deque.hpp new file mode 100644 index 0000000000..74d37faaf8 --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/build_deque.hpp @@ -0,0 +1,54 @@ +/*============================================================================= + Copyright (c) 2005-2013 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_BUILD_DEQUE_02032013_1921) +#define BOOST_FUSION_BUILD_DEQUE_02032013_1921 + +#if defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +#error "C++03 only! This file should not have been included" +#endif + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct as_deque + { + typedef typename + detail::as_deque::value> + gen; + typedef typename gen:: + template apply::type>::type + type; + }; + } + + template + BOOST_FUSION_GPU_ENABLED + inline typename result_of::as_deque::type + as_deque(Sequence& seq) + { + typedef typename result_of::as_deque::gen gen; + return gen::call(fusion::begin(seq)); + } + + template + BOOST_FUSION_GPU_ENABLED + inline typename result_of::as_deque::type + as_deque(Sequence const& seq) + { + typedef typename result_of::as_deque::gen gen; + return gen::call(fusion::begin(seq)); + } +}} + +#endif diff --git a/3party/boost/boost/fusion/container/deque/detail/pp_deque.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque.hpp similarity index 70% rename from 3party/boost/boost/fusion/container/deque/detail/pp_deque.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/deque.hpp index 7913b67ba1..2dd7f6382b 100644 --- a/3party/boost/boost/fusion/container/deque/detail/pp_deque.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque.hpp @@ -12,11 +12,11 @@ #error "C++03 only! This file should not have been included" #endif -#include +#include #include #include -#include -#include +#include +#include #include #include #include @@ -40,10 +40,10 @@ #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp") #endif /*============================================================================= @@ -59,6 +59,8 @@ #pragma wave option(preserve: 1) #endif +#define FUSION_HASH # + namespace boost { namespace fusion { struct deque_tag; @@ -78,47 +80,36 @@ namespace boost { namespace fusion { mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; typedef mpl::false_ is_view; -#include +#include + BOOST_FUSION_GPU_ENABLED deque() {} + BOOST_FUSION_GPU_ENABLED explicit deque(typename add_reference::type>::type t0) : base(t0, detail::nil_keyed_element()) {} + BOOST_FUSION_GPU_ENABLED explicit deque(deque const& rhs) : base(rhs) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) - explicit deque(T0&& t0) - : base(std::forward(t0), detail::nil_keyed_element()) - {} - - explicit deque(deque&& rhs) - : base(std::forward(rhs)) - {} -#endif - template + BOOST_FUSION_GPU_ENABLED deque(deque const& seq) : base(seq) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) - template - deque(deque&& seq) - : base(std::forward>(seq)) - {} -#endif - template + BOOST_FUSION_GPU_ENABLED deque(Sequence const& seq, typename disable_if >::type* /*dummy*/ = 0) : base(base::from_iterator(fusion::begin(seq))) {} template + BOOST_FUSION_GPU_ENABLED deque& operator=(deque const& rhs) { @@ -127,6 +118,7 @@ namespace boost { namespace fusion { } template + BOOST_FUSION_GPU_ENABLED deque& operator=(T const& rhs) { @@ -134,19 +126,69 @@ namespace boost { namespace fusion { return *this; } -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + template + BOOST_FUSION_GPU_ENABLED + explicit deque(T0_&& t0 + , typename enable_if >::type* /*dummy*/ = 0 + ) + : base(std::forward(t0), detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque&& rhs) + : base(std::forward(rhs)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque&& seq) + : base(std::forward>(seq)) + {} template + BOOST_FUSION_GPU_ENABLED deque& operator=(T&& rhs) { base::operator=(std::forward(rhs)); return *this; } +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif #endif }; + + template <> + struct deque<> : detail::nil_keyed_element + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef mpl::int_<0> size; + typedef mpl::int_<0> next_up; + typedef mpl::int_<0> next_down; + typedef mpl::false_ is_view; + + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const&, + typename enable_if< + mpl::and_< + traits::is_sequence + , result_of::empty > >::type* /*dummy*/ = 0) + {} + + BOOST_FUSION_GPU_ENABLED + deque() {} + }; + }} +#undef FUSION_HASH + #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(output: null) #endif diff --git a/3party/boost/boost/fusion/container/deque/detail/deque_forward_ctor.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp similarity index 54% rename from 3party/boost/boost/fusion/container/deque/detail/deque_forward_ctor.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp index 44d279f62f..7b12d58ca8 100644 --- a/3party/boost/boost/fusion/container/deque/detail/deque_forward_ctor.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_forward_ctor.hpp @@ -13,14 +13,14 @@ #error "C++03 only! This file should not have been included" #endif -#define FUSION_DEQUE_FORWARD_CTOR_FORWARD(z, n, _) std::forward(t##n) +#define FUSION_DEQUE_FORWARD_CTOR_FORWARD(z, n, _) std::forward(t##n) #include #include #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() @@ -30,15 +30,39 @@ #define N BOOST_PP_ITERATION() +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) +BOOST_FUSION_GPU_ENABLED deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t)) : base(detail::deque_keyed_values::construct(BOOST_PP_ENUM_PARAMS(N, t))) {} +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif +#endif -#if !defined(BOOST_NO_RVALUE_REFERENCES) -deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && t)) - : base(detail::deque_keyed_values:: - forward_(BOOST_PP_ENUM(N, FUSION_DEQUE_FORWARD_CTOR_FORWARD, _))) +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) +BOOST_FUSION_GPU_ENABLED +deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& t)) + : base(detail::deque_keyed_values::construct(BOOST_PP_ENUM_PARAMS(N, t))) {} + +template +BOOST_FUSION_GPU_ENABLED +deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T_, && t)) + : base(detail::deque_keyed_values:: + forward_(BOOST_PP_ENUM(N, FUSION_DEQUE_FORWARD_CTOR_FORWARD, _))) +{} +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif #endif #undef N diff --git a/3party/boost/boost/fusion/container/deque/detail/pp_deque_fwd.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp similarity index 87% rename from 3party/boost/boost/fusion/container/deque/detail/pp_deque_fwd.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp index 354cfccdc1..0da8bd2243 100644 --- a/3party/boost/boost/fusion/container/deque/detail/pp_deque_fwd.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_fwd.hpp @@ -12,14 +12,14 @@ #error "C++03 only! This file should not have been included" #endif -#include +#include #include #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR "_fwd.hpp") +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque" FUSION_MAX_DEQUE_SIZE_STR "_fwd.hpp") #endif /*============================================================================= diff --git a/3party/boost/boost/fusion/container/deque/detail/deque_initial_size.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp similarity index 96% rename from 3party/boost/boost/fusion/container/deque/detail/deque_initial_size.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp index 21075ef47f..5ac245d956 100644 --- a/3party/boost/boost/fusion/container/deque/detail/deque_initial_size.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_initial_size.hpp @@ -25,7 +25,7 @@ namespace boost { namespace fusion }} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_initial_size" FUSION_MAX_DEQUE_SIZE_STR ".hpp") diff --git a/3party/boost/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp similarity index 91% rename from 3party/boost/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp index a7c4939a36..1ee91ba253 100644 --- a/3party/boost/boost/fusion/container/deque/detail/pp_deque_keyed_values.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_keyed_values.hpp @@ -12,7 +12,7 @@ #error "C++03 only! This file should not have been included" #endif -#include +#include #include #include @@ -34,7 +34,7 @@ namespace boost { namespace fusion }} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_keyed_values" FUSION_MAX_DEQUE_SIZE_STR ".hpp") @@ -68,11 +68,13 @@ namespace boost { namespace fusion { namespace detail { typedef nil_keyed_element type; - static type call() + BOOST_FUSION_GPU_ENABLED + static type construct() { return type(); } + BOOST_FUSION_GPU_ENABLED static type forward_() { return type(); @@ -89,7 +91,7 @@ namespace boost { namespace fusion { namespace detail BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type tail; typedef keyed_element type; -#include +#include }; diff --git a/3party/boost/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp similarity index 66% rename from 3party/boost/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp index d457516fc5..dcd9257dc5 100644 --- a/3party/boost/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/deque_keyed_values_call.hpp @@ -18,20 +18,23 @@ #include #include +#define FUSION_HASH # #define FUSION_DEQUE_KEYED_VALUES_FORWARD(z, n, _) \ - std::forward(BOOST_PP_CAT(t, n)) + std::forward(BOOST_PP_CAT(t, n)) #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) #include BOOST_PP_ITERATE() #undef FUSION_DEQUE_KEYED_VALUES_FORWARD +#undef FUSION_HASH #endif #else #define N BOOST_PP_ITERATION() + BOOST_FUSION_GPU_ENABLED static type construct(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference::type>::type t)) { return type(t0, @@ -40,19 +43,30 @@ #if N > 1 , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T) #endif - >::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t))); + >::construct(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t))); } - static type forward_(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && t)) +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(BOOST_PP_ENUM_BINARY_PARAMS(N, T_, && t)) { - return type(std::forward(t0), + return type(std::forward(t0), deque_keyed_values_impl< next_index #if N > 1 - , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T) + , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T_) #endif >::forward_(BOOST_PP_ENUM_SHIFTED(N, FUSION_DEQUE_KEYED_VALUES_FORWARD, _))); } +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif +#endif #undef N #endif diff --git a/3party/boost/boost/fusion/container/deque/limits.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/limits.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/limits.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/limits.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp similarity index 62% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp index f383bea28b..abc2890a22 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_DEQUE_SIZE <= 10 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 20 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 30 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 40 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers" #endif diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque10.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp similarity index 97% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque10.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp index 709ecf4973..e573efb75c 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque10.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque10.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque20.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp similarity index 98% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque20.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp index 7363f42984..b3b7f15857 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque20.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque20.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque30.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp similarity index 98% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque30.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp index f0c72b0b8b..18b4662cb1 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque30.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque30.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque40.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp similarity index 99% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque40.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp index 720db73f40..ec44a2b079 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque40.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque40.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -619,6 +649,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -639,6 +670,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -659,6 +691,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -679,6 +712,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -699,6 +733,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -719,6 +754,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -739,6 +775,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -759,6 +796,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -779,6 +817,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -799,6 +838,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque50.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp similarity index 99% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque50.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp index e328927e38..6c83aed401 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/as_deque50.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/as_deque50.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -619,6 +649,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -639,6 +670,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -659,6 +691,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -679,6 +712,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -699,6 +733,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -719,6 +754,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -739,6 +775,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -759,6 +796,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -779,6 +817,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -799,6 +838,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -819,6 +859,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -839,6 +880,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -859,6 +901,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -879,6 +922,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -899,6 +943,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -919,6 +964,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -939,6 +985,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -959,6 +1006,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -979,6 +1027,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -999,6 +1048,7 @@ namespace boost { namespace fusion { namespace detail typedef deque type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp similarity index 62% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp index 404d20b748..3a5a21e259 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_DEQUE_SIZE <= 10 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 20 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 30 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 40 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers" #endif diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp new file mode 100644 index 0000000000..59a4ca6a0e --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10.hpp @@ -0,0 +1,271 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { + struct deque_tag; + template + struct deque + : + detail::deque_keyed_values::type, + sequence_base > + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef typename detail::deque_keyed_values::type base; + typedef typename detail::deque_initial_size::type size; + typedef mpl::int_ next_up; + typedef mpl::int_< + mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; + typedef mpl::false_ is_view; +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))) +{} +# endif + BOOST_FUSION_GPU_ENABLED + deque() + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(typename add_reference::type>::type t0) + : base(t0, detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque const& rhs) + : base(rhs) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque const& seq) + : base(seq) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const& seq, typename disable_if >::type* = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(deque const& rhs) + { + base::operator=(rhs); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T const& rhs) + { + base::operator=(rhs); + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit deque(T0_&& t0 + , typename enable_if >::type* = 0 + ) + : base(std::forward(t0), detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque&& rhs) + : base(std::forward(rhs)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque&& seq) + : base(std::forward>(seq)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T&& rhs) + { + base::operator=(std::forward(rhs)); + return *this; + } +# endif + }; + template <> + struct deque<> : detail::nil_keyed_element + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef mpl::int_<0> size; + typedef mpl::int_<0> next_up; + typedef mpl::int_<0> next_down; + typedef mpl::false_ is_view; + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const&, + typename enable_if< + mpl::and_< + traits::is_sequence + , result_of::empty > >::type* = 0) + {} + BOOST_FUSION_GPU_ENABLED + deque() {} + }; +}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque10_fwd.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque10_fwd.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque10_fwd.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp new file mode 100644 index 0000000000..ca008a7b6e --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20.hpp @@ -0,0 +1,451 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { + struct deque_tag; + template + struct deque + : + detail::deque_keyed_values::type, + sequence_base > + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef typename detail::deque_keyed_values::type base; + typedef typename detail::deque_initial_size::type size; + typedef mpl::int_ next_up; + typedef mpl::int_< + mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; + typedef mpl::false_ is_view; +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19))) +{} +# endif + BOOST_FUSION_GPU_ENABLED + deque() + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(typename add_reference::type>::type t0) + : base(t0, detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque const& rhs) + : base(rhs) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque const& seq) + : base(seq) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const& seq, typename disable_if >::type* = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(deque const& rhs) + { + base::operator=(rhs); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T const& rhs) + { + base::operator=(rhs); + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit deque(T0_&& t0 + , typename enable_if >::type* = 0 + ) + : base(std::forward(t0), detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque&& rhs) + : base(std::forward(rhs)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque&& seq) + : base(std::forward>(seq)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T&& rhs) + { + base::operator=(std::forward(rhs)); + return *this; + } +# endif + }; + template <> + struct deque<> : detail::nil_keyed_element + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef mpl::int_<0> size; + typedef mpl::int_<0> next_up; + typedef mpl::int_<0> next_down; + typedef mpl::false_ is_view; + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const&, + typename enable_if< + mpl::and_< + traits::is_sequence + , result_of::empty > >::type* = 0) + {} + BOOST_FUSION_GPU_ENABLED + deque() {} + }; +}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque20_fwd.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque20_fwd.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque20_fwd.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp new file mode 100644 index 0000000000..cc2c5b4014 --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30.hpp @@ -0,0 +1,631 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { + struct deque_tag; + template + struct deque + : + detail::deque_keyed_values::type, + sequence_base > + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef typename detail::deque_keyed_values::type base; + typedef typename detail::deque_initial_size::type size; + typedef mpl::int_ next_up; + typedef mpl::int_< + mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; + typedef mpl::false_ is_view; +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29))) +{} +# endif + BOOST_FUSION_GPU_ENABLED + deque() + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(typename add_reference::type>::type t0) + : base(t0, detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque const& rhs) + : base(rhs) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque const& seq) + : base(seq) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const& seq, typename disable_if >::type* = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(deque const& rhs) + { + base::operator=(rhs); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T const& rhs) + { + base::operator=(rhs); + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit deque(T0_&& t0 + , typename enable_if >::type* = 0 + ) + : base(std::forward(t0), detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque&& rhs) + : base(std::forward(rhs)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque&& seq) + : base(std::forward>(seq)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T&& rhs) + { + base::operator=(std::forward(rhs)); + return *this; + } +# endif + }; + template <> + struct deque<> : detail::nil_keyed_element + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef mpl::int_<0> size; + typedef mpl::int_<0> next_up; + typedef mpl::int_<0> next_down; + typedef mpl::false_ is_view; + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const&, + typename enable_if< + mpl::and_< + traits::is_sequence + , result_of::empty > >::type* = 0) + {} + BOOST_FUSION_GPU_ENABLED + deque() {} + }; +}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque30_fwd.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque30_fwd.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque30_fwd.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp new file mode 100644 index 0000000000..00d110b265 --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40.hpp @@ -0,0 +1,811 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { + struct deque_tag; + template + struct deque + : + detail::deque_keyed_values::type, + sequence_base > + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef typename detail::deque_keyed_values::type base; + typedef typename detail::deque_initial_size::type size; + typedef mpl::int_ next_up; + typedef mpl::int_< + mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; + typedef mpl::false_ is_view; +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39))) +{} +# endif + BOOST_FUSION_GPU_ENABLED + deque() + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(typename add_reference::type>::type t0) + : base(t0, detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque const& rhs) + : base(rhs) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque const& seq) + : base(seq) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const& seq, typename disable_if >::type* = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(deque const& rhs) + { + base::operator=(rhs); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T const& rhs) + { + base::operator=(rhs); + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit deque(T0_&& t0 + , typename enable_if >::type* = 0 + ) + : base(std::forward(t0), detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque&& rhs) + : base(std::forward(rhs)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque&& seq) + : base(std::forward>(seq)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T&& rhs) + { + base::operator=(std::forward(rhs)); + return *this; + } +# endif + }; + template <> + struct deque<> : detail::nil_keyed_element + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef mpl::int_<0> size; + typedef mpl::int_<0> next_up; + typedef mpl::int_<0> next_down; + typedef mpl::false_ is_view; + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const&, + typename enable_if< + mpl::and_< + traits::is_sequence + , result_of::empty > >::type* = 0) + {} + BOOST_FUSION_GPU_ENABLED + deque() {} + }; +}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque40_fwd.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque40_fwd.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque40_fwd.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp new file mode 100644 index 0000000000..ec292ebf42 --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50.hpp @@ -0,0 +1,991 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { + struct deque_tag; + template + struct deque + : + detail::deque_keyed_values::type, + sequence_base > + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef typename detail::deque_keyed_values::type base; + typedef typename detail::deque_initial_size::type size; + typedef mpl::int_ next_up; + typedef mpl::int_< + mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; + typedef mpl::false_ is_view; +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1) + : base(detail::deque_keyed_values::construct(t0 , t1)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45 , T46 const& t46) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45 , T_46 && t46) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45) , std::forward(t46))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45 , T46 const& t46 , T47 const& t47) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45 , T_46 && t46 , T_47 && t47) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45) , std::forward(t46) , std::forward(t47))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47 , typename add_reference::type>::type t48) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45 , T46 const& t46 , T47 const& t47 , T48 const& t48) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45 , T_46 && t46 , T_47 && t47 , T_48 && t48) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45) , std::forward(t46) , std::forward(t47) , std::forward(t48))) +{} +# endif +# if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47 , typename add_reference::type>::type t48 , typename add_reference::type>::type t49) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48 , t49)) +{} +# endif +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +BOOST_FUSION_GPU_ENABLED +deque(T0 const& t0 , T1 const& t1 , T2 const& t2 , T3 const& t3 , T4 const& t4 , T5 const& t5 , T6 const& t6 , T7 const& t7 , T8 const& t8 , T9 const& t9 , T10 const& t10 , T11 const& t11 , T12 const& t12 , T13 const& t13 , T14 const& t14 , T15 const& t15 , T16 const& t16 , T17 const& t17 , T18 const& t18 , T19 const& t19 , T20 const& t20 , T21 const& t21 , T22 const& t22 , T23 const& t23 , T24 const& t24 , T25 const& t25 , T26 const& t26 , T27 const& t27 , T28 const& t28 , T29 const& t29 , T30 const& t30 , T31 const& t31 , T32 const& t32 , T33 const& t33 , T34 const& t34 , T35 const& t35 , T36 const& t36 , T37 const& t37 , T38 const& t38 , T39 const& t39 , T40 const& t40 , T41 const& t41 , T42 const& t42 , T43 const& t43 , T44 const& t44 , T45 const& t45 , T46 const& t46 , T47 const& t47 , T48 const& t48 , T49 const& t49) + : base(detail::deque_keyed_values::construct(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48 , t49)) +{} +template +BOOST_FUSION_GPU_ENABLED +deque(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45 , T_46 && t46 , T_47 && t47 , T_48 && t48 , T_49 && t49) + : base(detail::deque_keyed_values:: + forward_(std::forward(t0) , std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45) , std::forward(t46) , std::forward(t47) , std::forward(t48) , std::forward(t49))) +{} +# endif + BOOST_FUSION_GPU_ENABLED + deque() + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(typename add_reference::type>::type t0) + : base(t0, detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque const& rhs) + : base(rhs) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque const& seq) + : base(seq) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const& seq, typename disable_if >::type* = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(deque const& rhs) + { + base::operator=(rhs); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T const& rhs) + { + base::operator=(rhs); + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit deque(T0_&& t0 + , typename enable_if >::type* = 0 + ) + : base(std::forward(t0), detail::nil_keyed_element()) + {} + BOOST_FUSION_GPU_ENABLED + explicit deque(deque&& rhs) + : base(std::forward(rhs)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque(deque&& seq) + : base(std::forward>(seq)) + {} + template + BOOST_FUSION_GPU_ENABLED + deque& + operator=(T&& rhs) + { + base::operator=(std::forward(rhs)); + return *this; + } +# endif + }; + template <> + struct deque<> : detail::nil_keyed_element + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef mpl::int_<0> size; + typedef mpl::int_<0> next_up; + typedef mpl::int_<0> next_down; + typedef mpl::false_ is_view; + template + BOOST_FUSION_GPU_ENABLED + deque(Sequence const&, + typename enable_if< + mpl::and_< + traits::is_sequence + , result_of::empty > >::type* = 0) + {} + BOOST_FUSION_GPU_ENABLED + deque() {} + }; +}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque50_fwd.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque50_fwd.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque50_fwd.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_fwd.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp similarity index 61% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_fwd.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp index a0b75b7c4d..9a770b9ef4 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_fwd.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_fwd.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_DEQUE_SIZE <= 10 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 20 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 30 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 40 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers" #endif diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp similarity index 59% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp index a26dfdb26c..9431abe2b8 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_DEQUE_SIZE <= 10 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 20 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 30 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 40 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers" #endif diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size10.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size10.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size10.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size20.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size20.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size20.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size30.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size30.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size30.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size40.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size40.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size40.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size50.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_initial_size50.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_initial_size50.hpp diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp similarity index 59% rename from 3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values.hpp rename to 3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp index 2460dda59d..6e79686547 100644 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_DEQUE_SIZE <= 10 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 20 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 30 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 40 -#include +#include #elif FUSION_MAX_DEQUE_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_DEQUE_SIZE out of bounds for preprocessed headers" #endif diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp new file mode 100644 index 0000000000..a193acd122 --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values10.hpp @@ -0,0 +1,252 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { namespace detail +{ + template + struct keyed_element; + struct nil_keyed_element; + template + struct deque_keyed_values_impl; + template + struct deque_keyed_values_impl + { + typedef nil_keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct() + { + return type(); + } + BOOST_FUSION_GPU_ENABLED + static type forward_() + { + return type(); + } + }; + template + struct deque_keyed_values_impl + { + typedef mpl::int_ >::value> next_index; + typedef typename deque_keyed_values_impl< + next_index, + T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>::type tail; + typedef keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0) + { + return type(t0, + deque_keyed_values_impl< + next_index + >::construct()); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + >::forward_()); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 + >::construct(t1)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 + >::forward_(std::forward(t1))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 + >::construct(t1 , t2)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 + >::forward_(std::forward(t1) , std::forward(t2))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 + >::construct(t1 , t2 , t3)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 + >::construct(t1 , t2 , t3 , t4)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 + >::construct(t1 , t2 , t3 , t4 , t5)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 + >::construct(t1 , t2 , t3 , t4 , t5 , t6)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))); + } +# endif + }; + template + struct deque_keyed_values + : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> + {}; +}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp new file mode 100644 index 0000000000..66c56883cb --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values20.hpp @@ -0,0 +1,462 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { namespace detail +{ + template + struct keyed_element; + struct nil_keyed_element; + template + struct deque_keyed_values_impl; + template + struct deque_keyed_values_impl + { + typedef nil_keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct() + { + return type(); + } + BOOST_FUSION_GPU_ENABLED + static type forward_() + { + return type(); + } + }; + template + struct deque_keyed_values_impl + { + typedef mpl::int_ >::value> next_index; + typedef typename deque_keyed_values_impl< + next_index, + T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>::type tail; + typedef keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0) + { + return type(t0, + deque_keyed_values_impl< + next_index + >::construct()); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + >::forward_()); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 + >::construct(t1)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 + >::forward_(std::forward(t1))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 + >::construct(t1 , t2)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 + >::forward_(std::forward(t1) , std::forward(t2))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 + >::construct(t1 , t2 , t3)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 + >::construct(t1 , t2 , t3 , t4)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 + >::construct(t1 , t2 , t3 , t4 , t5)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 + >::construct(t1 , t2 , t3 , t4 , t5 , t6)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19))); + } +# endif + }; + template + struct deque_keyed_values + : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> + {}; +}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp new file mode 100644 index 0000000000..8680c66196 --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values30.hpp @@ -0,0 +1,672 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { namespace detail +{ + template + struct keyed_element; + struct nil_keyed_element; + template + struct deque_keyed_values_impl; + template + struct deque_keyed_values_impl + { + typedef nil_keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct() + { + return type(); + } + BOOST_FUSION_GPU_ENABLED + static type forward_() + { + return type(); + } + }; + template + struct deque_keyed_values_impl + { + typedef mpl::int_ >::value> next_index; + typedef typename deque_keyed_values_impl< + next_index, + T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29>::type tail; + typedef keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0) + { + return type(t0, + deque_keyed_values_impl< + next_index + >::construct()); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + >::forward_()); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 + >::construct(t1)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 + >::forward_(std::forward(t1))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 + >::construct(t1 , t2)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 + >::forward_(std::forward(t1) , std::forward(t2))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 + >::construct(t1 , t2 , t3)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 + >::construct(t1 , t2 , t3 , t4)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 + >::construct(t1 , t2 , t3 , t4 , t5)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 + >::construct(t1 , t2 , t3 , t4 , t5 , t6)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29))); + } +# endif + }; + template + struct deque_keyed_values + : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> + {}; +}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp new file mode 100644 index 0000000000..4e9ed3e9f0 --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values40.hpp @@ -0,0 +1,882 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { namespace detail +{ + template + struct keyed_element; + struct nil_keyed_element; + template + struct deque_keyed_values_impl; + template + struct deque_keyed_values_impl + { + typedef nil_keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct() + { + return type(); + } + BOOST_FUSION_GPU_ENABLED + static type forward_() + { + return type(); + } + }; + template + struct deque_keyed_values_impl + { + typedef mpl::int_ >::value> next_index; + typedef typename deque_keyed_values_impl< + next_index, + T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39>::type tail; + typedef keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0) + { + return type(t0, + deque_keyed_values_impl< + next_index + >::construct()); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + >::forward_()); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 + >::construct(t1)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 + >::forward_(std::forward(t1))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 + >::construct(t1 , t2)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 + >::forward_(std::forward(t1) , std::forward(t2))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 + >::construct(t1 , t2 , t3)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 + >::construct(t1 , t2 , t3 , t4)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 + >::construct(t1 , t2 , t3 , t4 , t5)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 + >::construct(t1 , t2 , t3 , t4 , t5 , t6)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39))); + } +# endif + }; + template + struct deque_keyed_values + : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> + {}; +}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp new file mode 100644 index 0000000000..0fab39e32b --- /dev/null +++ b/3party/boost/boost/fusion/container/deque/detail/cpp03/preprocessed/deque_keyed_values50.hpp @@ -0,0 +1,1092 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ +namespace boost { namespace fusion { namespace detail +{ + template + struct keyed_element; + struct nil_keyed_element; + template + struct deque_keyed_values_impl; + template + struct deque_keyed_values_impl + { + typedef nil_keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct() + { + return type(); + } + BOOST_FUSION_GPU_ENABLED + static type forward_() + { + return type(); + } + }; + template + struct deque_keyed_values_impl + { + typedef mpl::int_ >::value> next_index; + typedef typename deque_keyed_values_impl< + next_index, + T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49>::type tail; + typedef keyed_element type; + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0) + { + return type(t0, + deque_keyed_values_impl< + next_index + >::construct()); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + >::forward_()); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 + >::construct(t1)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 + >::forward_(std::forward(t1))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 + >::construct(t1 , t2)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 + >::forward_(std::forward(t1) , std::forward(t2))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 + >::construct(t1 , t2 , t3)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 + >::construct(t1 , t2 , t3 , t4)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 + >::construct(t1 , t2 , t3 , t4 , t5)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 + >::construct(t1 , t2 , t3 , t4 , t5 , t6)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 , T_42 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 , T_42 , T_43 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 , T_42 , T_43 , T_44 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 , T_42 , T_43 , T_44 , T_45 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45 , T_46 && t46) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 , T_42 , T_43 , T_44 , T_45 , T_46 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45) , std::forward(t46))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45 , T_46 && t46 , T_47 && t47) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 , T_42 , T_43 , T_44 , T_45 , T_46 , T_47 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45) , std::forward(t46) , std::forward(t47))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47 , typename add_reference::type>::type t48) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45 , T_46 && t46 , T_47 && t47 , T_48 && t48) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 , T_42 , T_43 , T_44 , T_45 , T_46 , T_47 , T_48 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45) , std::forward(t46) , std::forward(t47) , std::forward(t48))); + } +# endif + BOOST_FUSION_GPU_ENABLED + static type construct(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47 , typename add_reference::type>::type t48 , typename add_reference::type>::type t49) + { + return type(t0, + deque_keyed_values_impl< + next_index + , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 + >::construct(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48 , t49)); + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + static type forward_(T_0 && t0 , T_1 && t1 , T_2 && t2 , T_3 && t3 , T_4 && t4 , T_5 && t5 , T_6 && t6 , T_7 && t7 , T_8 && t8 , T_9 && t9 , T_10 && t10 , T_11 && t11 , T_12 && t12 , T_13 && t13 , T_14 && t14 , T_15 && t15 , T_16 && t16 , T_17 && t17 , T_18 && t18 , T_19 && t19 , T_20 && t20 , T_21 && t21 , T_22 && t22 , T_23 && t23 , T_24 && t24 , T_25 && t25 , T_26 && t26 , T_27 && t27 , T_28 && t28 , T_29 && t29 , T_30 && t30 , T_31 && t31 , T_32 && t32 , T_33 && t33 , T_34 && t34 , T_35 && t35 , T_36 && t36 , T_37 && t37 , T_38 && t38 , T_39 && t39 , T_40 && t40 , T_41 && t41 , T_42 && t42 , T_43 && t43 , T_44 && t44 , T_45 && t45 , T_46 && t46 , T_47 && t47 , T_48 && t48 , T_49 && t49) + { + return type(std::forward(t0), + deque_keyed_values_impl< + next_index + , T_1 , T_2 , T_3 , T_4 , T_5 , T_6 , T_7 , T_8 , T_9 , T_10 , T_11 , T_12 , T_13 , T_14 , T_15 , T_16 , T_17 , T_18 , T_19 , T_20 , T_21 , T_22 , T_23 , T_24 , T_25 , T_26 , T_27 , T_28 , T_29 , T_30 , T_31 , T_32 , T_33 , T_34 , T_35 , T_36 , T_37 , T_38 , T_39 , T_40 , T_41 , T_42 , T_43 , T_44 , T_45 , T_46 , T_47 , T_48 , T_49 + >::forward_(std::forward(t1) , std::forward(t2) , std::forward(t3) , std::forward(t4) , std::forward(t5) , std::forward(t6) , std::forward(t7) , std::forward(t8) , std::forward(t9) , std::forward(t10) , std::forward(t11) , std::forward(t12) , std::forward(t13) , std::forward(t14) , std::forward(t15) , std::forward(t16) , std::forward(t17) , std::forward(t18) , std::forward(t19) , std::forward(t20) , std::forward(t21) , std::forward(t22) , std::forward(t23) , std::forward(t24) , std::forward(t25) , std::forward(t26) , std::forward(t27) , std::forward(t28) , std::forward(t29) , std::forward(t30) , std::forward(t31) , std::forward(t32) , std::forward(t33) , std::forward(t34) , std::forward(t35) , std::forward(t36) , std::forward(t37) , std::forward(t38) , std::forward(t39) , std::forward(t40) , std::forward(t41) , std::forward(t42) , std::forward(t43) , std::forward(t44) , std::forward(t45) , std::forward(t46) , std::forward(t47) , std::forward(t48) , std::forward(t49))); + } +# endif + }; + template + struct deque_keyed_values + : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> + {}; +}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp b/3party/boost/boost/fusion/container/deque/detail/deque_keyed_values.hpp similarity index 92% rename from 3party/boost/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp rename to 3party/boost/boost/fusion/container/deque/detail/deque_keyed_values.hpp index aae26a5b3c..9bcffeb234 100644 --- a/3party/boost/boost/fusion/container/deque/detail/variadic_deque_keyed_values.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/deque_keyed_values.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901) #define BOOST_FUSION_DEQUE_DETAIL_CPP11_DEQUE_KEYED_VALUES_07042012_1901 +#include #include #include #include @@ -28,6 +29,7 @@ namespace boost { namespace fusion { namespace detail typedef typename deque_keyed_values_impl::type tail; typedef keyed_element type; + BOOST_FUSION_GPU_ENABLED static type construct( typename detail::call_param::type head , typename detail::call_param::type... tail) @@ -39,6 +41,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static type forward_(Head_&& head, Tail_&&... tail) { return type( @@ -55,7 +58,9 @@ namespace boost { namespace fusion { namespace detail struct deque_keyed_values_impl { typedef nil_keyed_element type; + BOOST_FUSION_GPU_ENABLED static type construct() { return type(); } + BOOST_FUSION_GPU_ENABLED static type forward_() { return type(); } }; diff --git a/3party/boost/boost/fusion/container/deque/detail/end_impl.hpp b/3party/boost/boost/fusion/container/deque/detail/end_impl.hpp index 8037689abf..73ef85ffb5 100644 --- a/3party/boost/boost/fusion/container/deque/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_END_IMPL_09122006_2034) #define BOOST_FUSION_DEQUE_END_IMPL_09122006_2034 +#include #include #include @@ -36,6 +37,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return type(seq); diff --git a/3party/boost/boost/fusion/container/deque/detail/is_sequence_impl.hpp b/3party/boost/boost/fusion/container/deque/detail/is_sequence_impl.hpp index b4718be41a..b4b9138cd9 100644 --- a/3party/boost/boost/fusion/container/deque/detail/is_sequence_impl.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/is_sequence_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_DEQUE_DETAIL_IS_SEQUENCE_IMPL_HPP #define BOOST_FUSION_CONTAINER_DEQUE_DETAIL_IS_SEQUENCE_IMPL_HPP +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/container/deque/detail/keyed_element.hpp b/3party/boost/boost/fusion/container/deque/detail/keyed_element.hpp index e5bdc2abd3..05258820dc 100644 --- a/3party/boost/boost/fusion/container/deque/detail/keyed_element.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/keyed_element.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330) #define BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330 +#include #include #include #include @@ -22,9 +23,11 @@ namespace boost { namespace fusion { namespace detail struct nil_keyed_element { typedef fusion_sequence_tag tag; + BOOST_FUSION_GPU_ENABLED void get(); template + BOOST_FUSION_GPU_ENABLED static nil_keyed_element from_iterator(It const&) { @@ -40,6 +43,7 @@ namespace boost { namespace fusion { namespace detail using Rest::get; template + BOOST_FUSION_GPU_ENABLED static keyed_element from_iterator(It const& it) { @@ -47,11 +51,13 @@ namespace boost { namespace fusion { namespace detail *it, base::from_iterator(fusion::next(it))); } + BOOST_FUSION_GPU_ENABLED keyed_element(keyed_element const& rhs) : Rest(rhs.get_base()), value_(rhs.value_) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED keyed_element(keyed_element&& rhs) : Rest(std::forward(rhs.forward_base())) , value_(std::forward(rhs.value_)) @@ -59,58 +65,68 @@ namespace boost { namespace fusion { namespace detail #endif template + BOOST_FUSION_GPU_ENABLED keyed_element(keyed_element const& rhs) : Rest(rhs.get_base()), value_(rhs.value_) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) #endif + BOOST_FUSION_GPU_ENABLED Rest& get_base() { return *this; } + BOOST_FUSION_GPU_ENABLED Rest const& get_base() const { return *this; } -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED Rest&& forward_base() { return std::forward(*static_cast(this)); } #endif + BOOST_FUSION_GPU_ENABLED typename cref_result::type get(Key) const { return value_; } + BOOST_FUSION_GPU_ENABLED typename ref_result::type get(Key) { return value_; } + BOOST_FUSION_GPU_ENABLED keyed_element( typename detail::call_param::type value , Rest const& rest) : Rest(rest), value_(value) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED keyed_element(Value&& value, Rest&& rest) : Rest(std::forward(rest)) , value_(std::forward(value)) {} #endif + BOOST_FUSION_GPU_ENABLED keyed_element() : Rest(), value_() {} template + BOOST_FUSION_GPU_ENABLED keyed_element& operator=(keyed_element const& rhs) { base::operator=(static_cast(rhs)); // cast for msvc-7.1 @@ -118,6 +134,7 @@ namespace boost { namespace fusion { namespace detail return *this; } + BOOST_FUSION_GPU_ENABLED keyed_element& operator=(keyed_element const& rhs) { base::operator=(rhs); @@ -125,7 +142,8 @@ namespace boost { namespace fusion { namespace detail return *this; } -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED keyed_element& operator=(keyed_element&& rhs) { base::operator=(std::forward(rhs)); diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque10.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque10.hpp deleted file mode 100644 index b981e927dc..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque10.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { - struct deque_tag; - template - struct deque - : - detail::deque_keyed_values::type, - sequence_base > - { - typedef deque_tag fusion_tag; - typedef bidirectional_traversal_tag category; - typedef typename detail::deque_keyed_values::type base; - typedef typename detail::deque_initial_size::type size; - typedef mpl::int_ next_up; - typedef mpl::int_< - mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; - typedef mpl::false_ is_view; -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - : base(detail::deque_keyed_values::call(t0 , t1)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - : base(detail::deque_keyed_values::call(t0 , t1 , t2)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) -{} - deque() - {} - explicit deque(typename add_reference::type>::type t0) - : base(t0, detail::nil_keyed_element()) - {} - template - deque(deque const& seq) - : base(seq) - {} - template - deque(Sequence const& seq, typename disable_if >::type* = 0) - : base(base::from_iterator(fusion::begin(seq))) - {} - template - deque& - operator=(deque const& rhs) - { - base::operator=(rhs); - return *this; - } - template - deque& - operator=(T const& rhs) - { - base::operator=(rhs); - return *this; - } - }; -}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque20.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque20.hpp deleted file mode 100644 index f70524ae87..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque20.hpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { - struct deque_tag; - template - struct deque - : - detail::deque_keyed_values::type, - sequence_base > - { - typedef deque_tag fusion_tag; - typedef bidirectional_traversal_tag category; - typedef typename detail::deque_keyed_values::type base; - typedef typename detail::deque_initial_size::type size; - typedef mpl::int_ next_up; - typedef mpl::int_< - mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; - typedef mpl::false_ is_view; -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - : base(detail::deque_keyed_values::call(t0 , t1)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - : base(detail::deque_keyed_values::call(t0 , t1 , t2)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) -{} - deque() - {} - explicit deque(typename add_reference::type>::type t0) - : base(t0, detail::nil_keyed_element()) - {} - template - deque(deque const& seq) - : base(seq) - {} - template - deque(Sequence const& seq, typename disable_if >::type* = 0) - : base(base::from_iterator(fusion::begin(seq))) - {} - template - deque& - operator=(deque const& rhs) - { - base::operator=(rhs); - return *this; - } - template - deque& - operator=(T const& rhs) - { - base::operator=(rhs); - return *this; - } - }; -}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque30.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque30.hpp deleted file mode 100644 index fd1e7ccdf8..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque30.hpp +++ /dev/null @@ -1,140 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { - struct deque_tag; - template - struct deque - : - detail::deque_keyed_values::type, - sequence_base > - { - typedef deque_tag fusion_tag; - typedef bidirectional_traversal_tag category; - typedef typename detail::deque_keyed_values::type base; - typedef typename detail::deque_initial_size::type size; - typedef mpl::int_ next_up; - typedef mpl::int_< - mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; - typedef mpl::false_ is_view; -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - : base(detail::deque_keyed_values::call(t0 , t1)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - : base(detail::deque_keyed_values::call(t0 , t1 , t2)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) -{} - deque() - {} - explicit deque(typename add_reference::type>::type t0) - : base(t0, detail::nil_keyed_element()) - {} - template - deque(deque const& seq) - : base(seq) - {} - template - deque(Sequence const& seq, typename disable_if >::type* = 0) - : base(base::from_iterator(fusion::begin(seq))) - {} - template - deque& - operator=(deque const& rhs) - { - base::operator=(rhs); - return *this; - } - template - deque& - operator=(T const& rhs) - { - base::operator=(rhs); - return *this; - } - }; -}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque40.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque40.hpp deleted file mode 100644 index 5343685acc..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque40.hpp +++ /dev/null @@ -1,170 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { - struct deque_tag; - template - struct deque - : - detail::deque_keyed_values::type, - sequence_base > - { - typedef deque_tag fusion_tag; - typedef bidirectional_traversal_tag category; - typedef typename detail::deque_keyed_values::type base; - typedef typename detail::deque_initial_size::type size; - typedef mpl::int_ next_up; - typedef mpl::int_< - mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; - typedef mpl::false_ is_view; -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - : base(detail::deque_keyed_values::call(t0 , t1)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - : base(detail::deque_keyed_values::call(t0 , t1 , t2)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)) -{} - deque() - {} - explicit deque(typename add_reference::type>::type t0) - : base(t0, detail::nil_keyed_element()) - {} - template - deque(deque const& seq) - : base(seq) - {} - template - deque(Sequence const& seq, typename disable_if >::type* = 0) - : base(base::from_iterator(fusion::begin(seq))) - {} - template - deque& - operator=(deque const& rhs) - { - base::operator=(rhs); - return *this; - } - template - deque& - operator=(T const& rhs) - { - base::operator=(rhs); - return *this; - } - }; -}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque50.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque50.hpp deleted file mode 100644 index fc7d6b164f..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque50.hpp +++ /dev/null @@ -1,200 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { - struct deque_tag; - template - struct deque - : - detail::deque_keyed_values::type, - sequence_base > - { - typedef deque_tag fusion_tag; - typedef bidirectional_traversal_tag category; - typedef typename detail::deque_keyed_values::type base; - typedef typename detail::deque_initial_size::type size; - typedef mpl::int_ next_up; - typedef mpl::int_< - mpl::if_ >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down; - typedef mpl::false_ is_view; -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - : base(detail::deque_keyed_values::call(t0 , t1)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - : base(detail::deque_keyed_values::call(t0 , t1 , t2)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47 , typename add_reference::type>::type t48) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48)) -{} -deque(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47 , typename add_reference::type>::type t48 , typename add_reference::type>::type t49) - : base(detail::deque_keyed_values::call(t0 , t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48 , t49)) -{} - deque() - {} - explicit deque(typename add_reference::type>::type t0) - : base(t0, detail::nil_keyed_element()) - {} - template - deque(deque const& seq) - : base(seq) - {} - template - deque(Sequence const& seq, typename disable_if >::type* = 0) - : base(base::from_iterator(fusion::begin(seq))) - {} - template - deque& - operator=(deque const& rhs) - { - base::operator=(rhs); - return *this; - } - template - deque& - operator=(T const& rhs) - { - base::operator=(rhs); - return *this; - } - }; -}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values10.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values10.hpp deleted file mode 100644 index 904c48c62d..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values10.hpp +++ /dev/null @@ -1,117 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { namespace detail -{ - template - struct keyed_element; - struct nil_keyed_element; - template - struct deque_keyed_values_impl; - template - struct deque_keyed_values_impl - { - typedef nil_keyed_element type; - static type call() - { - return type(); - } - }; - template - struct deque_keyed_values_impl - { - typedef mpl::int_ >::value> next_index; - typedef typename deque_keyed_values_impl< - next_index, - T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9>::type tail; - typedef keyed_element type; - static type call(typename add_reference::type>::type t0) - { - return type(t0, - deque_keyed_values_impl< - next_index - >::call()); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 - >::call(t1)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 - >::call(t1 , t2)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 - >::call(t1 , t2 , t3)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 - >::call(t1 , t2 , t3 , t4)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 - >::call(t1 , t2 , t3 , t4 , t5)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 - >::call(t1 , t2 , t3 , t4 , t5 , t6)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); - } - }; - template - struct deque_keyed_values - : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> - {}; -}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values20.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values20.hpp deleted file mode 100644 index 391b2809a7..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values20.hpp +++ /dev/null @@ -1,197 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { namespace detail -{ - template - struct keyed_element; - struct nil_keyed_element; - template - struct deque_keyed_values_impl; - template - struct deque_keyed_values_impl - { - typedef nil_keyed_element type; - static type call() - { - return type(); - } - }; - template - struct deque_keyed_values_impl - { - typedef mpl::int_ >::value> next_index; - typedef typename deque_keyed_values_impl< - next_index, - T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19>::type tail; - typedef keyed_element type; - static type call(typename add_reference::type>::type t0) - { - return type(t0, - deque_keyed_values_impl< - next_index - >::call()); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 - >::call(t1)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 - >::call(t1 , t2)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 - >::call(t1 , t2 , t3)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 - >::call(t1 , t2 , t3 , t4)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 - >::call(t1 , t2 , t3 , t4 , t5)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 - >::call(t1 , t2 , t3 , t4 , t5 , t6)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)); - } - }; - template - struct deque_keyed_values - : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> - {}; -}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values30.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values30.hpp deleted file mode 100644 index 9ae6bf6110..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values30.hpp +++ /dev/null @@ -1,277 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { namespace detail -{ - template - struct keyed_element; - struct nil_keyed_element; - template - struct deque_keyed_values_impl; - template - struct deque_keyed_values_impl - { - typedef nil_keyed_element type; - static type call() - { - return type(); - } - }; - template - struct deque_keyed_values_impl - { - typedef mpl::int_ >::value> next_index; - typedef typename deque_keyed_values_impl< - next_index, - T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29>::type tail; - typedef keyed_element type; - static type call(typename add_reference::type>::type t0) - { - return type(t0, - deque_keyed_values_impl< - next_index - >::call()); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 - >::call(t1)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 - >::call(t1 , t2)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 - >::call(t1 , t2 , t3)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 - >::call(t1 , t2 , t3 , t4)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 - >::call(t1 , t2 , t3 , t4 , t5)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 - >::call(t1 , t2 , t3 , t4 , t5 , t6)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)); - } - }; - template - struct deque_keyed_values - : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> - {}; -}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values40.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values40.hpp deleted file mode 100644 index 8b427aee1a..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values40.hpp +++ /dev/null @@ -1,357 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { namespace detail -{ - template - struct keyed_element; - struct nil_keyed_element; - template - struct deque_keyed_values_impl; - template - struct deque_keyed_values_impl - { - typedef nil_keyed_element type; - static type call() - { - return type(); - } - }; - template - struct deque_keyed_values_impl - { - typedef mpl::int_ >::value> next_index; - typedef typename deque_keyed_values_impl< - next_index, - T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39>::type tail; - typedef keyed_element type; - static type call(typename add_reference::type>::type t0) - { - return type(t0, - deque_keyed_values_impl< - next_index - >::call()); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 - >::call(t1)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 - >::call(t1 , t2)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 - >::call(t1 , t2 , t3)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 - >::call(t1 , t2 , t3 , t4)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 - >::call(t1 , t2 , t3 , t4 , t5)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 - >::call(t1 , t2 , t3 , t4 , t5 , t6)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)); - } - }; - template - struct deque_keyed_values - : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> - {}; -}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values50.hpp b/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values50.hpp deleted file mode 100644 index 730ee2f12b..0000000000 --- a/3party/boost/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values50.hpp +++ /dev/null @@ -1,437 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ -namespace boost { namespace fusion { namespace detail -{ - template - struct keyed_element; - struct nil_keyed_element; - template - struct deque_keyed_values_impl; - template - struct deque_keyed_values_impl - { - typedef nil_keyed_element type; - static type call() - { - return type(); - } - }; - template - struct deque_keyed_values_impl - { - typedef mpl::int_ >::value> next_index; - typedef typename deque_keyed_values_impl< - next_index, - T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49>::type tail; - typedef keyed_element type; - static type call(typename add_reference::type>::type t0) - { - return type(t0, - deque_keyed_values_impl< - next_index - >::call()); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 - >::call(t1)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 - >::call(t1 , t2)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 - >::call(t1 , t2 , t3)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 - >::call(t1 , t2 , t3 , t4)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 - >::call(t1 , t2 , t3 , t4 , t5)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 - >::call(t1 , t2 , t3 , t4 , t5 , t6)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47 , typename add_reference::type>::type t48) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48)); - } - static type call(typename add_reference::type>::type t0 , typename add_reference::type>::type t1 , typename add_reference::type>::type t2 , typename add_reference::type>::type t3 , typename add_reference::type>::type t4 , typename add_reference::type>::type t5 , typename add_reference::type>::type t6 , typename add_reference::type>::type t7 , typename add_reference::type>::type t8 , typename add_reference::type>::type t9 , typename add_reference::type>::type t10 , typename add_reference::type>::type t11 , typename add_reference::type>::type t12 , typename add_reference::type>::type t13 , typename add_reference::type>::type t14 , typename add_reference::type>::type t15 , typename add_reference::type>::type t16 , typename add_reference::type>::type t17 , typename add_reference::type>::type t18 , typename add_reference::type>::type t19 , typename add_reference::type>::type t20 , typename add_reference::type>::type t21 , typename add_reference::type>::type t22 , typename add_reference::type>::type t23 , typename add_reference::type>::type t24 , typename add_reference::type>::type t25 , typename add_reference::type>::type t26 , typename add_reference::type>::type t27 , typename add_reference::type>::type t28 , typename add_reference::type>::type t29 , typename add_reference::type>::type t30 , typename add_reference::type>::type t31 , typename add_reference::type>::type t32 , typename add_reference::type>::type t33 , typename add_reference::type>::type t34 , typename add_reference::type>::type t35 , typename add_reference::type>::type t36 , typename add_reference::type>::type t37 , typename add_reference::type>::type t38 , typename add_reference::type>::type t39 , typename add_reference::type>::type t40 , typename add_reference::type>::type t41 , typename add_reference::type>::type t42 , typename add_reference::type>::type t43 , typename add_reference::type>::type t44 , typename add_reference::type>::type t45 , typename add_reference::type>::type t46 , typename add_reference::type>::type t47 , typename add_reference::type>::type t48 , typename add_reference::type>::type t49) - { - return type(t0, - deque_keyed_values_impl< - next_index - , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 - >::call(t1 , t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 , t11 , t12 , t13 , t14 , t15 , t16 , t17 , t18 , t19 , t20 , t21 , t22 , t23 , t24 , t25 , t26 , t27 , t28 , t29 , t30 , t31 , t32 , t33 , t34 , t35 , t36 , t37 , t38 , t39 , t40 , t41 , t42 , t43 , t44 , t45 , t46 , t47 , t48 , t49)); - } - }; - template - struct deque_keyed_values - : deque_keyed_values_impl, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> - {}; -}}} diff --git a/3party/boost/boost/fusion/container/deque/detail/value_at_impl.hpp b/3party/boost/boost/fusion/container/deque/detail/value_at_impl.hpp index cba31a3e0a..f15dee01f8 100644 --- a/3party/boost/boost/fusion/container/deque/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/container/deque/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756) #define BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756 +#include #include #include diff --git a/3party/boost/boost/fusion/container/deque/front_extended_deque.hpp b/3party/boost/boost/fusion/container/deque/front_extended_deque.hpp index 2f3654ede2..31336f31d6 100644 --- a/3party/boost/boost/fusion/container/deque/front_extended_deque.hpp +++ b/3party/boost/boost/fusion/container/deque/front_extended_deque.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209) #define BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209 +#include #include #include #include @@ -26,17 +27,20 @@ namespace boost { namespace fusion typedef mpl::int_<(result_of::size::value + 1)> size; template + BOOST_FUSION_GPU_ENABLED front_extended_deque(Deque const& deque, Arg const& val) : base(val, deque) {} -#if defined(BOOST_NO_RVALUE_REFERENCES) +#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED front_extended_deque(Deque const& deque, Arg& val) : base(val, deque) {} #else template + BOOST_FUSION_GPU_ENABLED front_extended_deque(Deque const& deque, Arg&& val) : base(std::forward(val), deque) {} diff --git a/3party/boost/boost/fusion/container/generation.hpp b/3party/boost/boost/fusion/container/generation.hpp index 49d45757a5..98e0298b4a 100644 --- a/3party/boost/boost/fusion/container/generation.hpp +++ b/3party/boost/boost/fusion/container/generation.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_GENERATION_10022005_0615) #define FUSION_SEQUENCE_GENERATION_10022005_0615 +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/generation/cons_tie.hpp b/3party/boost/boost/fusion/container/generation/cons_tie.hpp index 4459e0c37a..5987fd5f26 100644 --- a/3party/boost/boost/fusion/container/generation/cons_tie.hpp +++ b/3party/boost/boost/fusion/container/generation/cons_tie.hpp @@ -7,15 +7,16 @@ #if !defined(FUSION_CONS_TIE_07182005_0854) #define FUSION_CONS_TIE_07182005_0854 +#include #include namespace boost { namespace fusion { - struct nil; + struct nil_; namespace result_of { - template + template struct cons_tie { typedef cons type; @@ -24,6 +25,7 @@ namespace boost { namespace fusion // $$$ do we really want a cons_tie? $$$ template + BOOST_FUSION_GPU_ENABLED inline cons cons_tie(Car& car) { @@ -32,6 +34,7 @@ namespace boost { namespace fusion // $$$ do we really want a cons_tie? $$$ template + BOOST_FUSION_GPU_ENABLED inline cons cons_tie(Car& car, Cdr const& cdr) { diff --git a/3party/boost/boost/fusion/container/generation/deque_tie.hpp b/3party/boost/boost/fusion/container/generation/deque_tie.hpp index ea0afb92c9..727d984fe4 100644 --- a/3party/boost/boost/fusion/container/generation/deque_tie.hpp +++ b/3party/boost/boost/fusion/container/generation/deque_tie.hpp @@ -1,41 +1,24 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2006 Dan Marsden + Copyright (c) 2001-2013 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_DEQUE_TIE_07192005_1242) -#define FUSION_DEQUE_TIE_07192005_1242 +#if !defined(FUSION_DEQUE_TIE_01272013_1401) +#define FUSION_DEQUE_TIE_01272013_1401 -#include -#include -#include -#include -#include -#include +#include #include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +# include #else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/deque_tie" FUSION_MAX_DEQUE_SIZE_STR".hpp") -#endif -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman +/////////////////////////////////////////////////////////////////////////////// +// C++11 variadic interface +/////////////////////////////////////////////////////////////////////////////// - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif +#include namespace boost { namespace fusion { @@ -43,63 +26,22 @@ namespace boost { namespace fusion namespace result_of { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_DEQUE_SIZE, typename T, void_) - , typename Extra = void_ - > - struct deque_tie; - } - -#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_REF - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) - #define TEXT(z, n, text) , text - struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) > - #undef TEXT -#else - struct deque_tie -#endif + template + struct deque_tie { - typedef deque type; + typedef deque type; }; } - template - inline deque - deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) + template + BOOST_FUSION_GPU_ENABLED + inline deque + deque_tie(T&... arg) { - return deque( - BOOST_PP_ENUM_PARAMS(N, _)); + return deque(arg...); } + }} -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) +#endif +#endif diff --git a/3party/boost/boost/fusion/container/generation/detail/pp_deque_tie.hpp b/3party/boost/boost/fusion/container/generation/detail/pp_deque_tie.hpp new file mode 100644 index 0000000000..c3d7fc680e --- /dev/null +++ b/3party/boost/boost/fusion/container/generation/detail/pp_deque_tie.hpp @@ -0,0 +1,102 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_PP_DEQUE_TIE_07192005_1242) +#define FUSION_PP_DEQUE_TIE_07192005_1242 + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/deque_tie" FUSION_MAX_DEQUE_SIZE_STR ".hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_DEQUE_SIZE, typename T, void_) + , typename Extra = void_ + > + struct deque_tie; + } + +#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)& + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_REF + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + #define TEXT(z, n, text) , text + struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) > + #undef TEXT + { + typedef deque type; + }; + } + + template + BOOST_FUSION_GPU_ENABLED + inline deque + deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) + { + return deque( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/3party/boost/boost/fusion/container/generation/detail/pp_make_deque.hpp b/3party/boost/boost/fusion/container/generation/detail/pp_make_deque.hpp new file mode 100644 index 0000000000..843ae7597a --- /dev/null +++ b/3party/boost/boost/fusion/container/generation/detail/pp_make_deque.hpp @@ -0,0 +1,118 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_PP_MAKE_DEQUE_07162005_0243) +#define FUSION_MAKE_PP_DEQUE_07162005_0243 + +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/make_deque" FUSION_MAX_DEQUE_SIZE_STR ".hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_DEQUE_SIZE, typename T, void_) + , typename Extra = void_ + > + struct make_deque; + + template <> + struct make_deque<> + { + typedef deque<> type; + }; + } + + BOOST_FUSION_GPU_ENABLED inline deque<> + make_deque() + { + return deque<>(); + } + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ + typename detail::as_fusion_element::type + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_AS_FUSION_ELEMENT + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template + #define TEXT(z, n, text) , text + struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) > + #undef TEXT + { + typedef deque type; + }; + } + + template + BOOST_FUSION_GPU_ENABLED + inline deque + make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) + { + return deque( + BOOST_PP_ENUM_PARAMS(N, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/3party/boost/boost/fusion/container/generation/detail/pp_make_map.hpp b/3party/boost/boost/fusion/container/generation/detail/pp_make_map.hpp new file mode 100644 index 0000000000..062d3ac7e7 --- /dev/null +++ b/3party/boost/boost/fusion/container/generation/detail/pp_make_map.hpp @@ -0,0 +1,129 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_PP_MAKE_MAP_07222005_1247) +#define FUSION_PP_MAKE_MAP_07222005_1247 + +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/make_map" FUSION_MAX_MAP_SIZE_STR".hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename K, void_) + , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_VECTOR_SIZE, typename D, void_) + , typename Extra = void_ + > + struct make_map; + + template <> + struct make_map<> + { + typedef map<> type; + }; + } + + BOOST_FUSION_GPU_ENABLED inline map<> + make_map() + { + return map<>(); + } + +#define BOOST_FUSION_PAIR(z, n, data) \ + fusion::pair< \ + BOOST_PP_CAT(K, n) \ + , typename detail::as_fusion_element::type> + +#define BOOST_FUSION_MAKE_PAIR(z, n, data) \ + fusion::make_pair(BOOST_PP_CAT(_, n)) \ + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_PAIR +#undef BOOST_FUSION_MAKE_PAIR + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS(N, typename K) + , BOOST_PP_ENUM_PARAMS(N, typename D) + > + #define TEXT(z, n, text) , text + struct make_map + #undef TEXT + { + typedef map type; + }; + } + + template < + BOOST_PP_ENUM_PARAMS(N, typename K) + , BOOST_PP_ENUM_PARAMS(N, typename D) + > + BOOST_FUSION_GPU_ENABLED + inline map + make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _)) + { + return map( + BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/3party/boost/boost/fusion/container/generation/detail/pp_map_tie.hpp b/3party/boost/boost/fusion/container/generation/detail/pp_map_tie.hpp new file mode 100644 index 0000000000..fc8d8ce60c --- /dev/null +++ b/3party/boost/boost/fusion/container/generation/detail/pp_map_tie.hpp @@ -0,0 +1,132 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#ifndef BOOST_PP_IS_ITERATING +#if !defined(FUSION_PP_MAP_TIE_20060814_1116) +#define FUSION_PP_MAP_TIE_20060814_1116 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/map_tie" FUSION_MAX_MAP_SIZE_STR".hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_MAP_SIZE, typename K, void_) + , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_MAP_SIZE, typename D, void_) + , typename Extra = void_ + > + struct map_tie; + + template <> + struct map_tie<> + { + typedef map<> type; + }; + } + + BOOST_FUSION_GPU_ENABLED inline map<> + map_tie() + { + return map<>(); + } + +#define BOOST_FUSION_TIED_PAIR(z, n, data) \ + fusion::pair< \ + BOOST_PP_CAT(K, n) \ + , typename add_reference::type> + +#define BOOST_FUSION_PAIR_TIE(z, n, data) \ + fusion::pair_tie(BOOST_PP_CAT(_, n)) \ + +#define BOOST_PP_FILENAME_1 +#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) +#include BOOST_PP_ITERATE() + +#undef BOOST_FUSION_PAIR +#undef BOOST_FUSION_MAKE_PAIR + +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif +#else // defined(BOOST_PP_IS_ITERATING) +/////////////////////////////////////////////////////////////////////////////// +// +// Preprocessor vertical repetition code +// +/////////////////////////////////////////////////////////////////////////////// + +#define N BOOST_PP_ITERATION() + + namespace result_of + { + template < + BOOST_PP_ENUM_PARAMS(N, typename K) + , BOOST_PP_ENUM_PARAMS(N, typename D) + > + #define TEXT(z, n, text) , text + struct map_tie + #undef TEXT + { + typedef map type; + }; + } + + template < + BOOST_PP_ENUM_PARAMS(N, typename K) + , BOOST_PP_ENUM_PARAMS(N, typename D) + > + BOOST_FUSION_GPU_ENABLED + inline map + map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _)) + { + return map( + BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _)); + } + +#undef N +#endif // defined(BOOST_PP_IS_ITERATING) + diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp index 0fa5e8017a..4d73f24218 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie10.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp index 5002a2899d..81e30cc2e2 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie20.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp index 5d59f65743..08015e7d20 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie30.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp index 7701834a78..39a1a7e514 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie40.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { @@ -470,12 +500,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30) { @@ -485,12 +516,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31) { @@ -500,12 +532,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32) { @@ -515,12 +548,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33) { @@ -530,12 +564,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34) { @@ -545,12 +580,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35) { @@ -560,12 +596,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36) { @@ -575,12 +612,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37) { @@ -590,12 +628,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38) { @@ -605,12 +644,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp index ccc36c89b7..4a84f5ce6c 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/deque_tie50.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { @@ -470,12 +500,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30) { @@ -485,12 +516,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31) { @@ -500,12 +532,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32) { @@ -515,12 +548,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33) { @@ -530,12 +564,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34) { @@ -545,12 +580,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35) { @@ -560,12 +596,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36) { @@ -575,12 +612,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37) { @@ -590,12 +628,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38) { @@ -605,12 +644,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39) { @@ -620,12 +660,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40) { @@ -635,12 +676,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41) { @@ -650,12 +692,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42) { @@ -665,12 +708,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43) { @@ -680,12 +724,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44) { @@ -695,12 +740,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , void_ , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45) { @@ -710,12 +756,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , void_ , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46) { @@ -725,12 +772,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , void_ , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47) { @@ -740,12 +788,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , void_ , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48) { @@ -755,12 +804,13 @@ namespace boost { namespace fusion namespace result_of { template - struct deque_tie + struct deque_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 , void_ > { typedef deque type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque deque_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48 , T49 & _49) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp index c68e7396b0..50233aa3aa 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie10.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp index bef1cbb4c8..b969fa1457 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie20.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp index d7d72361b7..0ccfd9c226 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie30.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp index 159e7c3e69..9721eb95b6 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie40.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { @@ -470,12 +500,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30) { @@ -485,12 +516,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31) { @@ -500,12 +532,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32) { @@ -515,12 +548,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33) { @@ -530,12 +564,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34) { @@ -545,12 +580,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35) { @@ -560,12 +596,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36) { @@ -575,12 +612,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37) { @@ -590,12 +628,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38) { @@ -605,12 +644,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp index 1890ba6aed..91217e1e99 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/list_tie50.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { @@ -470,12 +500,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30) { @@ -485,12 +516,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31) { @@ -500,12 +532,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32) { @@ -515,12 +548,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33) { @@ -530,12 +564,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34) { @@ -545,12 +580,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35) { @@ -560,12 +596,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36) { @@ -575,12 +612,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37) { @@ -590,12 +628,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38) { @@ -605,12 +644,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39) { @@ -620,12 +660,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40) { @@ -635,12 +676,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41) { @@ -650,12 +692,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42) { @@ -665,12 +708,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43) { @@ -680,12 +724,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44) { @@ -695,12 +740,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , void_ , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45) { @@ -710,12 +756,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , void_ , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46) { @@ -725,12 +772,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , void_ , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47) { @@ -740,12 +788,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , void_ , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48) { @@ -755,12 +804,13 @@ namespace boost { namespace fusion namespace result_of { template - struct list_tie + struct list_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 , void_ > { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48 , T49 & _49) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp index 336061aad0..44f8963249 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque10.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef deque<> type; }; } - inline deque<> + BOOST_FUSION_GPU_ENABLED inline deque<> make_deque() { return deque<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type> make_deque(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp index f2568cda0f..693e1a59b0 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque20.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef deque<> type; }; } - inline deque<> + BOOST_FUSION_GPU_ENABLED inline deque<> make_deque() { return deque<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type> make_deque(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp index e403f52693..c2e7871519 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque30.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef deque<> type; }; } - inline deque<> + BOOST_FUSION_GPU_ENABLED inline deque<> make_deque() { return deque<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type> make_deque(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp index 0033770b1d..a85aa36814 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque40.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef deque<> type; }; } - inline deque<> + BOOST_FUSION_GPU_ENABLED inline deque<> make_deque() { return deque<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type> make_deque(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -480,12 +510,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -495,12 +526,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -510,12 +542,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -525,12 +558,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -540,12 +574,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -555,12 +590,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -570,12 +606,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -585,12 +622,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -600,12 +638,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -615,12 +654,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp index 4bb5e1bb10..2a83a1452b 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_deque50.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef deque<> type; }; } - inline deque<> + BOOST_FUSION_GPU_ENABLED inline deque<> make_deque() { return deque<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type> make_deque(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -480,12 +510,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -495,12 +526,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -510,12 +542,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -525,12 +558,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -540,12 +574,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -555,12 +590,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -570,12 +606,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -585,12 +622,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -600,12 +638,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -615,12 +654,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { @@ -630,12 +670,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40) { @@ -645,12 +686,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41) { @@ -660,12 +702,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42) { @@ -675,12 +718,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43) { @@ -690,12 +734,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44) { @@ -705,12 +750,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , void_ , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45) { @@ -720,12 +766,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , void_ , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46) { @@ -735,12 +782,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , void_ , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47) { @@ -750,12 +798,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , void_ , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48) { @@ -765,12 +814,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_deque + struct make_deque< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 , void_ > { typedef deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline deque::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_deque(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48 , T49 const& _49) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list10.hpp index f12580708e..50cbce6932 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list10.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef list<> type; }; } - inline list<> + BOOST_FUSION_GPU_ENABLED inline list<> make_list() { return list<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type> make_list(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list20.hpp index 7abf884359..6a0da3a505 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list20.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef list<> type; }; } - inline list<> + BOOST_FUSION_GPU_ENABLED inline list<> make_list() { return list<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type> make_list(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list30.hpp index b751d295dd..b1bc97d23a 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list30.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef list<> type; }; } - inline list<> + BOOST_FUSION_GPU_ENABLED inline list<> make_list() { return list<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type> make_list(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list40.hpp index 0a737fda68..4db1de8466 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list40.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef list<> type; }; } - inline list<> + BOOST_FUSION_GPU_ENABLED inline list<> make_list() { return list<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type> make_list(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -480,12 +510,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -495,12 +526,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -510,12 +542,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -525,12 +558,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -540,12 +574,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -555,12 +590,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -570,12 +606,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -585,12 +622,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -600,12 +638,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -615,12 +654,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list50.hpp index b49a9bfcb1..c568dfe2e0 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_list50.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef list<> type; }; } - inline list<> + BOOST_FUSION_GPU_ENABLED inline list<> make_list() { return list<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type> make_list(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -480,12 +510,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -495,12 +526,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -510,12 +542,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -525,12 +558,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -540,12 +574,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -555,12 +590,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -570,12 +606,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -585,12 +622,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -600,12 +638,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -615,12 +654,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { @@ -630,12 +670,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40) { @@ -645,12 +686,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41) { @@ -660,12 +702,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42) { @@ -675,12 +718,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43) { @@ -690,12 +734,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44) { @@ -705,12 +750,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , void_ , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45) { @@ -720,12 +766,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , void_ , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46) { @@ -735,12 +782,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , void_ , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47) { @@ -750,12 +798,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , void_ , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48) { @@ -765,12 +814,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_list + struct make_list< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 , void_ > { typedef list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline list::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_list(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48 , T49 const& _49) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map10.hpp index 7032f862ba..61d05bf05a 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map10.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> make_map() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct make_map + struct make_map { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > make_map(D0 const& _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map20.hpp index 59054b1dc5..d706b65fc8 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map20.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> make_map() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct make_map + struct make_map { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > make_map(D0 const& _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9) { @@ -244,7 +254,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> > type; }; @@ -253,6 +263,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10) { @@ -265,7 +276,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> > type; }; @@ -274,6 +285,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11) { @@ -286,7 +298,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> > type; }; @@ -295,6 +307,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12) { @@ -307,7 +320,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> > type; }; @@ -316,6 +329,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13) { @@ -328,7 +342,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> > type; }; @@ -337,6 +351,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14) { @@ -349,7 +364,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> > type; }; @@ -358,6 +373,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15) { @@ -370,7 +386,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> > type; }; @@ -379,6 +395,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16) { @@ -391,7 +408,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> > type; }; @@ -400,6 +417,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17) { @@ -412,7 +430,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> > type; }; @@ -421,6 +439,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18) { @@ -433,7 +452,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> > type; }; @@ -442,6 +461,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map30.hpp index de495b5f1d..91f4f482f8 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map30.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> make_map() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct make_map + struct make_map { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > make_map(D0 const& _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9) { @@ -244,7 +254,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> > type; }; @@ -253,6 +263,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10) { @@ -265,7 +276,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> > type; }; @@ -274,6 +285,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11) { @@ -286,7 +298,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> > type; }; @@ -295,6 +307,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12) { @@ -307,7 +320,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> > type; }; @@ -316,6 +329,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13) { @@ -328,7 +342,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> > type; }; @@ -337,6 +351,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14) { @@ -349,7 +364,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> > type; }; @@ -358,6 +373,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15) { @@ -370,7 +386,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> > type; }; @@ -379,6 +395,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16) { @@ -391,7 +408,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> > type; }; @@ -400,6 +417,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17) { @@ -412,7 +430,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> > type; }; @@ -421,6 +439,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18) { @@ -433,7 +452,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> > type; }; @@ -442,6 +461,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19) { @@ -454,7 +474,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> > type; }; @@ -463,6 +483,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20) { @@ -475,7 +496,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> > type; }; @@ -484,6 +505,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21) { @@ -496,7 +518,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> > type; }; @@ -505,6 +527,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22) { @@ -517,7 +540,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> > type; }; @@ -526,6 +549,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23) { @@ -538,7 +562,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> > type; }; @@ -547,6 +571,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24) { @@ -559,7 +584,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> > type; }; @@ -568,6 +593,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25) { @@ -580,7 +606,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> > type; }; @@ -589,6 +615,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26) { @@ -601,7 +628,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> > type; }; @@ -610,6 +637,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27) { @@ -622,7 +650,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> > type; }; @@ -631,6 +659,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28) { @@ -643,7 +672,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> > type; }; @@ -652,6 +681,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map40.hpp index 94920d156a..1947140009 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map40.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> make_map() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct make_map + struct make_map { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > make_map(D0 const& _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9) { @@ -244,7 +254,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> > type; }; @@ -253,6 +263,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10) { @@ -265,7 +276,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> > type; }; @@ -274,6 +285,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11) { @@ -286,7 +298,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> > type; }; @@ -295,6 +307,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12) { @@ -307,7 +320,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> > type; }; @@ -316,6 +329,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13) { @@ -328,7 +342,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> > type; }; @@ -337,6 +351,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14) { @@ -349,7 +364,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> > type; }; @@ -358,6 +373,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15) { @@ -370,7 +386,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> > type; }; @@ -379,6 +395,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16) { @@ -391,7 +408,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> > type; }; @@ -400,6 +417,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17) { @@ -412,7 +430,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> > type; }; @@ -421,6 +439,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18) { @@ -433,7 +452,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> > type; }; @@ -442,6 +461,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19) { @@ -454,7 +474,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> > type; }; @@ -463,6 +483,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20) { @@ -475,7 +496,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> > type; }; @@ -484,6 +505,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21) { @@ -496,7 +518,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> > type; }; @@ -505,6 +527,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22) { @@ -517,7 +540,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> > type; }; @@ -526,6 +549,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23) { @@ -538,7 +562,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> > type; }; @@ -547,6 +571,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24) { @@ -559,7 +584,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> > type; }; @@ -568,6 +593,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25) { @@ -580,7 +606,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> > type; }; @@ -589,6 +615,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26) { @@ -601,7 +628,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> > type; }; @@ -610,6 +637,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27) { @@ -622,7 +650,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> > type; }; @@ -631,6 +659,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28) { @@ -643,7 +672,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> > type; }; @@ -652,6 +681,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29) { @@ -664,7 +694,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> > type; }; @@ -673,6 +703,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30) { @@ -685,7 +716,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> > type; }; @@ -694,6 +725,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31) { @@ -706,7 +738,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> > type; }; @@ -715,6 +747,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32) { @@ -727,7 +760,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> > type; }; @@ -736,6 +769,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33) { @@ -748,7 +782,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> > type; }; @@ -757,6 +791,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34) { @@ -769,7 +804,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> > type; }; @@ -778,6 +813,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35) { @@ -790,7 +826,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> > type; }; @@ -799,6 +835,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36) { @@ -811,7 +848,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> > type; }; @@ -820,6 +857,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37) { @@ -832,7 +870,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> > type; }; @@ -841,6 +879,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38) { @@ -853,7 +892,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> > type; }; @@ -862,6 +901,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map50.hpp index 16dbcf75dd..f0fd8482a3 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_map50.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> make_map() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct make_map + struct make_map { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > make_map(D0 const& _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9) { @@ -244,7 +254,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> > type; }; @@ -253,6 +263,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10) { @@ -265,7 +276,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> > type; }; @@ -274,6 +285,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11) { @@ -286,7 +298,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> > type; }; @@ -295,6 +307,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12) { @@ -307,7 +320,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> > type; }; @@ -316,6 +329,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13) { @@ -328,7 +342,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> > type; }; @@ -337,6 +351,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14) { @@ -349,7 +364,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> > type; }; @@ -358,6 +373,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15) { @@ -370,7 +386,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> > type; }; @@ -379,6 +395,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16) { @@ -391,7 +408,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> > type; }; @@ -400,6 +417,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17) { @@ -412,7 +430,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> > type; }; @@ -421,6 +439,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18) { @@ -433,7 +452,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> > type; }; @@ -442,6 +461,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19) { @@ -454,7 +474,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> > type; }; @@ -463,6 +483,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20) { @@ -475,7 +496,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> > type; }; @@ -484,6 +505,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21) { @@ -496,7 +518,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> > type; }; @@ -505,6 +527,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22) { @@ -517,7 +540,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> > type; }; @@ -526,6 +549,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23) { @@ -538,7 +562,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> > type; }; @@ -547,6 +571,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24) { @@ -559,7 +584,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> > type; }; @@ -568,6 +593,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25) { @@ -580,7 +606,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> > type; }; @@ -589,6 +615,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26) { @@ -601,7 +628,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> > type; }; @@ -610,6 +637,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27) { @@ -622,7 +650,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> > type; }; @@ -631,6 +659,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28) { @@ -643,7 +672,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> > type; }; @@ -652,6 +681,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29) { @@ -664,7 +694,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> > type; }; @@ -673,6 +703,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30) { @@ -685,7 +716,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> > type; }; @@ -694,6 +725,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31) { @@ -706,7 +738,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> > type; }; @@ -715,6 +747,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32) { @@ -727,7 +760,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> > type; }; @@ -736,6 +769,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33) { @@ -748,7 +782,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> > type; }; @@ -757,6 +791,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34) { @@ -769,7 +804,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> > type; }; @@ -778,6 +813,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35) { @@ -790,7 +826,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> > type; }; @@ -799,6 +835,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36) { @@ -811,7 +848,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> > type; }; @@ -820,6 +857,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37) { @@ -832,7 +870,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> > type; }; @@ -841,6 +879,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38) { @@ -853,7 +892,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> > type; }; @@ -862,6 +901,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39) { @@ -874,7 +914,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> > type; }; @@ -883,6 +923,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40) { @@ -895,7 +936,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> > type; }; @@ -904,6 +945,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41) { @@ -916,7 +958,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> > type; }; @@ -925,6 +967,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41 , D42 const& _42) { @@ -937,7 +980,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> > type; }; @@ -946,6 +989,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41 , D42 const& _42 , D43 const& _43) { @@ -958,7 +1002,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> > type; }; @@ -967,6 +1011,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41 , D42 const& _42 , D43 const& _43 , D44 const& _44) { @@ -979,7 +1024,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> > type; }; @@ -988,6 +1033,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41 , D42 const& _42 , D43 const& _43 , D44 const& _44 , D45 const& _45) { @@ -1000,7 +1046,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> , fusion::pair< K46 , typename detail::as_fusion_element::type> > type; }; @@ -1009,6 +1055,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> , fusion::pair< K46 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41 , D42 const& _42 , D43 const& _43 , D44 const& _44 , D45 const& _45 , D46 const& _46) { @@ -1021,7 +1068,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> , fusion::pair< K46 , typename detail::as_fusion_element::type> , fusion::pair< K47 , typename detail::as_fusion_element::type> > type; }; @@ -1030,6 +1077,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> , fusion::pair< K46 , typename detail::as_fusion_element::type> , fusion::pair< K47 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41 , D42 const& _42 , D43 const& _43 , D44 const& _44 , D45 const& _45 , D46 const& _46 , D47 const& _47) { @@ -1042,7 +1090,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename K48 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 , typename D48 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> , fusion::pair< K46 , typename detail::as_fusion_element::type> , fusion::pair< K47 , typename detail::as_fusion_element::type> , fusion::pair< K48 , typename detail::as_fusion_element::type> > type; }; @@ -1051,6 +1099,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename K48 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 , typename D48 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> , fusion::pair< K46 , typename detail::as_fusion_element::type> , fusion::pair< K47 , typename detail::as_fusion_element::type> , fusion::pair< K48 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41 , D42 const& _42 , D43 const& _43 , D44 const& _44 , D45 const& _45 , D46 const& _46 , D47 const& _47 , D48 const& _48) { @@ -1063,7 +1112,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename K48 , typename K49 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 , typename D48 , typename D49 > - struct make_map + struct make_map { typedef map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> , fusion::pair< K46 , typename detail::as_fusion_element::type> , fusion::pair< K47 , typename detail::as_fusion_element::type> , fusion::pair< K48 , typename detail::as_fusion_element::type> , fusion::pair< K49 , typename detail::as_fusion_element::type> > type; }; @@ -1072,6 +1121,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename K48 , typename K49 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 , typename D48 , typename D49 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename detail::as_fusion_element::type> , fusion::pair< K2 , typename detail::as_fusion_element::type> , fusion::pair< K3 , typename detail::as_fusion_element::type> , fusion::pair< K4 , typename detail::as_fusion_element::type> , fusion::pair< K5 , typename detail::as_fusion_element::type> , fusion::pair< K6 , typename detail::as_fusion_element::type> , fusion::pair< K7 , typename detail::as_fusion_element::type> , fusion::pair< K8 , typename detail::as_fusion_element::type> , fusion::pair< K9 , typename detail::as_fusion_element::type> , fusion::pair< K10 , typename detail::as_fusion_element::type> , fusion::pair< K11 , typename detail::as_fusion_element::type> , fusion::pair< K12 , typename detail::as_fusion_element::type> , fusion::pair< K13 , typename detail::as_fusion_element::type> , fusion::pair< K14 , typename detail::as_fusion_element::type> , fusion::pair< K15 , typename detail::as_fusion_element::type> , fusion::pair< K16 , typename detail::as_fusion_element::type> , fusion::pair< K17 , typename detail::as_fusion_element::type> , fusion::pair< K18 , typename detail::as_fusion_element::type> , fusion::pair< K19 , typename detail::as_fusion_element::type> , fusion::pair< K20 , typename detail::as_fusion_element::type> , fusion::pair< K21 , typename detail::as_fusion_element::type> , fusion::pair< K22 , typename detail::as_fusion_element::type> , fusion::pair< K23 , typename detail::as_fusion_element::type> , fusion::pair< K24 , typename detail::as_fusion_element::type> , fusion::pair< K25 , typename detail::as_fusion_element::type> , fusion::pair< K26 , typename detail::as_fusion_element::type> , fusion::pair< K27 , typename detail::as_fusion_element::type> , fusion::pair< K28 , typename detail::as_fusion_element::type> , fusion::pair< K29 , typename detail::as_fusion_element::type> , fusion::pair< K30 , typename detail::as_fusion_element::type> , fusion::pair< K31 , typename detail::as_fusion_element::type> , fusion::pair< K32 , typename detail::as_fusion_element::type> , fusion::pair< K33 , typename detail::as_fusion_element::type> , fusion::pair< K34 , typename detail::as_fusion_element::type> , fusion::pair< K35 , typename detail::as_fusion_element::type> , fusion::pair< K36 , typename detail::as_fusion_element::type> , fusion::pair< K37 , typename detail::as_fusion_element::type> , fusion::pair< K38 , typename detail::as_fusion_element::type> , fusion::pair< K39 , typename detail::as_fusion_element::type> , fusion::pair< K40 , typename detail::as_fusion_element::type> , fusion::pair< K41 , typename detail::as_fusion_element::type> , fusion::pair< K42 , typename detail::as_fusion_element::type> , fusion::pair< K43 , typename detail::as_fusion_element::type> , fusion::pair< K44 , typename detail::as_fusion_element::type> , fusion::pair< K45 , typename detail::as_fusion_element::type> , fusion::pair< K46 , typename detail::as_fusion_element::type> , fusion::pair< K47 , typename detail::as_fusion_element::type> , fusion::pair< K48 , typename detail::as_fusion_element::type> , fusion::pair< K49 , typename detail::as_fusion_element::type> > make_map(D0 const& _0 , D1 const& _1 , D2 const& _2 , D3 const& _3 , D4 const& _4 , D5 const& _5 , D6 const& _6 , D7 const& _7 , D8 const& _8 , D9 const& _9 , D10 const& _10 , D11 const& _11 , D12 const& _12 , D13 const& _13 , D14 const& _14 , D15 const& _15 , D16 const& _16 , D17 const& _17 , D18 const& _18 , D19 const& _19 , D20 const& _20 , D21 const& _21 , D22 const& _22 , D23 const& _23 , D24 const& _24 , D25 const& _25 , D26 const& _26 , D27 const& _27 , D28 const& _28 , D29 const& _29 , D30 const& _30 , D31 const& _31 , D32 const& _32 , D33 const& _33 , D34 const& _34 , D35 const& _35 , D36 const& _36 , D37 const& _37 , D38 const& _38 , D39 const& _39 , D40 const& _40 , D41 const& _41 , D42 const& _42 , D43 const& _43 , D44 const& _44 , D45 const& _45 , D46 const& _46 , D47 const& _47 , D48 const& _48 , D49 const& _49) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set10.hpp index 77c7b7f2fb..aed7574c12 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set10.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef set<> type; }; } - inline set<> + BOOST_FUSION_GPU_ENABLED inline set<> make_set() { return set<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type> make_set(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set20.hpp index e8c6c8d38f..6e1db0d0d1 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set20.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef set<> type; }; } - inline set<> + BOOST_FUSION_GPU_ENABLED inline set<> make_set() { return set<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type> make_set(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set30.hpp index 5afcc4e94a..951c9abfaa 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set30.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef set<> type; }; } - inline set<> + BOOST_FUSION_GPU_ENABLED inline set<> make_set() { return set<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type> make_set(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set40.hpp index 1329452bfd..c2246e225c 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set40.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef set<> type; }; } - inline set<> + BOOST_FUSION_GPU_ENABLED inline set<> make_set() { return set<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type> make_set(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -480,12 +510,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -495,12 +526,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -510,12 +542,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -525,12 +558,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -540,12 +574,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -555,12 +590,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -570,12 +606,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -585,12 +622,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -600,12 +638,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -615,12 +654,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set50.hpp index b5cb4ace55..c23dfcf9f2 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_set50.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef set<> type; }; } - inline set<> + BOOST_FUSION_GPU_ENABLED inline set<> make_set() { return set<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type> make_set(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -480,12 +510,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -495,12 +526,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -510,12 +542,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -525,12 +558,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -540,12 +574,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -555,12 +590,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -570,12 +606,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -585,12 +622,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -600,12 +638,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -615,12 +654,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { @@ -630,12 +670,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40) { @@ -645,12 +686,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41) { @@ -660,12 +702,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42) { @@ -675,12 +718,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43) { @@ -690,12 +734,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44) { @@ -705,12 +750,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , void_ , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45) { @@ -720,12 +766,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , void_ , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46) { @@ -735,12 +782,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , void_ , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47) { @@ -750,12 +798,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , void_ , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48) { @@ -765,12 +814,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_set + struct make_set< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 , void_ > { typedef set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline set::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_set(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48 , T49 const& _49) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp index 51e2665f8a..dbd7019c3f 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector10.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef vector0<> type; }; } - inline vector0<> + BOOST_FUSION_GPU_ENABLED inline vector0<> make_vector() { return vector0<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector1::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector1::type> make_vector(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector2::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector2::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ > { typedef vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ > { typedef vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ > { typedef vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ > { typedef vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ > { typedef vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp index 745a7f1193..c889232d00 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector20.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef vector0<> type; }; } - inline vector0<> + BOOST_FUSION_GPU_ENABLED inline vector0<> make_vector() { return vector0<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector1::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector1::type> make_vector(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector2::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector2::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector11::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector11::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector12::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector12::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector13::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector13::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector14::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector14::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector15::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector15::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ > { typedef vector16::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector16::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ > { typedef vector17::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector17::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ > { typedef vector18::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector18::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ > { typedef vector19::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector19::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ > { typedef vector20::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector20::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp index c663ff198a..8784e7e572 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector30.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef vector0<> type; }; } - inline vector0<> + BOOST_FUSION_GPU_ENABLED inline vector0<> make_vector() { return vector0<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector1::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector1::type> make_vector(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector2::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector2::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector11::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector11::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector12::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector12::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector13::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector13::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector14::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector14::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector15::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector15::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector16::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector16::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector17::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector17::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector18::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector18::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector19::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector19::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector20::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector20::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector21::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector21::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector22::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector22::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector23::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector23::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector24::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector24::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector25::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector25::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ > { typedef vector26::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector26::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ > { typedef vector27::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector27::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ > { typedef vector28::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector28::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ > { typedef vector29::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector29::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ > { typedef vector30::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector30::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp index dc18e461c6..59e991e8ea 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector40.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef vector0<> type; }; } - inline vector0<> + BOOST_FUSION_GPU_ENABLED inline vector0<> make_vector() { return vector0<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector1::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector1::type> make_vector(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector2::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector2::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector11::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector11::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector12::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector12::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector13::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector13::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector14::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector14::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector15::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector15::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector16::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector16::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector17::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector17::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector18::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector18::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector19::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector19::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector20::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector20::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector21::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector21::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector22::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector22::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector23::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector23::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector24::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector24::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector25::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector25::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector26::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector26::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector27::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector27::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector28::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector28::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector29::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector29::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector30::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector30::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -480,12 +510,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector31::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector31::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -495,12 +526,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector32::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector32::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -510,12 +542,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector33::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector33::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -525,12 +558,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector34::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector34::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -540,12 +574,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector35::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector35::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -555,12 +590,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ > { typedef vector36::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector36::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -570,12 +606,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ > { typedef vector37::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector37::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -585,12 +622,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ > { typedef vector38::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector38::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -600,12 +638,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ > { typedef vector39::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector39::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -615,12 +654,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ > { typedef vector40::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector40::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp index 3210541f65..cab2c79805 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/make_vector50.hpp @@ -22,7 +22,7 @@ namespace boost { namespace fusion typedef vector0<> type; }; } - inline vector0<> + BOOST_FUSION_GPU_ENABLED inline vector0<> make_vector() { return vector0<>(); @@ -30,12 +30,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector1::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector1::type> make_vector(T0 const& _0) { @@ -45,12 +46,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector2::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector2::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1) { @@ -60,12 +62,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector3::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -75,12 +78,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector4::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -90,12 +94,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector5::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -105,12 +110,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector6::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -120,12 +126,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector7::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -135,12 +142,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector8::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -150,12 +158,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector9::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -165,12 +174,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector10::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -180,12 +190,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector11::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector11::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -195,12 +206,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector12::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector12::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -210,12 +222,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector13::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector13::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -225,12 +238,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector14::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector14::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -240,12 +254,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector15::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector15::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -255,12 +270,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector16::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector16::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -270,12 +286,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector17::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector17::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -285,12 +302,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector18::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector18::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -300,12 +318,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector19::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector19::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -315,12 +334,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector20::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector20::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -330,12 +350,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector21::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector21::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -345,12 +366,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector22::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector22::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -360,12 +382,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector23::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector23::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -375,12 +398,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector24::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector24::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -390,12 +414,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector25::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector25::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -405,12 +430,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector26::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector26::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -420,12 +446,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector27::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector27::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -435,12 +462,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector28::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector28::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -450,12 +478,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector29::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector29::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -465,12 +494,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector30::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector30::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -480,12 +510,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector31::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector31::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -495,12 +526,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector32::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector32::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -510,12 +542,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector33::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector33::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -525,12 +558,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector34::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector34::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -540,12 +574,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector35::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector35::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -555,12 +590,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector36::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector36::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -570,12 +606,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector37::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector37::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -585,12 +622,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector38::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector38::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -600,12 +638,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector39::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector39::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -615,12 +654,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector40::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector40::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { @@ -630,12 +670,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector41::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector41::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40) { @@ -645,12 +686,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector42::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector42::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41) { @@ -660,12 +702,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector43::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector43::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42) { @@ -675,12 +718,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector44::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector44::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43) { @@ -690,12 +734,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector45::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector45::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44) { @@ -705,12 +750,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , void_ , void_ , void_ , void_ , void_ > { typedef vector46::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector46::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45) { @@ -720,12 +766,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , void_ , void_ , void_ , void_ > { typedef vector47::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector47::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46) { @@ -735,12 +782,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , void_ , void_ , void_ > { typedef vector48::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector48::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47) { @@ -750,12 +798,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , void_ , void_ > { typedef vector49::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector49::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48) { @@ -765,12 +814,13 @@ namespace boost { namespace fusion namespace result_of { template - struct make_vector + struct make_vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 , void_ > { typedef vector50::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector50::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_vector(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48 , T49 const& _49) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp index 01b17a5abc..195b4146f0 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie10.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> map_tie() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct map_tie + struct map_tie { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > map_tie(D0 & _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp index b40ba7de1a..a607a2dabc 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie20.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> map_tie() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct map_tie + struct map_tie { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > map_tie(D0 & _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9) { @@ -244,7 +254,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> > type; }; @@ -253,6 +263,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10) { @@ -265,7 +276,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> > type; }; @@ -274,6 +285,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11) { @@ -286,7 +298,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> > type; }; @@ -295,6 +307,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12) { @@ -307,7 +320,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> > type; }; @@ -316,6 +329,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13) { @@ -328,7 +342,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> > type; }; @@ -337,6 +351,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14) { @@ -349,7 +364,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> > type; }; @@ -358,6 +373,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15) { @@ -370,7 +386,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> > type; }; @@ -379,6 +395,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16) { @@ -391,7 +408,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> > type; }; @@ -400,6 +417,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17) { @@ -412,7 +430,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> > type; }; @@ -421,6 +439,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18) { @@ -433,7 +452,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> > type; }; @@ -442,6 +461,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp index d7eb6dcaf8..911ab8ed64 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie30.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> map_tie() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct map_tie + struct map_tie { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > map_tie(D0 & _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9) { @@ -244,7 +254,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> > type; }; @@ -253,6 +263,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10) { @@ -265,7 +276,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> > type; }; @@ -274,6 +285,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11) { @@ -286,7 +298,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> > type; }; @@ -295,6 +307,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12) { @@ -307,7 +320,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> > type; }; @@ -316,6 +329,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13) { @@ -328,7 +342,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> > type; }; @@ -337,6 +351,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14) { @@ -349,7 +364,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> > type; }; @@ -358,6 +373,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15) { @@ -370,7 +386,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> > type; }; @@ -379,6 +395,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16) { @@ -391,7 +408,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> > type; }; @@ -400,6 +417,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17) { @@ -412,7 +430,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> > type; }; @@ -421,6 +439,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18) { @@ -433,7 +452,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> > type; }; @@ -442,6 +461,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19) { @@ -454,7 +474,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> > type; }; @@ -463,6 +483,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20) { @@ -475,7 +496,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> > type; }; @@ -484,6 +505,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21) { @@ -496,7 +518,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> > type; }; @@ -505,6 +527,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22) { @@ -517,7 +540,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> > type; }; @@ -526,6 +549,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23) { @@ -538,7 +562,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> > type; }; @@ -547,6 +571,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24) { @@ -559,7 +584,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> > type; }; @@ -568,6 +593,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25) { @@ -580,7 +606,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> > type; }; @@ -589,6 +615,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26) { @@ -601,7 +628,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> > type; }; @@ -610,6 +637,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27) { @@ -622,7 +650,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> > type; }; @@ -631,6 +659,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28) { @@ -643,7 +672,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> > type; }; @@ -652,6 +681,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp index fdda20a4eb..05aba22b4f 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie40.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> map_tie() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct map_tie + struct map_tie { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > map_tie(D0 & _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9) { @@ -244,7 +254,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> > type; }; @@ -253,6 +263,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10) { @@ -265,7 +276,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> > type; }; @@ -274,6 +285,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11) { @@ -286,7 +298,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> > type; }; @@ -295,6 +307,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12) { @@ -307,7 +320,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> > type; }; @@ -316,6 +329,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13) { @@ -328,7 +342,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> > type; }; @@ -337,6 +351,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14) { @@ -349,7 +364,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> > type; }; @@ -358,6 +373,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15) { @@ -370,7 +386,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> > type; }; @@ -379,6 +395,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16) { @@ -391,7 +408,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> > type; }; @@ -400,6 +417,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17) { @@ -412,7 +430,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> > type; }; @@ -421,6 +439,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18) { @@ -433,7 +452,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> > type; }; @@ -442,6 +461,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19) { @@ -454,7 +474,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> > type; }; @@ -463,6 +483,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20) { @@ -475,7 +496,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> > type; }; @@ -484,6 +505,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21) { @@ -496,7 +518,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> > type; }; @@ -505,6 +527,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22) { @@ -517,7 +540,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> > type; }; @@ -526,6 +549,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23) { @@ -538,7 +562,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> > type; }; @@ -547,6 +571,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24) { @@ -559,7 +584,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> > type; }; @@ -568,6 +593,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25) { @@ -580,7 +606,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> > type; }; @@ -589,6 +615,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26) { @@ -601,7 +628,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> > type; }; @@ -610,6 +637,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27) { @@ -622,7 +650,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> > type; }; @@ -631,6 +659,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28) { @@ -643,7 +672,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> > type; }; @@ -652,6 +681,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29) { @@ -664,7 +694,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> > type; }; @@ -673,6 +703,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30) { @@ -685,7 +716,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> > type; }; @@ -694,6 +725,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31) { @@ -706,7 +738,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> > type; }; @@ -715,6 +747,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32) { @@ -727,7 +760,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> > type; }; @@ -736,6 +769,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33) { @@ -748,7 +782,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> > type; }; @@ -757,6 +791,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34) { @@ -769,7 +804,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> > type; }; @@ -778,6 +813,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35) { @@ -790,7 +826,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> > type; }; @@ -799,6 +835,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36) { @@ -811,7 +848,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> > type; }; @@ -820,6 +857,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37) { @@ -832,7 +870,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> > type; }; @@ -841,6 +879,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38) { @@ -853,7 +892,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> > type; }; @@ -862,6 +901,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp index 5e26932c33..cb42fa7736 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/map_tie50.hpp @@ -23,7 +23,7 @@ namespace boost { namespace fusion typedef map<> type; }; } - inline map<> + BOOST_FUSION_GPU_ENABLED inline map<> map_tie() { return map<>(); @@ -34,7 +34,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > - struct map_tie + struct map_tie { typedef map::type> > type; }; @@ -43,6 +43,7 @@ namespace boost { namespace fusion typename K0 , typename D0 > + BOOST_FUSION_GPU_ENABLED inline map::type> > map_tie(D0 & _0) { @@ -55,7 +56,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> > type; }; @@ -64,6 +65,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename D0 , typename D1 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1) { @@ -76,7 +78,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > type; }; @@ -85,6 +87,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename D0 , typename D1 , typename D2 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2) { @@ -97,7 +100,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > type; }; @@ -106,6 +109,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename D0 , typename D1 , typename D2 , typename D3 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3) { @@ -118,7 +122,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > type; }; @@ -127,6 +131,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4) { @@ -139,7 +144,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > type; }; @@ -148,6 +153,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5) { @@ -160,7 +166,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > type; }; @@ -169,6 +175,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6) { @@ -181,7 +188,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > type; }; @@ -190,6 +197,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7) { @@ -202,7 +210,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > type; }; @@ -211,6 +219,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8) { @@ -223,7 +232,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > type; }; @@ -232,6 +241,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9) { @@ -244,7 +254,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> > type; }; @@ -253,6 +263,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10) { @@ -265,7 +276,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> > type; }; @@ -274,6 +285,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11) { @@ -286,7 +298,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> > type; }; @@ -295,6 +307,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12) { @@ -307,7 +320,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> > type; }; @@ -316,6 +329,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13) { @@ -328,7 +342,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> > type; }; @@ -337,6 +351,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14) { @@ -349,7 +364,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> > type; }; @@ -358,6 +373,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15) { @@ -370,7 +386,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> > type; }; @@ -379,6 +395,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16) { @@ -391,7 +408,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> > type; }; @@ -400,6 +417,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17) { @@ -412,7 +430,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> > type; }; @@ -421,6 +439,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18) { @@ -433,7 +452,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> > type; }; @@ -442,6 +461,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19) { @@ -454,7 +474,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> > type; }; @@ -463,6 +483,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20) { @@ -475,7 +496,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> > type; }; @@ -484,6 +505,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21) { @@ -496,7 +518,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> > type; }; @@ -505,6 +527,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22) { @@ -517,7 +540,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> > type; }; @@ -526,6 +549,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23) { @@ -538,7 +562,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> > type; }; @@ -547,6 +571,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24) { @@ -559,7 +584,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> > type; }; @@ -568,6 +593,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25) { @@ -580,7 +606,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> > type; }; @@ -589,6 +615,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26) { @@ -601,7 +628,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> > type; }; @@ -610,6 +637,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27) { @@ -622,7 +650,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> > type; }; @@ -631,6 +659,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28) { @@ -643,7 +672,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> > type; }; @@ -652,6 +681,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29) { @@ -664,7 +694,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> > type; }; @@ -673,6 +703,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30) { @@ -685,7 +716,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> > type; }; @@ -694,6 +725,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31) { @@ -706,7 +738,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> > type; }; @@ -715,6 +747,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32) { @@ -727,7 +760,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> > type; }; @@ -736,6 +769,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33) { @@ -748,7 +782,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> > type; }; @@ -757,6 +791,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34) { @@ -769,7 +804,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> > type; }; @@ -778,6 +813,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35) { @@ -790,7 +826,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> > type; }; @@ -799,6 +835,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36) { @@ -811,7 +848,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> > type; }; @@ -820,6 +857,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37) { @@ -832,7 +870,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> > type; }; @@ -841,6 +879,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38) { @@ -853,7 +892,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> > type; }; @@ -862,6 +901,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39) { @@ -874,7 +914,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> > type; }; @@ -883,6 +923,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40) { @@ -895,7 +936,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> > type; }; @@ -904,6 +945,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41) { @@ -916,7 +958,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> > type; }; @@ -925,6 +967,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41 , D42 & _42) { @@ -937,7 +980,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> > type; }; @@ -946,6 +989,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41 , D42 & _42 , D43 & _43) { @@ -958,7 +1002,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> > type; }; @@ -967,6 +1011,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41 , D42 & _42 , D43 & _43 , D44 & _44) { @@ -979,7 +1024,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> > type; }; @@ -988,6 +1033,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41 , D42 & _42 , D43 & _43 , D44 & _44 , D45 & _45) { @@ -1000,7 +1046,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> , fusion::pair< K46 , typename add_reference::type> > type; }; @@ -1009,6 +1055,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> , fusion::pair< K46 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41 , D42 & _42 , D43 & _43 , D44 & _44 , D45 & _45 , D46 & _46) { @@ -1021,7 +1068,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> , fusion::pair< K46 , typename add_reference::type> , fusion::pair< K47 , typename add_reference::type> > type; }; @@ -1030,6 +1077,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> , fusion::pair< K46 , typename add_reference::type> , fusion::pair< K47 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41 , D42 & _42 , D43 & _43 , D44 & _44 , D45 & _45 , D46 & _46 , D47 & _47) { @@ -1042,7 +1090,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename K48 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 , typename D48 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> , fusion::pair< K46 , typename add_reference::type> , fusion::pair< K47 , typename add_reference::type> , fusion::pair< K48 , typename add_reference::type> > type; }; @@ -1051,6 +1099,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename K48 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 , typename D48 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> , fusion::pair< K46 , typename add_reference::type> , fusion::pair< K47 , typename add_reference::type> , fusion::pair< K48 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41 , D42 & _42 , D43 & _43 , D44 & _44 , D45 & _45 , D46 & _46 , D47 & _47 , D48 & _48) { @@ -1063,7 +1112,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename K48 , typename K49 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 , typename D48 , typename D49 > - struct map_tie + struct map_tie { typedef map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> , fusion::pair< K46 , typename add_reference::type> , fusion::pair< K47 , typename add_reference::type> , fusion::pair< K48 , typename add_reference::type> , fusion::pair< K49 , typename add_reference::type> > type; }; @@ -1072,6 +1121,7 @@ namespace boost { namespace fusion typename K0 , typename K1 , typename K2 , typename K3 , typename K4 , typename K5 , typename K6 , typename K7 , typename K8 , typename K9 , typename K10 , typename K11 , typename K12 , typename K13 , typename K14 , typename K15 , typename K16 , typename K17 , typename K18 , typename K19 , typename K20 , typename K21 , typename K22 , typename K23 , typename K24 , typename K25 , typename K26 , typename K27 , typename K28 , typename K29 , typename K30 , typename K31 , typename K32 , typename K33 , typename K34 , typename K35 , typename K36 , typename K37 , typename K38 , typename K39 , typename K40 , typename K41 , typename K42 , typename K43 , typename K44 , typename K45 , typename K46 , typename K47 , typename K48 , typename K49 , typename D0 , typename D1 , typename D2 , typename D3 , typename D4 , typename D5 , typename D6 , typename D7 , typename D8 , typename D9 , typename D10 , typename D11 , typename D12 , typename D13 , typename D14 , typename D15 , typename D16 , typename D17 , typename D18 , typename D19 , typename D20 , typename D21 , typename D22 , typename D23 , typename D24 , typename D25 , typename D26 , typename D27 , typename D28 , typename D29 , typename D30 , typename D31 , typename D32 , typename D33 , typename D34 , typename D35 , typename D36 , typename D37 , typename D38 , typename D39 , typename D40 , typename D41 , typename D42 , typename D43 , typename D44 , typename D45 , typename D46 , typename D47 , typename D48 , typename D49 > + BOOST_FUSION_GPU_ENABLED inline map::type> , fusion::pair< K1 , typename add_reference::type> , fusion::pair< K2 , typename add_reference::type> , fusion::pair< K3 , typename add_reference::type> , fusion::pair< K4 , typename add_reference::type> , fusion::pair< K5 , typename add_reference::type> , fusion::pair< K6 , typename add_reference::type> , fusion::pair< K7 , typename add_reference::type> , fusion::pair< K8 , typename add_reference::type> , fusion::pair< K9 , typename add_reference::type> , fusion::pair< K10 , typename add_reference::type> , fusion::pair< K11 , typename add_reference::type> , fusion::pair< K12 , typename add_reference::type> , fusion::pair< K13 , typename add_reference::type> , fusion::pair< K14 , typename add_reference::type> , fusion::pair< K15 , typename add_reference::type> , fusion::pair< K16 , typename add_reference::type> , fusion::pair< K17 , typename add_reference::type> , fusion::pair< K18 , typename add_reference::type> , fusion::pair< K19 , typename add_reference::type> , fusion::pair< K20 , typename add_reference::type> , fusion::pair< K21 , typename add_reference::type> , fusion::pair< K22 , typename add_reference::type> , fusion::pair< K23 , typename add_reference::type> , fusion::pair< K24 , typename add_reference::type> , fusion::pair< K25 , typename add_reference::type> , fusion::pair< K26 , typename add_reference::type> , fusion::pair< K27 , typename add_reference::type> , fusion::pair< K28 , typename add_reference::type> , fusion::pair< K29 , typename add_reference::type> , fusion::pair< K30 , typename add_reference::type> , fusion::pair< K31 , typename add_reference::type> , fusion::pair< K32 , typename add_reference::type> , fusion::pair< K33 , typename add_reference::type> , fusion::pair< K34 , typename add_reference::type> , fusion::pair< K35 , typename add_reference::type> , fusion::pair< K36 , typename add_reference::type> , fusion::pair< K37 , typename add_reference::type> , fusion::pair< K38 , typename add_reference::type> , fusion::pair< K39 , typename add_reference::type> , fusion::pair< K40 , typename add_reference::type> , fusion::pair< K41 , typename add_reference::type> , fusion::pair< K42 , typename add_reference::type> , fusion::pair< K43 , typename add_reference::type> , fusion::pair< K44 , typename add_reference::type> , fusion::pair< K45 , typename add_reference::type> , fusion::pair< K46 , typename add_reference::type> , fusion::pair< K47 , typename add_reference::type> , fusion::pair< K48 , typename add_reference::type> , fusion::pair< K49 , typename add_reference::type> > map_tie(D0 & _0 , D1 & _1 , D2 & _2 , D3 & _3 , D4 & _4 , D5 & _5 , D6 & _6 , D7 & _7 , D8 & _8 , D9 & _9 , D10 & _10 , D11 & _11 , D12 & _12 , D13 & _13 , D14 & _14 , D15 & _15 , D16 & _16 , D17 & _17 , D18 & _18 , D19 & _19 , D20 & _20 , D21 & _21 , D22 & _22 , D23 & _23 , D24 & _24 , D25 & _25 , D26 & _26 , D27 & _27 , D28 & _28 , D29 & _29 , D30 & _30 , D31 & _31 , D32 & _32 , D33 & _33 , D34 & _34 , D35 & _35 , D36 & _36 , D37 & _37 , D38 & _38 , D39 & _39 , D40 & _40 , D41 & _41 , D42 & _42 , D43 & _43 , D44 & _44 , D45 & _45 , D46 & _46 , D47 & _47 , D48 & _48 , D49 & _49) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp index 9e463b5a77..b68108b37a 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie10.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp index 20d6a5b9ac..6dd8741623 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie20.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp index dbfcd55300..e81978e8e9 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie30.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp index ff3ec3575a..d3725eb94e 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie40.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { @@ -470,12 +500,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30) { @@ -485,12 +516,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31) { @@ -500,12 +532,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32) { @@ -515,12 +548,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33) { @@ -530,12 +564,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34) { @@ -545,12 +580,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35) { @@ -560,12 +596,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36) { @@ -575,12 +612,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37) { @@ -590,12 +628,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38) { @@ -605,12 +644,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39) { diff --git a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp index 60814c395c..ad4f119aac 100644 --- a/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp +++ b/3party/boost/boost/fusion/container/generation/detail/preprocessed/vector_tie50.hpp @@ -20,12 +20,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0) { @@ -35,12 +36,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1) { @@ -50,12 +52,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -65,12 +68,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -80,12 +84,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -95,12 +100,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -110,12 +116,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -125,12 +132,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -140,12 +148,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -155,12 +164,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -170,12 +180,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -185,12 +196,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -200,12 +212,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -215,12 +228,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -230,12 +244,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -245,12 +260,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -260,12 +276,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -275,12 +292,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -290,12 +308,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -305,12 +324,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -320,12 +340,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -335,12 +356,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -350,12 +372,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -365,12 +388,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -380,12 +404,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -395,12 +420,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -410,12 +436,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -425,12 +452,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -440,12 +468,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -455,12 +484,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { @@ -470,12 +500,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30) { @@ -485,12 +516,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31) { @@ -500,12 +532,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32) { @@ -515,12 +548,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33) { @@ -530,12 +564,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34) { @@ -545,12 +580,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35) { @@ -560,12 +596,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36) { @@ -575,12 +612,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37) { @@ -590,12 +628,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38) { @@ -605,12 +644,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39) { @@ -620,12 +660,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40) { @@ -635,12 +676,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41) { @@ -650,12 +692,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42) { @@ -665,12 +708,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , void_ , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43) { @@ -680,12 +724,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , void_ , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44) { @@ -695,12 +740,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , void_ , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45) { @@ -710,12 +756,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , void_ , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46) { @@ -725,12 +772,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , void_ , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47) { @@ -740,12 +788,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , void_ , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48) { @@ -755,12 +804,13 @@ namespace boost { namespace fusion namespace result_of { template - struct vector_tie + struct vector_tie< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49 , void_ > { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48 , T49 & _49) { diff --git a/3party/boost/boost/fusion/container/generation/ignore.hpp b/3party/boost/boost/fusion/container/generation/ignore.hpp index 8e1b00c947..0bebade465 100644 --- a/3party/boost/boost/fusion/container/generation/ignore.hpp +++ b/3party/boost/boost/fusion/container/generation/ignore.hpp @@ -17,6 +17,7 @@ namespace boost { namespace fusion struct swallow_assign { template + BOOST_FUSION_GPU_ENABLED swallow_assign const& operator=(const T&) const { diff --git a/3party/boost/boost/fusion/container/generation/list_tie.hpp b/3party/boost/boost/fusion/container/generation/list_tie.hpp index 2a663908c5..1631d0d365 100644 --- a/3party/boost/boost/fusion/container/generation/list_tie.hpp +++ b/3party/boost/boost/fusion/container/generation/list_tie.hpp @@ -80,19 +80,16 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct list_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) > #undef TEXT -#else - struct list_tie -#endif { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list list_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) { diff --git a/3party/boost/boost/fusion/container/generation/make_cons.hpp b/3party/boost/boost/fusion/container/generation/make_cons.hpp index dcb606dc9d..bb844ea38c 100644 --- a/3party/boost/boost/fusion/container/generation/make_cons.hpp +++ b/3party/boost/boost/fusion/container/generation/make_cons.hpp @@ -8,16 +8,17 @@ #if !defined(FUSION_MAKE_CONS_07172005_0918) #define FUSION_MAKE_CONS_07172005_0918 +#include #include #include namespace boost { namespace fusion { - struct nil; + struct nil_; namespace result_of { - template + template struct make_cons { typedef cons::type, Cdr> type; @@ -25,6 +26,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline cons::type> make_cons(Car const& car) { @@ -32,6 +34,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline cons::type, Cdr> make_cons(Car const& car, Cdr const& cdr) { diff --git a/3party/boost/boost/fusion/container/generation/make_deque.hpp b/3party/boost/boost/fusion/container/generation/make_deque.hpp index fdc7dce73f..20246f785c 100644 --- a/3party/boost/boost/fusion/container/generation/make_deque.hpp +++ b/3party/boost/boost/fusion/container/generation/make_deque.hpp @@ -1,124 +1,45 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2006 Dan Marsden + Copyright (c) 2001-2013 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman +#if !defined(FUSION_MAKE_DEQUE_01272013_1401) +#define FUSION_MAKE_DEQUE_01272013_1401 - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAKE_DEQUE_07162005_0243) -#define FUSION_MAKE_DEQUE_07162005_0243 - -#include -#include -#include -#include -#include +#include #include -#include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE) +# include #else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_deque" FUSION_MAX_DEQUE_SIZE_STR".hpp") -#endif -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman +/////////////////////////////////////////////////////////////////////////////// +// C++11 variadic interface +/////////////////////////////////////////////////////////////////////////////// - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif +#include namespace boost { namespace fusion { - struct void_; - namespace result_of { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_DEQUE_SIZE, typename T, void_) - , typename Extra = void_ - > - struct make_deque; - - template <> - struct make_deque<> + template + struct make_deque { - typedef deque<> type; + typedef deque type; }; } - inline deque<> - make_deque() + template + BOOST_FUSION_GPU_ENABLED + inline deque::type...> + make_deque(T const&... arg) { - return deque<>(); + return deque::type...>(arg...); } - -#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \ - typename detail::as_fusion_element::type - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_AS_FUSION_ELEMENT - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + }} #endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) - #define TEXT(z, n, text) , text - struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) > - #undef TEXT -#else - struct make_deque #endif - { - typedef deque type; - }; - } - - template - inline deque - make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) - { - return deque( - BOOST_PP_ENUM_PARAMS(N, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) diff --git a/3party/boost/boost/fusion/container/generation/make_list.hpp b/3party/boost/boost/fusion/container/generation/make_list.hpp index 1270839ef6..d1f9ea5721 100644 --- a/3party/boost/boost/fusion/container/generation/make_list.hpp +++ b/3party/boost/boost/fusion/container/generation/make_list.hpp @@ -56,7 +56,7 @@ namespace boost { namespace fusion }; } - inline list<> + BOOST_FUSION_GPU_ENABLED inline list<> make_list() { return list<>(); @@ -92,19 +92,16 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) > #undef TEXT -#else - struct make_list -#endif { typedef list type; }; } template + BOOST_FUSION_GPU_ENABLED inline list make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) { diff --git a/3party/boost/boost/fusion/container/generation/make_map.hpp b/3party/boost/boost/fusion/container/generation/make_map.hpp index 08938d4c3c..d2eb16e22c 100644 --- a/3party/boost/boost/fusion/container/generation/make_map.hpp +++ b/3party/boost/boost/fusion/container/generation/make_map.hpp @@ -1,132 +1,64 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2001-2013 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING #if !defined(FUSION_MAKE_MAP_07222005_1247) #define FUSION_MAKE_MAP_07222005_1247 -#include -#include -#include -#include -#include +#include #include + +#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) +# include +#else + +/////////////////////////////////////////////////////////////////////////////// +// C++11 variadic interface +/////////////////////////////////////////////////////////////////////////////// #include #include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/make_map" FUSION_MAX_MAP_SIZE_STR".hpp") -#endif - -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif - namespace boost { namespace fusion { - struct void_; - namespace result_of { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename K, void_) - , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_VECTOR_SIZE, typename D, void_) - , typename Extra = void_ - > - struct make_map; - - template <> - struct make_map<> + template + struct make_map { - typedef map<> type; + template + struct apply + { + typedef map< + fusion::pair< + Key + , typename detail::as_fusion_element::type + >...> + type; + }; }; } - inline map<> - make_map() + template + BOOST_FUSION_GPU_ENABLED + inline map< + fusion::pair< + Key + , typename detail::as_fusion_element::type + >...> + make_map(T const&... arg) { - return map<>(); + typedef map< + fusion::pair< + Key + , typename detail::as_fusion_element::type + >...> + result_type; + + return result_type(arg...); } - -#define BOOST_FUSION_PAIR(z, n, data) \ - fusion::pair< \ - BOOST_PP_CAT(K, n) \ - , typename detail::as_fusion_element::type> - -#define BOOST_FUSION_MAKE_PAIR(z, n, data) \ - fusion::make_pair(BOOST_PP_CAT(_, n)) \ - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_PAIR -#undef BOOST_FUSION_MAKE_PAIR - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + }} #endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS(N, typename K) - , BOOST_PP_ENUM_PARAMS(N, typename D) - > -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) - #define TEXT(z, n, text) , text - struct make_map - #undef TEXT -#else - struct make_map #endif - { - typedef map type; - }; - } - - template < - BOOST_PP_ENUM_PARAMS(N, typename K) - , BOOST_PP_ENUM_PARAMS(N, typename D) - > - inline map - make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _)) - { - return map( - BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/3party/boost/boost/fusion/container/generation/make_set.hpp b/3party/boost/boost/fusion/container/generation/make_set.hpp index 229f7d0dfb..4cd20ab77a 100644 --- a/3party/boost/boost/fusion/container/generation/make_set.hpp +++ b/3party/boost/boost/fusion/container/generation/make_set.hpp @@ -57,7 +57,7 @@ namespace boost { namespace fusion }; } - inline set<> + BOOST_FUSION_GPU_ENABLED inline set<> make_set() { return set<>(); @@ -94,19 +94,16 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) > #undef TEXT -#else - struct make_set -#endif { typedef set type; }; } template + BOOST_FUSION_GPU_ENABLED inline set make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) { diff --git a/3party/boost/boost/fusion/container/generation/make_vector.hpp b/3party/boost/boost/fusion/container/generation/make_vector.hpp index a6fd8323d0..4911f4bfd5 100644 --- a/3party/boost/boost/fusion/container/generation/make_vector.hpp +++ b/3party/boost/boost/fusion/container/generation/make_vector.hpp @@ -56,7 +56,7 @@ namespace boost { namespace fusion }; } - inline vector0<> + BOOST_FUSION_GPU_ENABLED inline vector0<> make_vector() { return vector0<>(); @@ -92,19 +92,16 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > #undef TEXT -#else - struct make_vector -#endif { typedef BOOST_PP_CAT(vector, N) type; }; } template + BOOST_FUSION_GPU_ENABLED inline BOOST_PP_CAT(vector, N) make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) { diff --git a/3party/boost/boost/fusion/container/generation/map_tie.hpp b/3party/boost/boost/fusion/container/generation/map_tie.hpp index 26fc2dfa82..4a988d4283 100644 --- a/3party/boost/boost/fusion/container/generation/map_tie.hpp +++ b/3party/boost/boost/fusion/container/generation/map_tie.hpp @@ -1,136 +1,48 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2006 Dan Marsden + Copyright (c) 2001-2013 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(FUSION_MAP_TIE_20060814_1116) -#define FUSION_MAP_TIE_20060814_1116 +#if !defined(FUSION_MAP_TIE_07222005_1247) +#define FUSION_MAP_TIE_07222005_1247 -#include -#include -#include -#include -#include +#include #include -#include -#include -#include -#include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) +# include #else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map_tie" FUSION_MAX_MAP_SIZE_STR".hpp") -#endif -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif +/////////////////////////////////////////////////////////////////////////////// +// C++11 variadic interface +/////////////////////////////////////////////////////////////////////////////// +#include namespace boost { namespace fusion { - struct void_; - namespace result_of { - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_MAP_SIZE, typename K, void_) - , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_MAP_SIZE, typename D, void_) - , typename Extra = void_ - > - struct map_tie; - - template <> - struct map_tie<> + template + struct map_tie { - typedef map<> type; + template + struct apply + { + typedef map...> type; + }; }; } - inline map<> - map_tie() + template + BOOST_FUSION_GPU_ENABLED + inline map...> + map_tie(T&... arg) { - return map<>(); + typedef map...> result_type; + return result_type(arg...); } - -#define BOOST_FUSION_TIED_PAIR(z, n, data) \ - fusion::pair< \ - BOOST_PP_CAT(K, n) \ - , typename add_reference::type> - -#define BOOST_FUSION_PAIR_TIE(z, n, data) \ - fusion::pair_tie(BOOST_PP_CAT(_, n)) \ - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_PAIR -#undef BOOST_FUSION_MAKE_PAIR - -}} - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) -#endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + }} #endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - namespace result_of - { - template < - BOOST_PP_ENUM_PARAMS(N, typename K) - , BOOST_PP_ENUM_PARAMS(N, typename D) - > -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) - #define TEXT(z, n, text) , text - - struct map_tie - #undef TEXT -#else - struct map_tie #endif - { - typedef map type; - }; - } - - template < - BOOST_PP_ENUM_PARAMS(N, typename K) - , BOOST_PP_ENUM_PARAMS(N, typename D) - > - inline map - map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _)) - { - return map( - BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _)); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/3party/boost/boost/fusion/container/generation/pair_tie.hpp b/3party/boost/boost/fusion/container/generation/pair_tie.hpp index 0f740a129e..b4fbc780bf 100644 --- a/3party/boost/boost/fusion/container/generation/pair_tie.hpp +++ b/3party/boost/boost/fusion/container/generation/pair_tie.hpp @@ -8,6 +8,7 @@ #if !defined (BOOST_FUSION_PAIR_TIE_20060812_2058) #define BOOST_FUSION_PAIR_TIE_20060812_2058 +#include #include #include @@ -26,6 +27,7 @@ namespace boost { namespace fusion { } template + BOOST_FUSION_GPU_ENABLED typename disable_if, typename result_of::pair_tie::type>::type pair_tie(T& t) { @@ -33,6 +35,7 @@ namespace boost { namespace fusion { } template + BOOST_FUSION_GPU_ENABLED typename result_of::pair_tie::type pair_tie(T const& t) { diff --git a/3party/boost/boost/fusion/container/generation/vector_tie.hpp b/3party/boost/boost/fusion/container/generation/vector_tie.hpp index 919b4f1e66..f71b7677be 100644 --- a/3party/boost/boost/fusion/container/generation/vector_tie.hpp +++ b/3party/boost/boost/fusion/container/generation/vector_tie.hpp @@ -78,19 +78,16 @@ namespace boost { namespace fusion namespace result_of { template -#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) #define TEXT(z, n, text) , text struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) > #undef TEXT -#else - struct vector_tie -#endif { typedef vector type; }; } template + BOOST_FUSION_GPU_ENABLED inline vector vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) { diff --git a/3party/boost/boost/fusion/container/list.hpp b/3party/boost/boost/fusion/container/list.hpp index 3e8c4d3e0b..bdb5dc9a02 100644 --- a/3party/boost/boost/fusion/container/list.hpp +++ b/3party/boost/boost/fusion/container/list.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_CLASS_LIST_10022005_0605) #define FUSION_SEQUENCE_CLASS_LIST_10022005_0605 +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/list/cons.hpp b/3party/boost/boost/fusion/container/list/cons.hpp index 666b5367b6..1de7048b63 100644 --- a/3party/boost/boost/fusion/container/list/cons.hpp +++ b/3party/boost/boost/fusion/container/list/cons.hpp @@ -8,12 +8,14 @@ #if !defined(FUSION_CONS_07172005_0843) #define FUSION_CONS_07172005_0843 +#include #include #include #include #include #include #include +#include #include #include #include @@ -34,29 +36,7 @@ namespace boost { namespace fusion struct forward_traversal_tag; struct fusion_sequence_tag; - struct nil : sequence_base - { - typedef mpl::int_<0> size; - typedef cons_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL - typedef mpl::false_ is_view; - typedef forward_traversal_tag category; - typedef void_ car_type; - typedef void_ cdr_type; - - nil() {} - - template - nil(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) - {} - - template - void assign_from_iter(Iterator const& /*iter*/) - { - } - }; - - template + template struct cons : sequence_base > { typedef mpl::int_ size; @@ -67,25 +47,31 @@ namespace boost { namespace fusion typedef Car car_type; typedef Cdr cdr_type; + BOOST_FUSION_GPU_ENABLED cons() : car(), cdr() {} + BOOST_FUSION_GPU_ENABLED explicit cons(typename detail::call_param::type in_car) : car(in_car), cdr() {} + BOOST_FUSION_GPU_ENABLED cons( typename detail::call_param::type in_car , typename detail::call_param::type in_cdr) : car(in_car), cdr(in_cdr) {} template + BOOST_FUSION_GPU_ENABLED cons(cons const& rhs) : car(rhs.car), cdr(rhs.cdr) {} + BOOST_FUSION_GPU_ENABLED cons(cons const& rhs) : car(rhs.car), cdr(rhs.cdr) {} template + BOOST_FUSION_GPU_ENABLED cons( Sequence const& seq , typename boost::disable_if< @@ -99,11 +85,13 @@ namespace boost { namespace fusion , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {} template + BOOST_FUSION_GPU_ENABLED cons(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/) : car(*iter) , cdr(fusion::next(iter), mpl::true_()) {} template + BOOST_FUSION_GPU_ENABLED cons& operator=(cons const& rhs) { car = rhs.car; @@ -111,6 +99,7 @@ namespace boost { namespace fusion return *this; } + BOOST_FUSION_GPU_ENABLED cons& operator=(cons const& rhs) { car = rhs.car; @@ -119,6 +108,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, cons&>::type operator=(Sequence const& seq) { @@ -129,6 +119,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED void assign_from_iter(Iterator const& iter) { car = *iter; diff --git a/3party/boost/boost/fusion/container/list/cons_fwd.hpp b/3party/boost/boost/fusion/container/list/cons_fwd.hpp index 80bb0443c8..547c42ca9b 100644 --- a/3party/boost/boost/fusion/container/list/cons_fwd.hpp +++ b/3party/boost/boost/fusion/container/list/cons_fwd.hpp @@ -2,7 +2,7 @@ Copyright (c) 2001-2011 Joel de Guzman Copyright (c) 2005 Eric Niebler - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(BOOST_FUSION_CONS_FWD_HPP_INCLUDED) @@ -10,9 +10,12 @@ namespace boost { namespace fusion { - struct nil; + struct nil_; + #ifndef nil + typedef nil_ nil; + #endif - template + template struct cons; }} diff --git a/3party/boost/boost/fusion/container/list/cons_iterator.hpp b/3party/boost/boost/fusion/container/list/cons_iterator.hpp index bc4fa0948c..42c023c16f 100644 --- a/3party/boost/boost/fusion/container/list/cons_iterator.hpp +++ b/3party/boost/boost/fusion/container/list/cons_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_CONS_ITERATOR_07172005_0849) #define FUSION_CONS_ITERATOR_07172005_0849 +#include #include #include #include @@ -18,14 +19,14 @@ namespace boost { namespace fusion { - struct nil; + struct nil_; struct cons_iterator_tag; struct forward_traversal_tag; template struct cons_iterator_identity; - template + template struct cons_iterator : iterator_base > { typedef cons_iterator_tag fusion_tag; @@ -35,6 +36,7 @@ namespace boost { namespace fusion typename add_const::type> identity; + BOOST_FUSION_GPU_ENABLED explicit cons_iterator(cons_type& in_cons) : cons(in_cons) {} @@ -49,40 +51,50 @@ namespace boost { namespace fusion { typedef forward_traversal_tag category; typedef cons_iterator_tag fusion_tag; - typedef nil cons_type; + typedef nil_ cons_type; typedef cons_iterator_identity< - add_const::type> + add_const::type> identity; + BOOST_FUSION_GPU_ENABLED nil_iterator() {} - explicit nil_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit nil_iterator(nil_ const&) {} }; template <> - struct cons_iterator : nil_iterator + struct cons_iterator : nil_iterator { + BOOST_FUSION_GPU_ENABLED cons_iterator() {} - explicit cons_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit cons_iterator(nil_ const&) {} }; template <> - struct cons_iterator : nil_iterator + struct cons_iterator : nil_iterator { + BOOST_FUSION_GPU_ENABLED cons_iterator() {} - explicit cons_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator > : nil_iterator { + BOOST_FUSION_GPU_ENABLED cons_iterator() {} - explicit cons_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator const> : nil_iterator { + BOOST_FUSION_GPU_ENABLED cons_iterator() {} - explicit cons_iterator(nil const&) {} + BOOST_FUSION_GPU_ENABLED + explicit cons_iterator(nil_ const&) {} }; }} diff --git a/3party/boost/boost/fusion/container/list/convert.hpp b/3party/boost/boost/fusion/container/list/convert.hpp index f356d7e0a1..f34ad396d4 100644 --- a/3party/boost/boost/fusion/container/list/convert.hpp +++ b/3party/boost/boost/fusion/container/list/convert.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CONVERT_09232005_1215) #define FUSION_CONVERT_09232005_1215 +#include #include #include #include @@ -30,6 +31,7 @@ namespace boost { namespace fusion typedef typename build_cons::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { @@ -39,6 +41,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_list::type as_list(Sequence& seq) { @@ -46,6 +49,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_list::type as_list(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/container/list/detail/at_impl.hpp b/3party/boost/boost/fusion/container/list/detail/at_impl.hpp index 757463928a..b7688522a3 100644 --- a/3party/boost/boost/fusion/container/list/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_AT_IMPL_07172005_0726) #define FUSION_AT_IMPL_07172005_0726 +#include #include #include #include @@ -106,6 +107,7 @@ namespace boost { namespace fusion type; template + BOOST_FUSION_GPU_ENABLED static type call(Cons& s, mpl::int_) { @@ -113,12 +115,14 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED static type call(Cons& s, mpl::int_<0>) { return s.car; } + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/container/list/detail/begin_impl.hpp b/3party/boost/boost/fusion/container/list/detail/begin_impl.hpp index 571e681111..a30223456c 100644 --- a/3party/boost/boost/fusion/container/list/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/begin_impl.hpp @@ -8,12 +8,13 @@ #if !defined(FUSION_BEGIN_IMPL_07172005_0824) #define FUSION_BEGIN_IMPL_07172005_0824 +#include #include #include namespace boost { namespace fusion { - struct nil; + struct nil_; struct cons_tag; @@ -36,6 +37,7 @@ namespace boost { namespace fusion { typedef cons_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& t) { diff --git a/3party/boost/boost/fusion/container/list/detail/build_cons.hpp b/3party/boost/boost/fusion/container/list/detail/build_cons.hpp index ef4865227f..0f40700896 100644 --- a/3party/boost/boost/fusion/container/list/detail/build_cons.hpp +++ b/3party/boost/boost/fusion/container/list/detail/build_cons.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BUILD_CONS_09232005_1222) #define FUSION_BUILD_CONS_09232005_1222 +#include #include #include #include @@ -24,12 +25,13 @@ namespace boost { namespace fusion { namespace detail template struct build_cons { - typedef nil type; + typedef nil_ type; - static nil + BOOST_FUSION_GPU_ENABLED + static nil_ call(First const&, Last const&) { - return nil(); + return nil_(); } }; @@ -45,6 +47,7 @@ namespace boost { namespace fusion { namespace detail , typename next_build_cons::type> type; + BOOST_FUSION_GPU_ENABLED static type call(First const& f, Last const& l) { diff --git a/3party/boost/boost/fusion/container/list/detail/convert_impl.hpp b/3party/boost/boost/fusion/container/list/detail/convert_impl.hpp index 19e5fc2f5f..000280e7c3 100644 --- a/3party/boost/boost/fusion/container/list/detail/convert_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/convert_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_CONVERT_IMPL_09232005_1215) #define FUSION_CONVERT_IMPL_09232005_1215 +#include #include #include #include @@ -38,6 +39,7 @@ namespace boost { namespace fusion typedef typename build_cons::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/container/list/detail/deref_impl.hpp b/3party/boost/boost/fusion/container/list/detail/deref_impl.hpp index a5f75eaeac..aefffd757f 100644 --- a/3party/boost/boost/fusion/container/list/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DEREF_IMPL_07172005_0831) #define FUSION_DEREF_IMPL_07172005_0831 +#include #include #include #include @@ -37,6 +38,7 @@ namespace boost { namespace fusion , add_reference >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/container/list/detail/empty_impl.hpp b/3party/boost/boost/fusion/container/list/detail/empty_impl.hpp index 5c92c7335e..e25eab0bcc 100644 --- a/3party/boost/boost/fusion/container/list/detail/empty_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/empty_impl.hpp @@ -7,13 +7,15 @@ #if !defined(BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED) #define BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED +#include #include +#include namespace boost { namespace fusion { struct cons_tag; - struct nil; + struct nil_; template struct cons; @@ -28,7 +30,7 @@ namespace boost { namespace fusion { template struct apply - : boost::is_convertible + : boost::is_convertible {}; }; } diff --git a/3party/boost/boost/fusion/container/list/detail/end_impl.hpp b/3party/boost/boost/fusion/container/list/detail/end_impl.hpp index 3792250c05..9220d24a78 100644 --- a/3party/boost/boost/fusion/container/list/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/end_impl.hpp @@ -8,12 +8,13 @@ #if !defined(FUSION_END_IMPL_07172005_0828) #define FUSION_END_IMPL_07172005_0828 +#include #include #include namespace boost { namespace fusion { - struct nil; + struct nil_; struct cons_tag; @@ -35,9 +36,10 @@ namespace boost { namespace fusion struct apply { typedef cons_iterator< - typename mpl::if_, nil const, nil>::type> + typename mpl::if_, nil_ const, nil_>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence&) { diff --git a/3party/boost/boost/fusion/container/list/detail/equal_to_impl.hpp b/3party/boost/boost/fusion/container/list/detail/equal_to_impl.hpp index a4d5929913..0cbb6bef4f 100644 --- a/3party/boost/boost/fusion/container/list/detail/equal_to_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/equal_to_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_EQUAL_TO_IMPL_09172005_1120) #define FUSION_EQUAL_TO_IMPL_09172005_1120 +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/list/detail/list_forward_ctor.hpp b/3party/boost/boost/fusion/container/list/detail/list_forward_ctor.hpp index 05edc4fe6c..941e2008d5 100644 --- a/3party/boost/boost/fusion/container/list/detail/list_forward_ctor.hpp +++ b/3party/boost/boost/fusion/container/list/detail/list_forward_ctor.hpp @@ -34,6 +34,7 @@ /////////////////////////////////////////////////////////////////////////////// #define N BOOST_PP_ITERATION() + BOOST_FUSION_GPU_ENABLED #if N == 1 explicit #endif diff --git a/3party/boost/boost/fusion/container/list/detail/list_to_cons.hpp b/3party/boost/boost/fusion/container/list/detail/list_to_cons.hpp index 4a7dbb8306..bc8718631c 100644 --- a/3party/boost/boost/fusion/container/list/detail/list_to_cons.hpp +++ b/3party/boost/boost/fusion/container/list/detail/list_to_cons.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_LIST_TO_CONS_07172005_1041) #define FUSION_LIST_TO_CONS_07172005_1041 +#include #include #include #include @@ -18,7 +19,7 @@ namespace boost { namespace fusion { - struct nil; + struct nil_; struct void_; }} @@ -61,7 +62,7 @@ namespace boost { namespace fusion { namespace detail template <> struct list_to_cons { - typedef nil type; + typedef nil_ type; }; }}} diff --git a/3party/boost/boost/fusion/container/list/detail/list_to_cons_call.hpp b/3party/boost/boost/fusion/container/list/detail/list_to_cons_call.hpp index 4e4c11a02a..430e462c9d 100644 --- a/3party/boost/boost/fusion/container/list/detail/list_to_cons_call.hpp +++ b/3party/boost/boost/fusion/container/list/detail/list_to_cons_call.hpp @@ -26,6 +26,7 @@ /////////////////////////////////////////////////////////////////////////////// #define N BOOST_PP_ITERATION() + BOOST_FUSION_GPU_ENABLED static type call(BOOST_PP_ENUM_BINARY_PARAMS( N, typename detail::call_param::type _)) diff --git a/3party/boost/boost/fusion/container/list/detail/next_impl.hpp b/3party/boost/boost/fusion/container/list/detail/next_impl.hpp index 71006e5bb6..7383a9630b 100644 --- a/3party/boost/boost/fusion/container/list/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_NEXT_IMPL_07172005_0836) #define FUSION_NEXT_IMPL_07172005_0836 +#include #include #include #include @@ -44,6 +45,7 @@ namespace boost { namespace fusion >::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list10.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list10.hpp index e233b46d44..c8aa725e0c 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list10.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list10.hpp @@ -8,7 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct nil; + struct nil_; struct void_; template struct list @@ -20,12 +20,15 @@ namespace boost { namespace fusion list_to_cons; public: typedef typename list_to_cons::type inherited_type; + BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} template + BOOST_FUSION_GPU_ENABLED list(list const& rhs) : inherited_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs) : inherited_type(rhs) {} @@ -35,38 +38,49 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit list(typename detail::call_param::type _0) : inherited_type(list_to_cons::call(_0)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1) : inherited_type(list_to_cons::call(_0 , _1)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : inherited_type(list_to_cons::call(_0 , _1 , _2)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)) {} template + BOOST_FUSION_GPU_ENABLED list& operator=(list const& rhs) { @@ -74,6 +88,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED list& operator=(T const& rhs) { diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list20.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list20.hpp index 405681a161..d18fc580cf 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list20.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list20.hpp @@ -8,7 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct nil; + struct nil_; struct void_; template struct list @@ -20,12 +20,15 @@ namespace boost { namespace fusion list_to_cons; public: typedef typename list_to_cons::type inherited_type; + BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} template + BOOST_FUSION_GPU_ENABLED list(list const& rhs) : inherited_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs) : inherited_type(rhs) {} @@ -35,68 +38,89 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit list(typename detail::call_param::type _0) : inherited_type(list_to_cons::call(_0)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1) : inherited_type(list_to_cons::call(_0 , _1)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : inherited_type(list_to_cons::call(_0 , _1 , _2)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19)) {} template + BOOST_FUSION_GPU_ENABLED list& operator=(list const& rhs) { @@ -104,6 +128,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED list& operator=(T const& rhs) { diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list30.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list30.hpp index 841295ef4b..07ebfa6a97 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list30.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list30.hpp @@ -8,7 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct nil; + struct nil_; struct void_; template struct list @@ -20,12 +20,15 @@ namespace boost { namespace fusion list_to_cons; public: typedef typename list_to_cons::type inherited_type; + BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} template + BOOST_FUSION_GPU_ENABLED list(list const& rhs) : inherited_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs) : inherited_type(rhs) {} @@ -35,98 +38,129 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit list(typename detail::call_param::type _0) : inherited_type(list_to_cons::call(_0)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1) : inherited_type(list_to_cons::call(_0 , _1)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : inherited_type(list_to_cons::call(_0 , _1 , _2)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29)) {} template + BOOST_FUSION_GPU_ENABLED list& operator=(list const& rhs) { @@ -134,6 +168,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED list& operator=(T const& rhs) { diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list40.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list40.hpp index c486f6b846..7c10229474 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list40.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list40.hpp @@ -8,7 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct nil; + struct nil_; struct void_; template struct list @@ -20,12 +20,15 @@ namespace boost { namespace fusion list_to_cons; public: typedef typename list_to_cons::type inherited_type; + BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} template + BOOST_FUSION_GPU_ENABLED list(list const& rhs) : inherited_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs) : inherited_type(rhs) {} @@ -35,128 +38,169 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit list(typename detail::call_param::type _0) : inherited_type(list_to_cons::call(_0)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1) : inherited_type(list_to_cons::call(_0 , _1)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : inherited_type(list_to_cons::call(_0 , _1 , _2)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39)) {} template + BOOST_FUSION_GPU_ENABLED list& operator=(list const& rhs) { @@ -164,6 +208,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED list& operator=(T const& rhs) { diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list50.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list50.hpp index 21264094d5..9c4f96ea27 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list50.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list50.hpp @@ -8,7 +8,7 @@ ==============================================================================*/ namespace boost { namespace fusion { - struct nil; + struct nil_; struct void_; template struct list @@ -20,12 +20,15 @@ namespace boost { namespace fusion list_to_cons; public: typedef typename list_to_cons::type inherited_type; + BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} template + BOOST_FUSION_GPU_ENABLED list(list const& rhs) : inherited_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs) : inherited_type(rhs) {} @@ -35,158 +38,209 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit list(typename detail::call_param::type _0) : inherited_type(list_to_cons::call(_0)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1) : inherited_type(list_to_cons::call(_0 , _1)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : inherited_type(list_to_cons::call(_0 , _1 , _2)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48)) {} + BOOST_FUSION_GPU_ENABLED list(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48 , typename detail::call_param::type _49) : inherited_type(list_to_cons::call(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49)) {} template + BOOST_FUSION_GPU_ENABLED list& operator=(list const& rhs) { @@ -194,6 +248,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED list& operator=(T const& rhs) { diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp index a0f01f515d..ed94114cc8 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons10.hpp @@ -17,60 +17,70 @@ namespace boost { namespace fusion { namespace detail tail_list_to_cons; typedef typename tail_list_to_cons::type tail_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0) { return type(_0 ); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1) { return type(_0 , tail_list_to_cons::call(_1)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) { return type(_0 , tail_list_to_cons::call(_1 , _2)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) { @@ -81,6 +91,6 @@ namespace boost { namespace fusion { namespace detail template <> struct list_to_cons { - typedef nil type; + typedef nil_ type; }; }}} diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp index b90b7a76f1..188999cfdf 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons20.hpp @@ -17,120 +17,140 @@ namespace boost { namespace fusion { namespace detail tail_list_to_cons; typedef typename tail_list_to_cons::type tail_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0) { return type(_0 ); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1) { return type(_0 , tail_list_to_cons::call(_1)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) { return type(_0 , tail_list_to_cons::call(_1 , _2)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) { @@ -141,6 +161,6 @@ namespace boost { namespace fusion { namespace detail template <> struct list_to_cons { - typedef nil type; + typedef nil_ type; }; }}} diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp index 8b8a046d35..1569312b39 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons30.hpp @@ -17,180 +17,210 @@ namespace boost { namespace fusion { namespace detail tail_list_to_cons; typedef typename tail_list_to_cons::type tail_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0) { return type(_0 ); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1) { return type(_0 , tail_list_to_cons::call(_1)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) { return type(_0 , tail_list_to_cons::call(_1 , _2)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) { @@ -201,6 +231,6 @@ namespace boost { namespace fusion { namespace detail template <> struct list_to_cons { - typedef nil type; + typedef nil_ type; }; }}} diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp index a435c02109..b2650b3856 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons40.hpp @@ -17,240 +17,280 @@ namespace boost { namespace fusion { namespace detail tail_list_to_cons; typedef typename tail_list_to_cons::type tail_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0) { return type(_0 ); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1) { return type(_0 , tail_list_to_cons::call(_1)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) { return type(_0 , tail_list_to_cons::call(_1 , _2)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) { @@ -261,6 +301,6 @@ namespace boost { namespace fusion { namespace detail template <> struct list_to_cons { - typedef nil type; + typedef nil_ type; }; }}} diff --git a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp index 7837e9c23b..b538b703ef 100644 --- a/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp +++ b/3party/boost/boost/fusion/container/list/detail/preprocessed/list_to_cons50.hpp @@ -17,300 +17,350 @@ namespace boost { namespace fusion { namespace detail tail_list_to_cons; typedef typename tail_list_to_cons::type tail_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0) { return type(_0 ); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1) { return type(_0 , tail_list_to_cons::call(_1)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) { return type(_0 , tail_list_to_cons::call(_1 , _2)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48) { return type(_0 , tail_list_to_cons::call(_1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48)); } + BOOST_FUSION_GPU_ENABLED static type call(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48 , typename detail::call_param::type _49) { @@ -321,6 +371,6 @@ namespace boost { namespace fusion { namespace detail template <> struct list_to_cons { - typedef nil type; + typedef nil_ type; }; }}} diff --git a/3party/boost/boost/fusion/container/list/detail/reverse_cons.hpp b/3party/boost/boost/fusion/container/list/detail/reverse_cons.hpp index 59178e84bf..f80e2c2d30 100644 --- a/3party/boost/boost/fusion/container/list/detail/reverse_cons.hpp +++ b/3party/boost/boost/fusion/container/list/detail/reverse_cons.hpp @@ -7,12 +7,13 @@ #if !defined(BOOST_FUSION_REVERSE_CONS_HPP_INCLUDED) #define BOOST_FUSION_REVERSE_CONS_HPP_INCLUDED +#include #include namespace boost { namespace fusion { namespace detail { //////////////////////////////////////////////////////////////////////////// - template + template struct reverse_cons; template @@ -21,6 +22,7 @@ namespace boost { namespace fusion { namespace detail typedef reverse_cons > impl; typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(cons const &cons, State const &state = State()) { typedef fusion::cons cdr_type; @@ -29,11 +31,12 @@ namespace boost { namespace fusion { namespace detail }; template - struct reverse_cons + struct reverse_cons { typedef State type; - static State const &call(nil const &, State const &state = State()) + BOOST_FUSION_GPU_ENABLED + static State const &call(nil_ const &, State const &state = State()) { return state; } diff --git a/3party/boost/boost/fusion/container/list/detail/value_at_impl.hpp b/3party/boost/boost/fusion/container/list/detail/value_at_impl.hpp index 353f8d5bbd..ea9a859361 100644 --- a/3party/boost/boost/fusion/container/list/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/container/list/detail/value_at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_AT_IMPL_07172005_0952) #define FUSION_VALUE_AT_IMPL_07172005_0952 +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/list/limits.hpp b/3party/boost/boost/fusion/container/list/limits.hpp index 1d545ba044..cc64ad7224 100644 --- a/3party/boost/boost/fusion/container/list/limits.hpp +++ b/3party/boost/boost/fusion/container/list/limits.hpp @@ -7,6 +7,8 @@ #if !defined(FUSION_LIST_LIMITS_07172005_0112) #define FUSION_LIST_LIMITS_07172005_0112 +#include + #if !defined(FUSION_MAX_LIST_SIZE) # define FUSION_MAX_LIST_SIZE 10 #else diff --git a/3party/boost/boost/fusion/container/list/list.hpp b/3party/boost/boost/fusion/container/list/list.hpp index 45e2f6376d..9e042bb481 100644 --- a/3party/boost/boost/fusion/container/list/list.hpp +++ b/3party/boost/boost/fusion/container/list/list.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_LIST_07172005_1153) #define FUSION_LIST_07172005_1153 +#include #include #include @@ -32,7 +33,7 @@ namespace boost { namespace fusion { - struct nil; + struct nil_; struct void_; template @@ -47,14 +48,17 @@ namespace boost { namespace fusion public: typedef typename list_to_cons::type inherited_type; + BOOST_FUSION_GPU_ENABLED list() : inherited_type() {} template + BOOST_FUSION_GPU_ENABLED list(list const& rhs) : inherited_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED list(Sequence const& rhs) : inherited_type(rhs) {} @@ -68,6 +72,7 @@ namespace boost { namespace fusion #include template + BOOST_FUSION_GPU_ENABLED list& operator=(list const& rhs) { @@ -76,6 +81,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED list& operator=(T const& rhs) { diff --git a/3party/boost/boost/fusion/container/list/list_fwd.hpp b/3party/boost/boost/fusion/container/list/list_fwd.hpp index a142689227..d827d283e8 100644 --- a/3party/boost/boost/fusion/container/list/list_fwd.hpp +++ b/3party/boost/boost/fusion/container/list/list_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_LIST_FORWARD_07172005_0224) #define FUSION_LIST_FORWARD_07172005_0224 +#include #include #include diff --git a/3party/boost/boost/fusion/container/list/nil.hpp b/3party/boost/boost/fusion/container/list/nil.hpp new file mode 100644 index 0000000000..c94186da93 --- /dev/null +++ b/3party/boost/boost/fusion/container/list/nil.hpp @@ -0,0 +1,51 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2005, 2014 Eric Niebler + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(FUSION_NIL_04232014_0843) +#define FUSION_NIL_04232014_0843 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct void_; + struct cons_tag; + struct forward_traversal_tag; + struct fusion_sequence_tag; + + struct nil_ : sequence_base + { + typedef mpl::int_<0> size; + typedef cons_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + typedef forward_traversal_tag category; + typedef void_ car_type; + typedef void_ cdr_type; + + BOOST_FUSION_GPU_ENABLED + nil_() {} + + template + BOOST_FUSION_GPU_ENABLED + nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) + {} + + template + BOOST_FUSION_GPU_ENABLED + void assign_from_iter(Iterator const& /*iter*/) + { + } + }; +}} + +#endif + diff --git a/3party/boost/boost/fusion/container/map.hpp b/3party/boost/boost/fusion/container/map.hpp index b9e8cd2c0f..9599889813 100644 --- a/3party/boost/boost/fusion/container/map.hpp +++ b/3party/boost/boost/fusion/container/map.hpp @@ -7,7 +7,7 @@ #if !defined(FUSION_SEQUENCE_CLASS_MAP_10022005_0606) #define FUSION_SEQUENCE_CLASS_MAP_10022005_0606 -#include +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/map/convert.hpp b/3party/boost/boost/fusion/container/map/convert.hpp index 5bb6fc9dde..d106610b7b 100644 --- a/3party/boost/boost/fusion/container/map/convert.hpp +++ b/3party/boost/boost/fusion/container/map/convert.hpp @@ -4,44 +4,114 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_CONVERT_09232005_1340) -#define FUSION_CONVERT_09232005_1340 +#if !defined(FUSION_CONVERT_MAIN_09232005_1340) +#define FUSION_CONVERT_MAIN_09232005_1340 -#include -#include +#include #include -#include -#include + +namespace boost { namespace fusion { namespace detail +{ + template + struct pair_from + { + typedef typename result_of::value_of::type type; + + BOOST_FUSION_GPU_ENABLED + static inline type call(It const& it) + { + return *it; + } + }; + + template + struct pair_from + { + typedef typename result_of::key_of::type key_type; + typedef typename result_of::value_of_data::type data_type; + typedef typename fusion::pair type; + + BOOST_FUSION_GPU_ENABLED + static inline type call(It const& it) + { + return type(deref_data(it)); + } + }; +}}} + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) +# include + +#else +/////////////////////////////////////////////////////////////////////////////// +// C++11 variadic implementation +/////////////////////////////////////////////////////////////////////////////// +#include namespace boost { namespace fusion { namespace result_of { template - struct as_map + struct as_map : + detail::build_map< + typename result_of::begin::type + , typename result_of::end::type + , is_base_of< + associative_tag + , typename traits::category_of::type>::value + > { - typedef typename detail::as_map::value> gen; - typedef typename gen:: - template apply::type>::type - type; }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_map::type as_map(Sequence& seq) { - typedef typename result_of::as_map::gen gen; - return gen::call(fusion::begin(seq)); + typedef result_of::as_map gen; + return gen::call(fusion::begin(seq), fusion::end(seq)); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_map::type as_map(Sequence const& seq) { - typedef typename result_of::as_map::gen gen; - return gen::call(fusion::begin(seq)); + typedef result_of::as_map gen; + return gen::call(fusion::begin(seq), fusion::end(seq)); + } + + namespace extension + { + template + struct convert_impl; + + template <> + struct convert_impl + { + template + struct apply + { + typedef typename + result_of::as_map::type + type; + + BOOST_FUSION_GPU_ENABLED + static type call(Sequence& seq) + { + typedef result_of::as_map gen; + return gen::call(fusion::begin(seq), fusion::end(seq)); + } + }; + }; } }} #endif +#endif + diff --git a/3party/boost/boost/fusion/container/map/detail/at_impl.hpp b/3party/boost/boost/fusion/container/map/detail/at_impl.hpp index 025c1724a1..c2a565ebe0 100644 --- a/3party/boost/boost/fusion/container/map/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/at_impl.hpp @@ -1,17 +1,14 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2011 Brandon Kohn + Copyright (c) 2001-2013 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP) -#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP +#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821) +#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_02042013_0821 +#include #include -#include -#include -#include namespace boost { namespace fusion { @@ -26,36 +23,38 @@ namespace boost { namespace fusion struct at_impl { template - struct apply + struct apply { - typedef typename - mpl::at::type - element; - typedef typename detail::ref_result::type type; - + typedef mpl::int_ index; + typedef + decltype(std::declval().get(index())) + type; + + BOOST_FUSION_GPU_ENABLED static type call(Sequence& m) { - return m.get_data().at_impl(N()); + return m.get(index()); } }; template struct apply { - typedef typename - mpl::at::type - element; - typedef typename detail::cref_result::type type; - + typedef mpl::int_ index; + typedef + decltype(std::declval().get(index())) + type; + + BOOST_FUSION_GPU_ENABLED static type call(Sequence const& m) { - return m.get_data().at_impl(N()); + return m.get(index()); } }; }; } }} -#endif //BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP +#endif diff --git a/3party/boost/boost/fusion/container/map/detail/at_key_impl.hpp b/3party/boost/boost/fusion/container/map/detail/at_key_impl.hpp new file mode 100644 index 0000000000..5b57c4b835 --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/at_key_impl.hpp @@ -0,0 +1,61 @@ +/*============================================================================= + Copyright (c) 2001-2013 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_DETAIL_AT_KEY_IMPL_02042013_0821) +#define BOOST_FUSION_MAP_DETAIL_AT_KEY_IMPL_02042013_0821 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct at_key_impl; + + template <> + struct at_key_impl + { + template + struct apply + { + typedef + decltype(std::declval().get(mpl::identity())) + type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Sequence& m) + { + return m.get(mpl::identity()); + } + }; + + template + struct apply + { + typedef + decltype(std::declval().get(mpl::identity())) + type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Sequence const& m) + { + return m.get(mpl::identity()); + } + }; + }; + } +}} + +#endif diff --git a/3party/boost/boost/fusion/container/map/detail/begin_impl.hpp b/3party/boost/boost/fusion/container/map/detail/begin_impl.hpp index 2d0f854be7..9c8f4acbeb 100644 --- a/3party/boost/boost/fusion/container/map/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/begin_impl.hpp @@ -1,43 +1,40 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2009 Christopher Schmidt + Copyright (c) 2005-2013 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_BEGIN_IMPL_02042013_0857) +#define BOOST_FUSION_MAP_BEGIN_IMPL_02042013_0857 -#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP -#define BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP +#include +#include -#include - -namespace boost { namespace fusion { namespace extension +namespace boost { namespace fusion { - template - struct begin_impl; + struct map_tag; - template <> - struct begin_impl + namespace extension { - template - struct apply - { - typedef - basic_iterator< - map_iterator_tag - , typename Seq::category - , Seq - , 0 - > - type; + template + struct begin_impl; - static type - call(Seq& seq) + template<> + struct begin_impl + { + template + struct apply { - return type(seq,0); - } + typedef map_iterator type; + + BOOST_FUSION_GPU_ENABLED + static type call(Sequence& seq) + { + return type(seq); + } + }; }; - }; -}}} + } +}} #endif diff --git a/3party/boost/boost/fusion/container/map/detail/build_map.hpp b/3party/boost/boost/fusion/container/map/detail/build_map.hpp new file mode 100644 index 0000000000..f5a6875f83 --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/build_map.hpp @@ -0,0 +1,80 @@ +/*============================================================================= + Copyright (c) 2005-2013 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_BUILD_MAP_02042013_1448) +#define BOOST_FUSION_BUILD_MAP_02042013_1448 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion { namespace detail +{ + template ::value + > + struct build_map; + + template + struct build_map + { + typedef map<> type; + BOOST_FUSION_GPU_ENABLED + static type + call(First const&, Last const&) + { + return type(); + } + }; + + template + struct push_front_map; + + template + struct push_front_map> + { + typedef map type; + + BOOST_FUSION_GPU_ENABLED + static type + call(T const& first, map const& rest) + { + return type(push_front(rest, first)); + } + }; + + template + struct build_map + { + typedef + build_map::type, Last, is_assoc> + next_build_map; + + typedef push_front_map< + typename pair_from::type + , typename next_build_map::type> + push_front; + + typedef typename push_front::type type; + + BOOST_FUSION_GPU_ENABLED + static type + call(First const& f, Last const& l) + { + return push_front::call( + pair_from::call(f) + , next_build_map::call(fusion::next(f), l)); + } + }; +}}} + +#endif diff --git a/3party/boost/boost/fusion/container/map/detail/as_map.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/as_map.hpp similarity index 77% rename from 3party/boost/boost/fusion/container/map/detail/as_map.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/as_map.hpp index b1a4d09f1f..62748be143 100644 --- a/3party/boost/boost/fusion/container/map/detail/as_map.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/as_map.hpp @@ -15,18 +15,18 @@ #include #include #include -#include +#include #include #include #include namespace boost { namespace fusion { namespace detail { - template + template struct as_map; - template <> - struct as_map<0> + template + struct as_map<0, is_assoc> { template struct apply @@ -35,6 +35,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator) { @@ -44,7 +45,7 @@ namespace boost { namespace fusion { namespace detail }}} #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#include #else #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) #pragma wave option(preserve: 2, line: 0, output: "preprocessed/as_map" FUSION_MAX_MAP_SIZE_STR ".hpp") @@ -73,17 +74,21 @@ namespace boost { namespace fusion { namespace detail typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); -#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::value_of::type \ - BOOST_PP_CAT(T, n); +#define BOOST_FUSION_PAIR_FROM_ITERATOR(z, n, data) \ + typedef pair_from BOOST_PP_CAT(D, n); \ + typedef typename BOOST_PP_CAT(D, n)::type BOOST_PP_CAT(T, n); -#define BOOST_PP_FILENAME_1 +#define BOOST_FUSION_DREF_CALL_ITERATOR(z, n, data) \ + gen::BOOST_PP_CAT(D, n)::call(BOOST_PP_CAT(i, n)) + +#define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) #include BOOST_PP_ITERATE() #undef BOOST_FUSION_NEXT_ITERATOR #undef BOOST_FUSION_NEXT_CALL_ITERATOR -#undef BOOST_FUSION_VALUE_OF_ITERATOR +#undef BOOST_FUSION_PAIR_FROM_ITERATOR +#undef BOOST_FUSION_DREF_CALL_ITERATOR }}} @@ -103,25 +108,26 @@ namespace boost { namespace fusion { namespace detail #define N BOOST_PP_ITERATION() - template <> - struct as_map + template + struct as_map { template struct apply { - BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) - BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) + BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_ITERATOR, _) + BOOST_PP_REPEAT(N, BOOST_FUSION_PAIR_FROM_ITERATOR, _) typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _) - return result(BOOST_PP_ENUM_PARAMS(N, *i)); + return result(BOOST_PP_ENUM(N, BOOST_FUSION_DREF_CALL_ITERATOR, _)); } }; diff --git a/3party/boost/boost/fusion/container/map/detail/cpp03/at_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/at_impl.hpp new file mode 100644 index 0000000000..8a3209d75a --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/at_impl.hpp @@ -0,0 +1,64 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2011 Brandon Kohn + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP) +#define BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct at_impl; + + template <> + struct at_impl + { + template + struct apply + { + typedef typename + mpl::at::type + element; + typedef typename detail::ref_result::type type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Sequence& m) + { + return m.get_data().at_impl(N()); + } + }; + + template + struct apply + { + typedef typename + mpl::at::type + element; + typedef typename detail::cref_result::type type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Sequence const& m) + { + return m.get_data().at_impl(N()); + } + }; + }; + } +}} + +#endif //BOOST_FUSION_MAP_DETAIL_AT_IMPL_HPP diff --git a/3party/boost/boost/fusion/container/map/detail/cpp03/begin_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/begin_impl.hpp new file mode 100644 index 0000000000..5fe1466e18 --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/begin_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2009 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP +#define BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP + +#include +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct begin_impl; + + template <> + struct begin_impl + { + template + struct apply + { + typedef + basic_iterator< + map_iterator_tag + , typename Seq::category + , Seq + , 0 + > + type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; +}}} + +#endif diff --git a/3party/boost/boost/fusion/container/map/detail/cpp03/convert.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/convert.hpp new file mode 100644 index 0000000000..a03840ce13 --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/convert.hpp @@ -0,0 +1,57 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(FUSION_CONVERT_09232005_1340) +#define FUSION_CONVERT_09232005_1340 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + namespace result_of + { + template + struct as_map + { + typedef typename + detail::as_map< + result_of::size::value + , is_base_of< + associative_tag + , typename traits::category_of::type>::value + > + gen; + typedef typename gen:: + template apply::type>::type + type; + }; + } + + template + BOOST_FUSION_GPU_ENABLED + inline typename result_of::as_map::type + as_map(Sequence& seq) + { + typedef typename result_of::as_map::gen gen; + return gen::call(fusion::begin(seq)); + } + + template + BOOST_FUSION_GPU_ENABLED + inline typename result_of::as_map::type + as_map(Sequence const& seq) + { + typedef typename result_of::as_map::gen gen; + return gen::call(fusion::begin(seq)); + } +}} + +#endif diff --git a/3party/boost/boost/fusion/container/map/detail/convert_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/convert_impl.hpp similarity index 69% rename from 3party/boost/boost/fusion/container/map/detail/convert_impl.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/convert_impl.hpp index c4b9389da4..14a821e879 100644 --- a/3party/boost/boost/fusion/container/map/detail/convert_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/convert_impl.hpp @@ -8,8 +8,9 @@ #if !defined(FUSION_CONVERT_IMPL_09232005_1340) #define FUSION_CONVERT_IMPL_09232005_1340 -#include -#include +#include +#include +#include #include #include @@ -28,11 +29,19 @@ namespace boost { namespace fusion template struct apply { - typedef typename detail::as_map::value> gen; + typedef typename + detail::as_map< + result_of::size::value + , is_base_of< + associative_tag + , typename traits::category_of::type>::value + > + gen; typedef typename gen:: template apply::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return gen::call(fusion::begin(seq)); diff --git a/3party/boost/boost/fusion/container/map/detail/deref_data_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp similarity index 94% rename from 3party/boost/boost/fusion/container/map/detail/deref_data_impl.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp index 8304c898ee..7be6fd962a 100644 --- a/3party/boost/boost/fusion/container/map/detail/deref_data_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/deref_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_DATA_IMPL_HPP #define BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_DATA_IMPL_HPP +#include #include #include #include @@ -35,6 +36,7 @@ namespace boost { namespace fusion { namespace extension >::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/container/map/detail/deref_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/deref_impl.hpp similarity index 94% rename from 3party/boost/boost/fusion/container/map/detail/deref_impl.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/deref_impl.hpp index 725477bdd1..260c5dfddd 100644 --- a/3party/boost/boost/fusion/container/map/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/deref_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_IMPL_HPP #define BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_IMPL_HPP +#include #include #include @@ -33,6 +34,7 @@ namespace boost { namespace fusion { namespace extension >::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/container/map/detail/cpp03/end_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/end_impl.hpp new file mode 100644 index 0000000000..33940c7a7e --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/end_impl.hpp @@ -0,0 +1,45 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2009 Christopher Schmidt + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ + +#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_END_IMPL_HPP +#define BOOST_FUSION_CONTAINER_MAP_DETAIL_END_IMPL_HPP + +#include +#include + +namespace boost { namespace fusion { namespace extension +{ + template + struct end_impl; + + template <> + struct end_impl + { + template + struct apply + { + typedef + basic_iterator< + map_iterator_tag + , typename Seq::category + , Seq + , Seq::size::value + > + type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Seq& seq) + { + return type(seq,0); + } + }; + }; +}}} + +#endif diff --git a/3party/boost/boost/fusion/container/map/detail/key_of_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/key_of_impl.hpp similarity index 88% rename from 3party/boost/boost/fusion/container/map/detail/key_of_impl.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/key_of_impl.hpp index 5a90c03784..db3b4fff0e 100644 --- a/3party/boost/boost/fusion/container/map/detail/key_of_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/key_of_impl.hpp @@ -8,7 +8,8 @@ #ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_KEY_OF_IMPL_HPP #define BOOST_FUSION_CONTAINER_MAP_DETAIL_KEY_OF_IMPL_HPP -#include +#include +#include namespace boost { namespace fusion { namespace extension { diff --git a/3party/boost/boost/fusion/container/map/limits.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/limits.hpp similarity index 95% rename from 3party/boost/boost/fusion/container/map/limits.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/limits.hpp index ae5c378674..43b5abb261 100644 --- a/3party/boost/boost/fusion/container/map/limits.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/limits.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_MAP_LIMITS_07212005_1104) #define FUSION_MAP_LIMITS_07212005_1104 +#include #include #if !defined(FUSION_MAX_MAP_SIZE) diff --git a/3party/boost/boost/fusion/container/map/detail/cpp03/map.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/map.hpp new file mode 100644 index 0000000000..8673895ea8 --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/map.hpp @@ -0,0 +1,111 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(FUSION_MAP_07212005_1106) +#define FUSION_MAP_07212005_1106 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/map" FUSION_MAX_MAP_SIZE_STR ".hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + struct fusion_sequence_tag; + + template + struct map : sequence_base > + { + struct category : random_access_traversal_tag, associative_tag {}; + + typedef map_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::false_ is_view; + + typedef vector< + BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> + storage_type; + + typedef typename storage_type::size size; + + BOOST_FUSION_GPU_ENABLED + map() + : data() {} + + template + BOOST_FUSION_GPU_ENABLED + map(Sequence const& rhs) + : data(rhs) {} + + #include + + template + BOOST_FUSION_GPU_ENABLED + map& operator=(T const& rhs) + { + data = rhs; + return *this; + } + + BOOST_FUSION_GPU_ENABLED + map& operator=(map const& rhs) + { + data = rhs.data; + return *this; + } + + BOOST_FUSION_GPU_ENABLED + storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED + storage_type const& get_data() const { return data; } + + private: + + storage_type data; + }; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/3party/boost/boost/fusion/container/map/detail/map_forward_ctor.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp similarity index 92% rename from 3party/boost/boost/fusion/container/map/detail/map_forward_ctor.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp index c0f983c4d2..ac303788e2 100644 --- a/3party/boost/boost/fusion/container/map/detail/map_forward_ctor.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/map_forward_ctor.hpp @@ -13,7 +13,7 @@ #include #define BOOST_PP_FILENAME_1 \ - + #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE) #include BOOST_PP_ITERATE() @@ -27,6 +27,7 @@ #define N BOOST_PP_ITERATION() + BOOST_FUSION_GPU_ENABLED #if N == 1 explicit #endif diff --git a/3party/boost/boost/fusion/container/map/detail/cpp03/map_fwd.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/map_fwd.hpp new file mode 100644 index 0000000000..cf26fdddc3 --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/map_fwd.hpp @@ -0,0 +1,53 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(FUSION_MAP_FORWARD_07212005_1105) +#define FUSION_MAP_FORWARD_07212005_1105 + +#include +#include +#include + +#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) +#include +#else +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 2, line: 0, output: "preprocessed/map" FUSION_MAX_MAP_SIZE_STR "_fwd.hpp") +#endif + +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + This is an auto-generated file. Do not edit! +==============================================================================*/ + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(preserve: 1) +#endif + +namespace boost { namespace fusion +{ + struct void_; + struct map_tag; + struct map_iterator_tag; + + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + FUSION_MAX_MAP_SIZE, typename T, void_) + > + struct map; +}} + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +#pragma wave option(output: null) +#endif + +#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES + +#endif diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp similarity index 62% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/as_map.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp index 47eb0e4c88..1d1be0804d 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_MAP_SIZE <= 10 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 20 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 30 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 40 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_MAP_SIZE out of bounds for preprocessed headers" #endif diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map10.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp similarity index 58% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/as_map10.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp index 98dae25bcc..c5273214f6 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map10.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map10.hpp @@ -8,204 +8,214 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { - template <> - struct as_map<1> + template + struct as_map<1, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; - typedef typename fusion::result_of::value_of::type T0; + + typedef pair_from D0; typedef typename D0::type T0; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; - return result(*i0); + return result(gen::D0::call(i0)); } }; - template <> - struct as_map<2> + template + struct as_map<2, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; + typedef typename fusion::result_of::next::type I1; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); - return result(*i0 , *i1); + return result(gen::D0::call(i0) , gen::D1::call(i1)); } }; - template <> - struct as_map<3> + template + struct as_map<3, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); - return result(*i0 , *i1 , *i2); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2)); } }; - template <> - struct as_map<4> + template + struct as_map<4, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); - return result(*i0 , *i1 , *i2 , *i3); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3)); } }; - template <> - struct as_map<5> + template + struct as_map<5, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); - return result(*i0 , *i1 , *i2 , *i3 , *i4); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4)); } }; - template <> - struct as_map<6> + template + struct as_map<6, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5)); } }; - template <> - struct as_map<7> + template + struct as_map<7, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6)); } }; - template <> - struct as_map<8> + template + struct as_map<8, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7)); } }; - template <> - struct as_map<9> + template + struct as_map<9, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8)); } }; - template <> - struct as_map<10> + template + struct as_map<10, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9)); } }; }}} diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map20.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp similarity index 56% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/as_map20.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp index 2907ab2794..b62cf67526 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map20.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map20.hpp @@ -8,404 +8,424 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { - template <> - struct as_map<1> + template + struct as_map<1, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; - typedef typename fusion::result_of::value_of::type T0; + + typedef pair_from D0; typedef typename D0::type T0; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; - return result(*i0); + return result(gen::D0::call(i0)); } }; - template <> - struct as_map<2> + template + struct as_map<2, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; + typedef typename fusion::result_of::next::type I1; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); - return result(*i0 , *i1); + return result(gen::D0::call(i0) , gen::D1::call(i1)); } }; - template <> - struct as_map<3> + template + struct as_map<3, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); - return result(*i0 , *i1 , *i2); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2)); } }; - template <> - struct as_map<4> + template + struct as_map<4, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); - return result(*i0 , *i1 , *i2 , *i3); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3)); } }; - template <> - struct as_map<5> + template + struct as_map<5, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); - return result(*i0 , *i1 , *i2 , *i3 , *i4); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4)); } }; - template <> - struct as_map<6> + template + struct as_map<6, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5)); } }; - template <> - struct as_map<7> + template + struct as_map<7, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6)); } }; - template <> - struct as_map<8> + template + struct as_map<8, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7)); } }; - template <> - struct as_map<9> + template + struct as_map<9, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8)); } }; - template <> - struct as_map<10> + template + struct as_map<10, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9)); } }; - template <> - struct as_map<11> + template + struct as_map<11, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10)); } }; - template <> - struct as_map<12> + template + struct as_map<12, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11)); } }; - template <> - struct as_map<13> + template + struct as_map<13, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12)); } }; - template <> - struct as_map<14> + template + struct as_map<14, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13)); } }; - template <> - struct as_map<15> + template + struct as_map<15, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14)); } }; - template <> - struct as_map<16> + template + struct as_map<16, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15)); } }; - template <> - struct as_map<17> + template + struct as_map<17, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16)); } }; - template <> - struct as_map<18> + template + struct as_map<18, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17)); } }; - template <> - struct as_map<19> + template + struct as_map<19, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18)); } }; - template <> - struct as_map<20> + template + struct as_map<20, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19)); } }; }}} diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map30.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp similarity index 55% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/as_map30.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp index fca89ae874..bb2c6d539a 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map30.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map30.hpp @@ -8,604 +8,634 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { - template <> - struct as_map<1> + template + struct as_map<1, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; - typedef typename fusion::result_of::value_of::type T0; + + typedef pair_from D0; typedef typename D0::type T0; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; - return result(*i0); + return result(gen::D0::call(i0)); } }; - template <> - struct as_map<2> + template + struct as_map<2, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; + typedef typename fusion::result_of::next::type I1; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); - return result(*i0 , *i1); + return result(gen::D0::call(i0) , gen::D1::call(i1)); } }; - template <> - struct as_map<3> + template + struct as_map<3, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); - return result(*i0 , *i1 , *i2); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2)); } }; - template <> - struct as_map<4> + template + struct as_map<4, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); - return result(*i0 , *i1 , *i2 , *i3); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3)); } }; - template <> - struct as_map<5> + template + struct as_map<5, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); - return result(*i0 , *i1 , *i2 , *i3 , *i4); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4)); } }; - template <> - struct as_map<6> + template + struct as_map<6, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5)); } }; - template <> - struct as_map<7> + template + struct as_map<7, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6)); } }; - template <> - struct as_map<8> + template + struct as_map<8, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7)); } }; - template <> - struct as_map<9> + template + struct as_map<9, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8)); } }; - template <> - struct as_map<10> + template + struct as_map<10, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9)); } }; - template <> - struct as_map<11> + template + struct as_map<11, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10)); } }; - template <> - struct as_map<12> + template + struct as_map<12, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11)); } }; - template <> - struct as_map<13> + template + struct as_map<13, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12)); } }; - template <> - struct as_map<14> + template + struct as_map<14, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13)); } }; - template <> - struct as_map<15> + template + struct as_map<15, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14)); } }; - template <> - struct as_map<16> + template + struct as_map<16, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15)); } }; - template <> - struct as_map<17> + template + struct as_map<17, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16)); } }; - template <> - struct as_map<18> + template + struct as_map<18, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17)); } }; - template <> - struct as_map<19> + template + struct as_map<19, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18)); } }; - template <> - struct as_map<20> + template + struct as_map<20, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19)); } }; - template <> - struct as_map<21> + template + struct as_map<21, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20)); } }; - template <> - struct as_map<22> + template + struct as_map<22, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21)); } }; - template <> - struct as_map<23> + template + struct as_map<23, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22)); } }; - template <> - struct as_map<24> + template + struct as_map<24, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23)); } }; - template <> - struct as_map<25> + template + struct as_map<25, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24)); } }; - template <> - struct as_map<26> + template + struct as_map<26, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25)); } }; - template <> - struct as_map<27> + template + struct as_map<27, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26)); } }; - template <> - struct as_map<28> + template + struct as_map<28, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27)); } }; - template <> - struct as_map<29> + template + struct as_map<29, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28)); } }; - template <> - struct as_map<30> + template + struct as_map<30, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29)); } }; }}} diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map40.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp similarity index 54% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/as_map40.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp index 6e800f6086..1c4d7c60a9 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map40.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map40.hpp @@ -8,804 +8,844 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { - template <> - struct as_map<1> + template + struct as_map<1, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; - typedef typename fusion::result_of::value_of::type T0; + + typedef pair_from D0; typedef typename D0::type T0; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; - return result(*i0); + return result(gen::D0::call(i0)); } }; - template <> - struct as_map<2> + template + struct as_map<2, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; + typedef typename fusion::result_of::next::type I1; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); - return result(*i0 , *i1); + return result(gen::D0::call(i0) , gen::D1::call(i1)); } }; - template <> - struct as_map<3> + template + struct as_map<3, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); - return result(*i0 , *i1 , *i2); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2)); } }; - template <> - struct as_map<4> + template + struct as_map<4, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); - return result(*i0 , *i1 , *i2 , *i3); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3)); } }; - template <> - struct as_map<5> + template + struct as_map<5, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); - return result(*i0 , *i1 , *i2 , *i3 , *i4); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4)); } }; - template <> - struct as_map<6> + template + struct as_map<6, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5)); } }; - template <> - struct as_map<7> + template + struct as_map<7, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6)); } }; - template <> - struct as_map<8> + template + struct as_map<8, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7)); } }; - template <> - struct as_map<9> + template + struct as_map<9, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8)); } }; - template <> - struct as_map<10> + template + struct as_map<10, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9)); } }; - template <> - struct as_map<11> + template + struct as_map<11, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10)); } }; - template <> - struct as_map<12> + template + struct as_map<12, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11)); } }; - template <> - struct as_map<13> + template + struct as_map<13, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12)); } }; - template <> - struct as_map<14> + template + struct as_map<14, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13)); } }; - template <> - struct as_map<15> + template + struct as_map<15, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14)); } }; - template <> - struct as_map<16> + template + struct as_map<16, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15)); } }; - template <> - struct as_map<17> + template + struct as_map<17, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16)); } }; - template <> - struct as_map<18> + template + struct as_map<18, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17)); } }; - template <> - struct as_map<19> + template + struct as_map<19, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18)); } }; - template <> - struct as_map<20> + template + struct as_map<20, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19)); } }; - template <> - struct as_map<21> + template + struct as_map<21, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20)); } }; - template <> - struct as_map<22> + template + struct as_map<22, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21)); } }; - template <> - struct as_map<23> + template + struct as_map<23, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22)); } }; - template <> - struct as_map<24> + template + struct as_map<24, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23)); } }; - template <> - struct as_map<25> + template + struct as_map<25, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24)); } }; - template <> - struct as_map<26> + template + struct as_map<26, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25)); } }; - template <> - struct as_map<27> + template + struct as_map<27, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26)); } }; - template <> - struct as_map<28> + template + struct as_map<28, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27)); } }; - template <> - struct as_map<29> + template + struct as_map<29, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28)); } }; - template <> - struct as_map<30> + template + struct as_map<30, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29)); } }; - template <> - struct as_map<31> + template + struct as_map<31, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30)); } }; - template <> - struct as_map<32> + template + struct as_map<32, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31)); } }; - template <> - struct as_map<33> + template + struct as_map<33, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32)); } }; - template <> - struct as_map<34> + template + struct as_map<34, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33)); } }; - template <> - struct as_map<35> + template + struct as_map<35, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34)); } }; - template <> - struct as_map<36> + template + struct as_map<36, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35)); } }; - template <> - struct as_map<37> + template + struct as_map<37, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36)); } }; - template <> - struct as_map<38> + template + struct as_map<38, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37)); } }; - template <> - struct as_map<39> + template + struct as_map<39, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38)); } }; - template <> - struct as_map<40> + template + struct as_map<40, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39)); } }; }}} diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map50.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp similarity index 54% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/as_map50.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp index 2cc45eeb1c..e9cec05b5c 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/as_map50.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/as_map50.hpp @@ -8,1004 +8,1054 @@ ==============================================================================*/ namespace boost { namespace fusion { namespace detail { - template <> - struct as_map<1> + template + struct as_map<1, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; - typedef typename fusion::result_of::value_of::type T0; + + typedef pair_from D0; typedef typename D0::type T0; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; - return result(*i0); + return result(gen::D0::call(i0)); } }; - template <> - struct as_map<2> + template + struct as_map<2, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; + typedef typename fusion::result_of::next::type I1; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); - return result(*i0 , *i1); + return result(gen::D0::call(i0) , gen::D1::call(i1)); } }; - template <> - struct as_map<3> + template + struct as_map<3, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); - return result(*i0 , *i1 , *i2); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2)); } }; - template <> - struct as_map<4> + template + struct as_map<4, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); - return result(*i0 , *i1 , *i2 , *i3); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3)); } }; - template <> - struct as_map<5> + template + struct as_map<5, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); - return result(*i0 , *i1 , *i2 , *i3 , *i4); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4)); } }; - template <> - struct as_map<6> + template + struct as_map<6, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5)); } }; - template <> - struct as_map<7> + template + struct as_map<7, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6)); } }; - template <> - struct as_map<8> + template + struct as_map<8, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7)); } }; - template <> - struct as_map<9> + template + struct as_map<9, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8)); } }; - template <> - struct as_map<10> + template + struct as_map<10, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9)); } }; - template <> - struct as_map<11> + template + struct as_map<11, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10)); } }; - template <> - struct as_map<12> + template + struct as_map<12, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11)); } }; - template <> - struct as_map<13> + template + struct as_map<13, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12)); } }; - template <> - struct as_map<14> + template + struct as_map<14, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13)); } }; - template <> - struct as_map<15> + template + struct as_map<15, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14)); } }; - template <> - struct as_map<16> + template + struct as_map<16, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15)); } }; - template <> - struct as_map<17> + template + struct as_map<17, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16)); } }; - template <> - struct as_map<18> + template + struct as_map<18, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17)); } }; - template <> - struct as_map<19> + template + struct as_map<19, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18)); } }; - template <> - struct as_map<20> + template + struct as_map<20, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19)); } }; - template <> - struct as_map<21> + template + struct as_map<21, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20)); } }; - template <> - struct as_map<22> + template + struct as_map<22, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21)); } }; - template <> - struct as_map<23> + template + struct as_map<23, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22)); } }; - template <> - struct as_map<24> + template + struct as_map<24, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23)); } }; - template <> - struct as_map<25> + template + struct as_map<25, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24)); } }; - template <> - struct as_map<26> + template + struct as_map<26, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25)); } }; - template <> - struct as_map<27> + template + struct as_map<27, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26)); } }; - template <> - struct as_map<28> + template + struct as_map<28, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27)); } }; - template <> - struct as_map<29> + template + struct as_map<29, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28)); } }; - template <> - struct as_map<30> + template + struct as_map<30, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29)); } }; - template <> - struct as_map<31> + template + struct as_map<31, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30)); } }; - template <> - struct as_map<32> + template + struct as_map<32, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31)); } }; - template <> - struct as_map<33> + template + struct as_map<33, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32)); } }; - template <> - struct as_map<34> + template + struct as_map<34, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33)); } }; - template <> - struct as_map<35> + template + struct as_map<35, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34)); } }; - template <> - struct as_map<36> + template + struct as_map<36, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35)); } }; - template <> - struct as_map<37> + template + struct as_map<37, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36)); } }; - template <> - struct as_map<38> + template + struct as_map<38, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37)); } }; - template <> - struct as_map<39> + template + struct as_map<39, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38)); } }; - template <> - struct as_map<40> + template + struct as_map<40, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39)); } }; - template <> - struct as_map<41> + template + struct as_map<41, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40)); } }; - template <> - struct as_map<42> + template + struct as_map<42, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41)); } }; - template <> - struct as_map<43> + template + struct as_map<43, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; typedef typename fusion::result_of::value_of::type T42; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef pair_from D42; typedef typename D42::type T42; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); typename gen::I42 i42 = fusion::next(i41); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42)); } }; - template <> - struct as_map<44> + template + struct as_map<44, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; typedef typename fusion::result_of::value_of::type T42; typedef typename fusion::result_of::value_of::type T43; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef pair_from D42; typedef typename D42::type T42; typedef pair_from D43; typedef typename D43::type T43; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); typename gen::I42 i42 = fusion::next(i41); typename gen::I43 i43 = fusion::next(i42); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43)); } }; - template <> - struct as_map<45> + template + struct as_map<45, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; typedef typename fusion::result_of::value_of::type T42; typedef typename fusion::result_of::value_of::type T43; typedef typename fusion::result_of::value_of::type T44; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef pair_from D42; typedef typename D42::type T42; typedef pair_from D43; typedef typename D43::type T43; typedef pair_from D44; typedef typename D44::type T44; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); typename gen::I42 i42 = fusion::next(i41); typename gen::I43 i43 = fusion::next(i42); typename gen::I44 i44 = fusion::next(i43); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43) , gen::D44::call(i44)); } }; - template <> - struct as_map<46> + template + struct as_map<46, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; typedef typename fusion::result_of::value_of::type T42; typedef typename fusion::result_of::value_of::type T43; typedef typename fusion::result_of::value_of::type T44; typedef typename fusion::result_of::value_of::type T45; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef pair_from D42; typedef typename D42::type T42; typedef pair_from D43; typedef typename D43::type T43; typedef pair_from D44; typedef typename D44::type T44; typedef pair_from D45; typedef typename D45::type T45; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); typename gen::I42 i42 = fusion::next(i41); typename gen::I43 i43 = fusion::next(i42); typename gen::I44 i44 = fusion::next(i43); typename gen::I45 i45 = fusion::next(i44); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43) , gen::D44::call(i44) , gen::D45::call(i45)); } }; - template <> - struct as_map<47> + template + struct as_map<47, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; typedef typename fusion::result_of::next::type I47; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; typedef typename fusion::result_of::value_of::type T42; typedef typename fusion::result_of::value_of::type T43; typedef typename fusion::result_of::value_of::type T44; typedef typename fusion::result_of::value_of::type T45; typedef typename fusion::result_of::value_of::type T46; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef pair_from D42; typedef typename D42::type T42; typedef pair_from D43; typedef typename D43::type T43; typedef pair_from D44; typedef typename D44::type T44; typedef pair_from D45; typedef typename D45::type T45; typedef pair_from D46; typedef typename D46::type T46; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); typename gen::I42 i42 = fusion::next(i41); typename gen::I43 i43 = fusion::next(i42); typename gen::I44 i44 = fusion::next(i43); typename gen::I45 i45 = fusion::next(i44); typename gen::I46 i46 = fusion::next(i45); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43) , gen::D44::call(i44) , gen::D45::call(i45) , gen::D46::call(i46)); } }; - template <> - struct as_map<48> + template + struct as_map<48, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; typedef typename fusion::result_of::next::type I47; typedef typename fusion::result_of::next::type I48; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; typedef typename fusion::result_of::value_of::type T42; typedef typename fusion::result_of::value_of::type T43; typedef typename fusion::result_of::value_of::type T44; typedef typename fusion::result_of::value_of::type T45; typedef typename fusion::result_of::value_of::type T46; typedef typename fusion::result_of::value_of::type T47; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; typedef typename fusion::result_of::next::type I47; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef pair_from D42; typedef typename D42::type T42; typedef pair_from D43; typedef typename D43::type T43; typedef pair_from D44; typedef typename D44::type T44; typedef pair_from D45; typedef typename D45::type T45; typedef pair_from D46; typedef typename D46::type T46; typedef pair_from D47; typedef typename D47::type T47; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); typename gen::I42 i42 = fusion::next(i41); typename gen::I43 i43 = fusion::next(i42); typename gen::I44 i44 = fusion::next(i43); typename gen::I45 i45 = fusion::next(i44); typename gen::I46 i46 = fusion::next(i45); typename gen::I47 i47 = fusion::next(i46); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43) , gen::D44::call(i44) , gen::D45::call(i45) , gen::D46::call(i46) , gen::D47::call(i47)); } }; - template <> - struct as_map<49> + template + struct as_map<49, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; typedef typename fusion::result_of::next::type I47; typedef typename fusion::result_of::next::type I48; typedef typename fusion::result_of::next::type I49; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; typedef typename fusion::result_of::value_of::type T42; typedef typename fusion::result_of::value_of::type T43; typedef typename fusion::result_of::value_of::type T44; typedef typename fusion::result_of::value_of::type T45; typedef typename fusion::result_of::value_of::type T46; typedef typename fusion::result_of::value_of::type T47; typedef typename fusion::result_of::value_of::type T48; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; typedef typename fusion::result_of::next::type I47; typedef typename fusion::result_of::next::type I48; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef pair_from D42; typedef typename D42::type T42; typedef pair_from D43; typedef typename D43::type T43; typedef pair_from D44; typedef typename D44::type T44; typedef pair_from D45; typedef typename D45::type T45; typedef pair_from D46; typedef typename D46::type T46; typedef pair_from D47; typedef typename D47::type T47; typedef pair_from D48; typedef typename D48::type T48; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); typename gen::I42 i42 = fusion::next(i41); typename gen::I43 i43 = fusion::next(i42); typename gen::I44 i44 = fusion::next(i43); typename gen::I45 i45 = fusion::next(i44); typename gen::I46 i46 = fusion::next(i45); typename gen::I47 i47 = fusion::next(i46); typename gen::I48 i48 = fusion::next(i47); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43) , gen::D44::call(i44) , gen::D45::call(i45) , gen::D46::call(i46) , gen::D47::call(i47) , gen::D48::call(i48)); } }; - template <> - struct as_map<50> + template + struct as_map<50, is_assoc> { template struct apply { - typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; typedef typename fusion::result_of::next::type I47; typedef typename fusion::result_of::next::type I48; typedef typename fusion::result_of::next::type I49; typedef typename fusion::result_of::next::type I50; - typedef typename fusion::result_of::value_of::type T0; typedef typename fusion::result_of::value_of::type T1; typedef typename fusion::result_of::value_of::type T2; typedef typename fusion::result_of::value_of::type T3; typedef typename fusion::result_of::value_of::type T4; typedef typename fusion::result_of::value_of::type T5; typedef typename fusion::result_of::value_of::type T6; typedef typename fusion::result_of::value_of::type T7; typedef typename fusion::result_of::value_of::type T8; typedef typename fusion::result_of::value_of::type T9; typedef typename fusion::result_of::value_of::type T10; typedef typename fusion::result_of::value_of::type T11; typedef typename fusion::result_of::value_of::type T12; typedef typename fusion::result_of::value_of::type T13; typedef typename fusion::result_of::value_of::type T14; typedef typename fusion::result_of::value_of::type T15; typedef typename fusion::result_of::value_of::type T16; typedef typename fusion::result_of::value_of::type T17; typedef typename fusion::result_of::value_of::type T18; typedef typename fusion::result_of::value_of::type T19; typedef typename fusion::result_of::value_of::type T20; typedef typename fusion::result_of::value_of::type T21; typedef typename fusion::result_of::value_of::type T22; typedef typename fusion::result_of::value_of::type T23; typedef typename fusion::result_of::value_of::type T24; typedef typename fusion::result_of::value_of::type T25; typedef typename fusion::result_of::value_of::type T26; typedef typename fusion::result_of::value_of::type T27; typedef typename fusion::result_of::value_of::type T28; typedef typename fusion::result_of::value_of::type T29; typedef typename fusion::result_of::value_of::type T30; typedef typename fusion::result_of::value_of::type T31; typedef typename fusion::result_of::value_of::type T32; typedef typename fusion::result_of::value_of::type T33; typedef typename fusion::result_of::value_of::type T34; typedef typename fusion::result_of::value_of::type T35; typedef typename fusion::result_of::value_of::type T36; typedef typename fusion::result_of::value_of::type T37; typedef typename fusion::result_of::value_of::type T38; typedef typename fusion::result_of::value_of::type T39; typedef typename fusion::result_of::value_of::type T40; typedef typename fusion::result_of::value_of::type T41; typedef typename fusion::result_of::value_of::type T42; typedef typename fusion::result_of::value_of::type T43; typedef typename fusion::result_of::value_of::type T44; typedef typename fusion::result_of::value_of::type T45; typedef typename fusion::result_of::value_of::type T46; typedef typename fusion::result_of::value_of::type T47; typedef typename fusion::result_of::value_of::type T48; typedef typename fusion::result_of::value_of::type T49; + typedef typename fusion::result_of::next::type I1; typedef typename fusion::result_of::next::type I2; typedef typename fusion::result_of::next::type I3; typedef typename fusion::result_of::next::type I4; typedef typename fusion::result_of::next::type I5; typedef typename fusion::result_of::next::type I6; typedef typename fusion::result_of::next::type I7; typedef typename fusion::result_of::next::type I8; typedef typename fusion::result_of::next::type I9; typedef typename fusion::result_of::next::type I10; typedef typename fusion::result_of::next::type I11; typedef typename fusion::result_of::next::type I12; typedef typename fusion::result_of::next::type I13; typedef typename fusion::result_of::next::type I14; typedef typename fusion::result_of::next::type I15; typedef typename fusion::result_of::next::type I16; typedef typename fusion::result_of::next::type I17; typedef typename fusion::result_of::next::type I18; typedef typename fusion::result_of::next::type I19; typedef typename fusion::result_of::next::type I20; typedef typename fusion::result_of::next::type I21; typedef typename fusion::result_of::next::type I22; typedef typename fusion::result_of::next::type I23; typedef typename fusion::result_of::next::type I24; typedef typename fusion::result_of::next::type I25; typedef typename fusion::result_of::next::type I26; typedef typename fusion::result_of::next::type I27; typedef typename fusion::result_of::next::type I28; typedef typename fusion::result_of::next::type I29; typedef typename fusion::result_of::next::type I30; typedef typename fusion::result_of::next::type I31; typedef typename fusion::result_of::next::type I32; typedef typename fusion::result_of::next::type I33; typedef typename fusion::result_of::next::type I34; typedef typename fusion::result_of::next::type I35; typedef typename fusion::result_of::next::type I36; typedef typename fusion::result_of::next::type I37; typedef typename fusion::result_of::next::type I38; typedef typename fusion::result_of::next::type I39; typedef typename fusion::result_of::next::type I40; typedef typename fusion::result_of::next::type I41; typedef typename fusion::result_of::next::type I42; typedef typename fusion::result_of::next::type I43; typedef typename fusion::result_of::next::type I44; typedef typename fusion::result_of::next::type I45; typedef typename fusion::result_of::next::type I46; typedef typename fusion::result_of::next::type I47; typedef typename fusion::result_of::next::type I48; typedef typename fusion::result_of::next::type I49; + typedef pair_from D0; typedef typename D0::type T0; typedef pair_from D1; typedef typename D1::type T1; typedef pair_from D2; typedef typename D2::type T2; typedef pair_from D3; typedef typename D3::type T3; typedef pair_from D4; typedef typename D4::type T4; typedef pair_from D5; typedef typename D5::type T5; typedef pair_from D6; typedef typename D6::type T6; typedef pair_from D7; typedef typename D7::type T7; typedef pair_from D8; typedef typename D8::type T8; typedef pair_from D9; typedef typename D9::type T9; typedef pair_from D10; typedef typename D10::type T10; typedef pair_from D11; typedef typename D11::type T11; typedef pair_from D12; typedef typename D12::type T12; typedef pair_from D13; typedef typename D13::type T13; typedef pair_from D14; typedef typename D14::type T14; typedef pair_from D15; typedef typename D15::type T15; typedef pair_from D16; typedef typename D16::type T16; typedef pair_from D17; typedef typename D17::type T17; typedef pair_from D18; typedef typename D18::type T18; typedef pair_from D19; typedef typename D19::type T19; typedef pair_from D20; typedef typename D20::type T20; typedef pair_from D21; typedef typename D21::type T21; typedef pair_from D22; typedef typename D22::type T22; typedef pair_from D23; typedef typename D23::type T23; typedef pair_from D24; typedef typename D24::type T24; typedef pair_from D25; typedef typename D25::type T25; typedef pair_from D26; typedef typename D26::type T26; typedef pair_from D27; typedef typename D27::type T27; typedef pair_from D28; typedef typename D28::type T28; typedef pair_from D29; typedef typename D29::type T29; typedef pair_from D30; typedef typename D30::type T30; typedef pair_from D31; typedef typename D31::type T31; typedef pair_from D32; typedef typename D32::type T32; typedef pair_from D33; typedef typename D33::type T33; typedef pair_from D34; typedef typename D34::type T34; typedef pair_from D35; typedef typename D35::type T35; typedef pair_from D36; typedef typename D36::type T36; typedef pair_from D37; typedef typename D37::type T37; typedef pair_from D38; typedef typename D38::type T38; typedef pair_from D39; typedef typename D39::type T39; typedef pair_from D40; typedef typename D40::type T40; typedef pair_from D41; typedef typename D41::type T41; typedef pair_from D42; typedef typename D42::type T42; typedef pair_from D43; typedef typename D43::type T43; typedef pair_from D44; typedef typename D44::type T44; typedef pair_from D45; typedef typename D45::type T45; typedef pair_from D46; typedef typename D46::type T46; typedef pair_from D47; typedef typename D47::type T47; typedef pair_from D48; typedef typename D48::type T48; typedef pair_from D49; typedef typename D49::type T49; typedef map type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { typedef apply gen; typedef typename gen::type result; typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18); typename gen::I20 i20 = fusion::next(i19); typename gen::I21 i21 = fusion::next(i20); typename gen::I22 i22 = fusion::next(i21); typename gen::I23 i23 = fusion::next(i22); typename gen::I24 i24 = fusion::next(i23); typename gen::I25 i25 = fusion::next(i24); typename gen::I26 i26 = fusion::next(i25); typename gen::I27 i27 = fusion::next(i26); typename gen::I28 i28 = fusion::next(i27); typename gen::I29 i29 = fusion::next(i28); typename gen::I30 i30 = fusion::next(i29); typename gen::I31 i31 = fusion::next(i30); typename gen::I32 i32 = fusion::next(i31); typename gen::I33 i33 = fusion::next(i32); typename gen::I34 i34 = fusion::next(i33); typename gen::I35 i35 = fusion::next(i34); typename gen::I36 i36 = fusion::next(i35); typename gen::I37 i37 = fusion::next(i36); typename gen::I38 i38 = fusion::next(i37); typename gen::I39 i39 = fusion::next(i38); typename gen::I40 i40 = fusion::next(i39); typename gen::I41 i41 = fusion::next(i40); typename gen::I42 i42 = fusion::next(i41); typename gen::I43 i43 = fusion::next(i42); typename gen::I44 i44 = fusion::next(i43); typename gen::I45 i45 = fusion::next(i44); typename gen::I46 i46 = fusion::next(i45); typename gen::I47 i47 = fusion::next(i46); typename gen::I48 i48 = fusion::next(i47); typename gen::I49 i49 = fusion::next(i48); - return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49); + return result(gen::D0::call(i0) , gen::D1::call(i1) , gen::D2::call(i2) , gen::D3::call(i3) , gen::D4::call(i4) , gen::D5::call(i5) , gen::D6::call(i6) , gen::D7::call(i7) , gen::D8::call(i8) , gen::D9::call(i9) , gen::D10::call(i10) , gen::D11::call(i11) , gen::D12::call(i12) , gen::D13::call(i13) , gen::D14::call(i14) , gen::D15::call(i15) , gen::D16::call(i16) , gen::D17::call(i17) , gen::D18::call(i18) , gen::D19::call(i19) , gen::D20::call(i20) , gen::D21::call(i21) , gen::D22::call(i22) , gen::D23::call(i23) , gen::D24::call(i24) , gen::D25::call(i25) , gen::D26::call(i26) , gen::D27::call(i27) , gen::D28::call(i28) , gen::D29::call(i29) , gen::D30::call(i30) , gen::D31::call(i31) , gen::D32::call(i32) , gen::D33::call(i33) , gen::D34::call(i34) , gen::D35::call(i35) , gen::D36::call(i36) , gen::D37::call(i37) , gen::D38::call(i38) , gen::D39::call(i39) , gen::D40::call(i40) , gen::D41::call(i41) , gen::D42::call(i42) , gen::D43::call(i43) , gen::D44::call(i44) , gen::D45::call(i45) , gen::D46::call(i46) , gen::D47::call(i47) , gen::D48::call(i48) , gen::D49::call(i49)); } }; }}} diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp similarity index 63% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp index 93455c7196..c6cd526a60 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/map.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_MAP_SIZE <= 10 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 20 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 30 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 40 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_MAP_SIZE out of bounds for preprocessed headers" #endif diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map10.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp similarity index 81% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map10.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp index fdf28eb2a1..3948e81068 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/map10.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map10.hpp @@ -21,40 +21,60 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED map() : data() {} template + BOOST_FUSION_GPU_ENABLED map(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit map(T0 const& _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} template - map& - operator=(T const& rhs) + BOOST_FUSION_GPU_ENABLED + map& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + map& operator=(map const& rhs) + { + data = rhs.data; + return *this; + } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map10_fwd.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map10_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map10_fwd.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map10_fwd.hpp diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map20.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp similarity index 87% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map20.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp index 33cd2e5956..f562fad610 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/map20.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map20.hpp @@ -21,60 +21,90 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED map() : data() {} template + BOOST_FUSION_GPU_ENABLED map(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit map(T0 const& _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} template - map& - operator=(T const& rhs) + BOOST_FUSION_GPU_ENABLED + map& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + map& operator=(map const& rhs) + { + data = rhs.data; + return *this; + } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map20_fwd.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map20_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map20_fwd.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map20_fwd.hpp diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map30.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp similarity index 91% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map30.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp index 54f492d0fd..3cbf4018b8 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/map30.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map30.hpp @@ -21,80 +21,120 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED map() : data() {} template + BOOST_FUSION_GPU_ENABLED map(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit map(T0 const& _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} template - map& - operator=(T const& rhs) + BOOST_FUSION_GPU_ENABLED + map& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + map& operator=(map const& rhs) + { + data = rhs.data; + return *this; + } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map30_fwd.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map30_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map30_fwd.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map30_fwd.hpp diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map40.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp similarity index 93% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map40.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp index 7060a6707b..2a38432805 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/map40.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map40.hpp @@ -21,100 +21,150 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED map() : data() {} template + BOOST_FUSION_GPU_ENABLED map(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit map(T0 const& _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} template - map& - operator=(T const& rhs) + BOOST_FUSION_GPU_ENABLED + map& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + map& operator=(map const& rhs) + { + data = rhs.data; + return *this; + } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map40_fwd.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map40_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map40_fwd.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map40_fwd.hpp diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map50.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp similarity index 94% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map50.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp index 1da736410b..e2cca91587 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/map50.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map50.hpp @@ -21,120 +21,180 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED map() : data() {} template + BOOST_FUSION_GPU_ENABLED map(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit map(T0 const& _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48) {} + BOOST_FUSION_GPU_ENABLED map(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48 , T49 const& _49) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49) {} template - map& - operator=(T const& rhs) + BOOST_FUSION_GPU_ENABLED + map& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + map& operator=(map const& rhs) + { + data = rhs.data; + return *this; + } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map50_fwd.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map50_fwd.hpp similarity index 100% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map50_fwd.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map50_fwd.hpp diff --git a/3party/boost/boost/fusion/container/map/detail/preprocessed/map_fwd.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp similarity index 62% rename from 3party/boost/boost/fusion/container/map/detail/preprocessed/map_fwd.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp index e478a6f859..2e66a4577f 100644 --- a/3party/boost/boost/fusion/container/map/detail/preprocessed/map_fwd.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/preprocessed/map_fwd.hpp @@ -8,15 +8,15 @@ ==============================================================================*/ #if FUSION_MAX_MAP_SIZE <= 10 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 20 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 30 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 40 -#include +#include #elif FUSION_MAX_MAP_SIZE <= 50 -#include +#include #else #error "FUSION_MAX_MAP_SIZE out of bounds for preprocessed headers" #endif diff --git a/3party/boost/boost/fusion/container/map/detail/cpp03/value_at_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/value_at_impl.hpp new file mode 100644 index 0000000000..d61ab2038a --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/value_at_impl.hpp @@ -0,0 +1,35 @@ +/*============================================================================= + Copyright (c) 2001-2011 Joel de Guzman + Copyright (c) 2011 Brandon Kohn + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP) +#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP + +#include +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct value_at_impl; + + template <> + struct value_at_impl + { + template + struct apply + { + typedef typename mpl::at::type type; + }; + }; + } +}} + +#endif //BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP diff --git a/3party/boost/boost/fusion/container/map/detail/value_of_data_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp similarity index 89% rename from 3party/boost/boost/fusion/container/map/detail/value_of_data_impl.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp index 28d21678f0..f6d24aed2d 100644 --- a/3party/boost/boost/fusion/container/map/detail/value_of_data_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/value_of_data_impl.hpp @@ -8,7 +8,8 @@ #ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_DATA_IMPL_HPP #define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_DATA_IMPL_HPP -#include +#include +#include namespace boost { namespace fusion { namespace extension { diff --git a/3party/boost/boost/fusion/container/map/detail/value_of_impl.hpp b/3party/boost/boost/fusion/container/map/detail/cpp03/value_of_impl.hpp similarity index 96% rename from 3party/boost/boost/fusion/container/map/detail/value_of_impl.hpp rename to 3party/boost/boost/fusion/container/map/detail/cpp03/value_of_impl.hpp index 26b19f20f3..9b0f9a074b 100644 --- a/3party/boost/boost/fusion/container/map/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/cpp03/value_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_IMPL_HPP #define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_IMPL_HPP +#include #include #include diff --git a/3party/boost/boost/fusion/container/map/detail/end_impl.hpp b/3party/boost/boost/fusion/container/map/detail/end_impl.hpp index 1375b7af0e..fea45db37b 100644 --- a/3party/boost/boost/fusion/container/map/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/end_impl.hpp @@ -1,43 +1,40 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2009 Christopher Schmidt + Copyright (c) 2005-2013 Joel de Guzman Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_END_IMPL_02042013_0857) +#define BOOST_FUSION_MAP_END_IMPL_02042013_0857 -#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_END_IMPL_HPP -#define BOOST_FUSION_CONTAINER_MAP_DETAIL_END_IMPL_HPP +#include +#include -#include - -namespace boost { namespace fusion { namespace extension +namespace boost { namespace fusion { - template - struct end_impl; + struct map_tag; - template <> - struct end_impl + namespace extension { - template - struct apply - { - typedef - basic_iterator< - map_iterator_tag - , typename Seq::category - , Seq - , Seq::size::value - > - type; + template + struct end_impl; - static type - call(Seq& seq) + template<> + struct end_impl + { + template + struct apply { - return type(seq,0); - } + typedef map_iterator type; + + BOOST_FUSION_GPU_ENABLED + static type call(Sequence& seq) + { + return type(seq); + } + }; }; - }; -}}} + } +}} #endif diff --git a/3party/boost/boost/fusion/container/map/detail/map_impl.hpp b/3party/boost/boost/fusion/container/map/detail/map_impl.hpp new file mode 100644 index 0000000000..f70d139231 --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/map_impl.hpp @@ -0,0 +1,206 @@ +/*============================================================================= + Copyright (c) 2005-2013 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_IMPL_02032013_2233) +#define BOOST_FUSION_MAP_IMPL_02032013_2233 + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct fusion_sequence_tag; +}} + +namespace boost { namespace fusion { namespace detail +{ + struct map_impl_from_iterator {}; + + template + struct map_impl; + + template + struct map_impl + { + typedef fusion_sequence_tag tag; + static int const index = index_; + static int const size = 0; + + BOOST_FUSION_GPU_ENABLED + map_impl() {} + + template + BOOST_FUSION_GPU_ENABLED + map_impl(Iterator const& iter, map_impl_from_iterator) + {} + + template + BOOST_FUSION_GPU_ENABLED + void assign(Iterator const& iter, map_impl_from_iterator) + {} + + BOOST_FUSION_GPU_ENABLED + void get(); + BOOST_FUSION_GPU_ENABLED + void get_val(); + BOOST_FUSION_GPU_ENABLED + void get_key(); + }; + + template + struct map_impl : map_impl + { + typedef fusion_sequence_tag tag; + typedef map_impl rest_type; + + using rest_type::get; + using rest_type::get_val; + using rest_type::get_key; + + static int const index = index_; + static int const size = rest_type::size + 1; + + typedef Pair pair_type; + typedef typename Pair::first_type key_type; + typedef typename Pair::second_type value_type; + + BOOST_FUSION_GPU_ENABLED + map_impl() + : rest_type(), element() + {} + + BOOST_FUSION_GPU_ENABLED + map_impl(map_impl const& rhs) + : rest_type(rhs.get_base()), element(rhs.element) + {} + + BOOST_FUSION_GPU_ENABLED + map_impl(map_impl&& rhs) + : rest_type(std::forward(*static_cast(&rhs))) + , element(std::forward(rhs.element)) + {} + + template + BOOST_FUSION_GPU_ENABLED + map_impl(map_impl const& rhs) + : rest_type(rhs.get_base()), element(rhs.element) + {} + + BOOST_FUSION_GPU_ENABLED + map_impl(typename detail::call_param::type element_ + , typename detail::call_param::type... rest) + : rest_type(rest...), element(element_) + {} + + BOOST_FUSION_GPU_ENABLED + map_impl(Pair&& element_, T&&... rest) + : rest_type(std::forward(rest)...) + , element(std::forward(element_)) + {} + + template + BOOST_FUSION_GPU_ENABLED + map_impl(Iterator const& iter, map_impl_from_iterator fi) + : rest_type(fusion::next(iter), fi) + , element(*iter) + {} + + BOOST_FUSION_GPU_ENABLED + rest_type& get_base() + { + return *this; + } + + BOOST_FUSION_GPU_ENABLED + rest_type const& get_base() const + { + return *this; + } + + BOOST_FUSION_GPU_ENABLED + value_type get_val(mpl::identity); + BOOST_FUSION_GPU_ENABLED + pair_type get_val(mpl::int_); + BOOST_FUSION_GPU_ENABLED + value_type get_val(mpl::identity) const; + BOOST_FUSION_GPU_ENABLED + pair_type get_val(mpl::int_) const; + + BOOST_FUSION_GPU_ENABLED + mpl::identity get_key(mpl::int_); + BOOST_FUSION_GPU_ENABLED + mpl::identity get_key(mpl::int_) const; + + BOOST_FUSION_GPU_ENABLED + typename cref_result::type + get(mpl::identity) const + { + return element.second; + } + + BOOST_FUSION_GPU_ENABLED + typename ref_result::type + get(mpl::identity) + { + return element.second; + } + + BOOST_FUSION_GPU_ENABLED + typename cref_result::type + get(mpl::int_) const + { + return element; + } + + BOOST_FUSION_GPU_ENABLED + typename ref_result::type + get(mpl::int_) + { + return element; + } + + template + BOOST_FUSION_GPU_ENABLED + map_impl& operator=(map_impl const& rhs) + { + rest_type::operator=(rhs); + element = rhs.element; + return *this; + } + + BOOST_FUSION_GPU_ENABLED + map_impl& operator=(map_impl const& rhs) + { + rest_type::operator=(rhs); + element = rhs.element; + return *this; + } + + BOOST_FUSION_GPU_ENABLED + map_impl& operator=(map_impl&& rhs) + { + rest_type::operator=(std::forward(rhs)); + element = std::forward(rhs.element); + return *this; + } + + template + BOOST_FUSION_GPU_ENABLED + void assign(Iterator const& iter, map_impl_from_iterator fi) + { + rest_type::assign(fusion::next(iter), fi); + element = *iter; + } + + Pair element; + }; +}}} + +#endif diff --git a/3party/boost/boost/spirit/home/phoenix/stl.hpp b/3party/boost/boost/fusion/container/map/detail/map_index.hpp similarity index 50% rename from 3party/boost/boost/spirit/home/phoenix/stl.hpp rename to 3party/boost/boost/fusion/container/map/detail/map_index.hpp index 12832f7d9c..9326cdeda9 100644 --- a/3party/boost/boost/spirit/home/phoenix/stl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/map_index.hpp @@ -1,15 +1,19 @@ /*============================================================================= - Copyright (c) 2006 Daniel Wallin - Copyright (c) 2005 Dan Marsden - Copyright (c) 2007 Joel de Guzman + Copyright (c) 2005-2013 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#ifndef PHOENIX_STL_HPP -#define PHOENIX_STL_HPP +#if !defined(BOOST_FUSION_MAP_INDEX_02032013_2233) +#define BOOST_FUSION_MAP_INDEX_02032013_2233 -#include -#include +namespace boost { namespace fusion { namespace detail +{ + template + struct map_index + { + static int const value = N; + }; +}}} #endif diff --git a/3party/boost/boost/fusion/container/map/detail/value_at_impl.hpp b/3party/boost/boost/fusion/container/map/detail/value_at_impl.hpp index 31d9b38383..f98c580068 100644 --- a/3party/boost/boost/fusion/container/map/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/container/map/detail/value_at_impl.hpp @@ -1,13 +1,13 @@ /*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2011 Brandon Kohn + Copyright (c) 2001-2013 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP) -#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP +#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_02042013_0821) +#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_02042013_0821 +#include #include namespace boost { namespace fusion @@ -23,12 +23,16 @@ namespace boost { namespace fusion struct value_at_impl { template - struct apply + struct apply { - typedef typename mpl::at::type type; + typedef mpl::int_ index; + typedef + decltype(std::declval().get_val(index())) + type; }; }; } }} -#endif //BOOST_FUSION_MAP_DETAIL_VALUE_AT_IMPL_HPP +#endif + diff --git a/3party/boost/boost/fusion/container/map/detail/value_at_key_impl.hpp b/3party/boost/boost/fusion/container/map/detail/value_at_key_impl.hpp new file mode 100644 index 0000000000..00a54c4e2d --- /dev/null +++ b/3party/boost/boost/fusion/container/map/detail/value_at_key_impl.hpp @@ -0,0 +1,39 @@ +/*============================================================================= + Copyright (c) 2001-2013 Joel de Guzman + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_DETAIL_VALUE_AT_KEY_IMPL_02042013_0821) +#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_KEY_IMPL_02042013_0821 + +#include +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct map_tag; + + namespace extension + { + template + struct value_at_key_impl; + + template <> + struct value_at_key_impl + { + template + struct apply + { + typedef + decltype(std::declval().get_val(mpl::identity())) + type; + }; + }; + } +}} + +#endif diff --git a/3party/boost/boost/fusion/container/map/map.hpp b/3party/boost/boost/fusion/container/map/map.hpp index 5152e6e19d..80e53ee777 100644 --- a/3party/boost/boost/fusion/container/map/map.hpp +++ b/3party/boost/boost/fusion/container/map/map.hpp @@ -4,96 +4,129 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_MAP_07212005_1106) -#define FUSION_MAP_07212005_1106 +#if !defined(FUSION_MAP_MAIN_07212005_1106) +#define FUSION_MAP_MAIN_07212005_1106 -#include -#include -#include +#include #include -#include -#include +#include + +/////////////////////////////////////////////////////////////////////////////// +// Without variadics, we will use the PP version +/////////////////////////////////////////////////////////////////////////////// +#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) +# include +#else + +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include -#else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map" FUSION_MAX_MAP_SIZE_STR ".hpp") -#endif - -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif +#include namespace boost { namespace fusion { - struct void_; - struct fusion_sequence_tag; + struct map_tag; - template - struct map : sequence_base > + template + struct map : detail::map_impl<0, T...>, sequence_base> { - struct category : random_access_traversal_tag, associative_tag {}; - typedef map_tag fusion_tag; - typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef detail::map_impl<0, T...> base_type; + + struct category : random_access_traversal_tag, associative_tag {}; + typedef mpl::int_ size; typedef mpl::false_ is_view; - typedef vector< - BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> - storage_type; + BOOST_FUSION_GPU_ENABLED + map() {} - typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED + map(map const& seq) + : base_type(seq.base()) + {} - map() - : data() {} + BOOST_FUSION_GPU_ENABLED + map(map&& seq) + : base_type(std::forward(seq)) + {} template - map(Sequence const& rhs) - : data(rhs) {} + BOOST_FUSION_GPU_ENABLED + map(Sequence const& seq + , typename enable_if>::type* /*dummy*/ = 0) + : base_type(begin(seq), detail::map_impl_from_iterator()) + {} - #include + template + BOOST_FUSION_GPU_ENABLED + map(Sequence& seq + , typename enable_if>::type* /*dummy*/ = 0) + : base_type(begin(seq), detail::map_impl_from_iterator()) + {} - template - map& - operator=(T const& rhs) + template + BOOST_FUSION_GPU_ENABLED + map(Sequence&& seq + , typename enable_if>::type* /*dummy*/ = 0) + : base_type(begin(seq), detail::map_impl_from_iterator()) + {} + + template + BOOST_FUSION_GPU_ENABLED + map(First const& first, T_ const&... rest) + : base_type(first, rest...) + {} + + template + BOOST_FUSION_GPU_ENABLED + map(First&& first, T_&&... rest) + : base_type(std::forward(first), std::forward(rest)...) + {} + + BOOST_FUSION_GPU_ENABLED + map& operator=(map const& rhs) { - data = rhs; + base_type::operator=(rhs.base()); return *this; } - storage_type& get_data() { return data; } - storage_type const& get_data() const { return data; } + BOOST_FUSION_GPU_ENABLED + map& operator=(map&& rhs) + { + base_type::operator=(std::forward(rhs.base())); + return *this; + } - private: + template + BOOST_FUSION_GPU_ENABLED + typename enable_if, map&>::type + operator=(Sequence const& seq) + { + base().assign(begin(seq), detail::map_impl_from_iterator()); + return *this; + } - storage_type data; + BOOST_FUSION_GPU_ENABLED + base_type& base() { return *this; } + BOOST_FUSION_GPU_ENABLED + base_type const& base() const { return *this; } }; }} -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) #endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - #endif diff --git a/3party/boost/boost/fusion/container/map/map_fwd.hpp b/3party/boost/boost/fusion/container/map/map_fwd.hpp index 76c5eea7fe..0eca6299ff 100644 --- a/3party/boost/boost/fusion/container/map/map_fwd.hpp +++ b/3party/boost/boost/fusion/container/map/map_fwd.hpp @@ -4,49 +4,42 @@ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(FUSION_MAP_FORWARD_07212005_1105) -#define FUSION_MAP_FORWARD_07212005_1105 +#if !defined(FUSION_MAP_FORWARD_MAIN_07212005_1105) +#define FUSION_MAP_FORWARD_MAIN_07212005_1105 -#include -#include +#include +#include -#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) -#include +#if (defined(BOOST_NO_CXX11_DECLTYPE) \ + || defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) \ + || defined(BOOST_NO_CXX11_RVALUE_REFERENCES)) \ + || (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) +# if defined(BOOST_FUSION_HAS_VARIADIC_MAP) +# undef BOOST_FUSION_HAS_VARIADIC_MAP +# endif #else -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 2, line: 0, output: "detail/preprocessed/map" FUSION_MAX_MAP_SIZE_STR "_fwd.hpp") +# if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) +# define BOOST_FUSION_HAS_VARIADIC_MAP +# endif #endif -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman +/////////////////////////////////////////////////////////////////////////////// +// With no decltype and variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// +#if !defined(BOOST_FUSION_HAS_VARIADIC_MAP) +# include +#else - Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - This is an auto-generated file. Do not edit! -==============================================================================*/ - -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(preserve: 1) -#endif +#include +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// namespace boost { namespace fusion { - struct void_; - struct map_tag; - struct map_iterator_tag; - - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - FUSION_MAX_MAP_SIZE, typename T, void_) - > + template struct map; }} -#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) -#pragma wave option(output: null) #endif - -#endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES - #endif diff --git a/3party/boost/boost/fusion/container/map/map_iterator.hpp b/3party/boost/boost/fusion/container/map/map_iterator.hpp new file mode 100644 index 0000000000..1c03d8eb9e --- /dev/null +++ b/3party/boost/boost/fusion/container/map/map_iterator.hpp @@ -0,0 +1,153 @@ +/*============================================================================= + Copyright (c) 2005-2013 Joel de Guzman + Copyright (c) 2005-2006 Dan Marsden + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#if !defined(BOOST_FUSION_MAP_ITERATOR_02042013_0835) +#define BOOST_FUSION_MAP_ITERATOR_02042013_0835 + +#include +#include +#include +#include + +namespace boost { namespace fusion +{ + struct random_access_traversal_tag; + + template + struct map_iterator + : iterator_facade< + map_iterator + , typename Seq::category> + { + typedef Seq sequence; + typedef mpl::int_ index; + + BOOST_FUSION_GPU_ENABLED + map_iterator(Seq& seq) + : seq_(seq) + {} + + template + struct value_of + { + typedef typename Iterator::sequence sequence; + typedef typename Iterator::index index; + typedef + decltype(std::declval().get_val(index())) + type; + }; + + template + struct value_of_data + { + typedef typename Iterator::sequence sequence; + typedef typename Iterator::index index; + typedef + decltype(std::declval().get_val(index()).second) + type; + }; + + template + struct key_of + { + typedef typename Iterator::sequence sequence; + typedef typename Iterator::index index; + typedef decltype(std::declval().get_key(index())) key_identity_type; + typedef typename key_identity_type::type type; + }; + + template + struct deref + { + typedef typename Iterator::sequence sequence; + typedef typename Iterator::index index; + typedef + decltype(std::declval().get(index())) + type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Iterator const& it) + { + return it.seq_.get(typename Iterator::index()); + } + }; + + template + struct deref_data + { + typedef typename Iterator::sequence sequence; + typedef typename Iterator::index index; + typedef + decltype(std::declval().get(index()).second) + type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Iterator const& it) + { + return it.seq_.get(typename Iterator::index()).second; + } + }; + + template + struct advance + { + typedef typename Iterator::index index; + typedef typename Iterator::sequence sequence; + typedef map_iterator type; + + BOOST_FUSION_GPU_ENABLED + static type + call(Iterator const& i) + { + return type(i.seq_); + } + }; + + template + struct next + : advance > + {}; + + template + struct prior + : advance > + {}; + + template + struct distance + { + typedef typename + mpl::minus< + typename I2::index, typename I1::index + >::type + type; + + BOOST_FUSION_GPU_ENABLED + static type + call(I1 const&, I2 const&) + { + return type(); + } + }; + + template + struct equal_to + : mpl::equal_to + {}; + + Seq& seq_; + + private: + // silence MSVC warning C4512: assignment operator could not be generated + map_iterator& operator= (map_iterator const&); + }; + +}} + +#endif diff --git a/3party/boost/boost/fusion/container/set.hpp b/3party/boost/boost/fusion/container/set.hpp index 81ac261ee4..6445397464 100644 --- a/3party/boost/boost/fusion/container/set.hpp +++ b/3party/boost/boost/fusion/container/set.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_CLASS_SET_10022005_0607) #define FUSION_SEQUENCE_CLASS_SET_10022005_0607 +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/set/convert.hpp b/3party/boost/boost/fusion/container/set/convert.hpp index c268e5d9d1..631c251d44 100644 --- a/3party/boost/boost/fusion/container/set/convert.hpp +++ b/3party/boost/boost/fusion/container/set/convert.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CONVERT_09232005_1341) #define FUSION_CONVERT_09232005_1341 +#include #include #include #include @@ -28,6 +29,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_set::type as_set(Sequence& seq) { @@ -36,6 +38,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_set::type as_set(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/container/set/detail/as_set.hpp b/3party/boost/boost/fusion/container/set/detail/as_set.hpp index 19c0b3521d..26a719e3be 100644 --- a/3party/boost/boost/fusion/container/set/detail/as_set.hpp +++ b/3party/boost/boost/fusion/container/set/detail/as_set.hpp @@ -35,6 +35,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator) { @@ -115,6 +116,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/set/detail/begin_impl.hpp b/3party/boost/boost/fusion/container/set/detail/begin_impl.hpp index 348af7ed37..df522b5742 100644 --- a/3party/boost/boost/fusion/container/set/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/container/set/detail/begin_impl.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_BEGIN_IMPL_HPP #define BOOST_FUSION_CONTAINER_SET_DETAIL_BEGIN_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension @@ -31,6 +32,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/container/set/detail/convert_impl.hpp b/3party/boost/boost/fusion/container/set/detail/convert_impl.hpp index a9fba752df..4a24dff883 100644 --- a/3party/boost/boost/fusion/container/set/detail/convert_impl.hpp +++ b/3party/boost/boost/fusion/container/set/detail/convert_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_CONVERT_IMPL_09232005_1341) #define FUSION_CONVERT_IMPL_09232005_1341 +#include #include #include #include @@ -33,6 +34,7 @@ namespace boost { namespace fusion template apply::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return gen::call(fusion::begin(seq)); diff --git a/3party/boost/boost/fusion/container/set/detail/deref_data_impl.hpp b/3party/boost/boost/fusion/container/set/detail/deref_data_impl.hpp index 7238cc6f11..05e44a9226 100644 --- a/3party/boost/boost/fusion/container/set/detail/deref_data_impl.hpp +++ b/3party/boost/boost/fusion/container/set/detail/deref_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_DEREF_DATA_IMPL_HPP #define BOOST_FUSION_CONTAINER_SET_DETAIL_DEREF_DATA_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/container/set/detail/deref_impl.hpp b/3party/boost/boost/fusion/container/set/detail/deref_impl.hpp index 10a0349687..4a43819d13 100644 --- a/3party/boost/boost/fusion/container/set/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/container/set/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_DEREF_IMPL_HPP #define BOOST_FUSION_CONTAINER_SET_DETAIL_DEREF_IMPL_HPP +#include #include #include @@ -33,6 +34,7 @@ namespace boost { namespace fusion { namespace extension >::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/container/set/detail/end_impl.hpp b/3party/boost/boost/fusion/container/set/detail/end_impl.hpp index 13fa5b53db..b793addc1e 100644 --- a/3party/boost/boost/fusion/container/set/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/container/set/detail/end_impl.hpp @@ -9,6 +9,7 @@ #ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_END_IMPL_HPP #define BOOST_FUSION_CONTAINER_SET_DETAIL_END_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension @@ -31,6 +32,7 @@ namespace boost { namespace fusion { namespace extension > type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/container/set/detail/key_of_impl.hpp b/3party/boost/boost/fusion/container/set/detail/key_of_impl.hpp index 9c56aaf5da..0e453ee23c 100644 --- a/3party/boost/boost/fusion/container/set/detail/key_of_impl.hpp +++ b/3party/boost/boost/fusion/container/set/detail/key_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_KEY_OF_IMPL_HPP #define BOOST_FUSION_CONTAINER_SET_DETAIL_KEY_OF_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set10.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set10.hpp index a7386dc6be..f285cd5aad 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set10.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set10.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set20.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set20.hpp index 0e7da29f02..b7ad7fa39a 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set20.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set20.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set30.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set30.hpp index b7bfedcca1..7a97a8e55a 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set30.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set30.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set40.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set40.hpp index 77930e2954..8e98f68a8b 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set40.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set40.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -619,6 +649,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -639,6 +670,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -659,6 +691,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -679,6 +712,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -699,6 +733,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -719,6 +754,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -739,6 +775,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -759,6 +796,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -779,6 +817,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -799,6 +838,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set50.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set50.hpp index f33cbb3b78..6cefd9a15c 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set50.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/as_set50.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -619,6 +649,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -639,6 +670,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -659,6 +691,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -679,6 +712,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -699,6 +733,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -719,6 +754,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -739,6 +775,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -759,6 +796,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -779,6 +817,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -799,6 +838,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -819,6 +859,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -839,6 +880,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -859,6 +901,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -879,6 +922,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -899,6 +943,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -919,6 +964,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -939,6 +985,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -959,6 +1006,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -979,6 +1027,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -999,6 +1048,7 @@ namespace boost { namespace fusion { namespace detail typedef set type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/set10.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/set10.hpp index d53bd3f81f..92c3465314 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/set10.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/set10.hpp @@ -21,40 +21,55 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED set() : data() {} template + BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit set(typename detail::call_param::type _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} template + BOOST_FUSION_GPU_ENABLED set& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/set20.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/set20.hpp index 259fcf3cb9..9860456392 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/set20.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/set20.hpp @@ -21,60 +21,85 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED set() : data() {} template + BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit set(typename detail::call_param::type _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} template + BOOST_FUSION_GPU_ENABLED set& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/set30.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/set30.hpp index b4fea40a33..7227bf71e8 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/set30.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/set30.hpp @@ -21,80 +21,115 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED set() : data() {} template + BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit set(typename detail::call_param::type _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} template + BOOST_FUSION_GPU_ENABLED set& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/set40.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/set40.hpp index 62ca9f2d69..f1944ca933 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/set40.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/set40.hpp @@ -21,100 +21,145 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED set() : data() {} template + BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit set(typename detail::call_param::type _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} template + BOOST_FUSION_GPU_ENABLED set& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/set/detail/preprocessed/set50.hpp b/3party/boost/boost/fusion/container/set/detail/preprocessed/set50.hpp index da9a25cc15..5464614420 100644 --- a/3party/boost/boost/fusion/container/set/detail/preprocessed/set50.hpp +++ b/3party/boost/boost/fusion/container/set/detail/preprocessed/set50.hpp @@ -21,120 +21,175 @@ namespace boost { namespace fusion T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> storage_type; typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED set() : data() {} template + BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs) : data(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit set(typename detail::call_param::type _0) : data(_0) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1) : data(_0 , _1) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : data(_0 , _1 , _2) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : data(_0 , _1 , _2 , _3) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : data(_0 , _1 , _2 , _3 , _4) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : data(_0 , _1 , _2 , _3 , _4 , _5) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48) {} + BOOST_FUSION_GPU_ENABLED set(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48 , typename detail::call_param::type _49) : data(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49) {} template + BOOST_FUSION_GPU_ENABLED set& operator=(T const& rhs) { data = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: storage_type data; diff --git a/3party/boost/boost/fusion/container/set/detail/set_forward_ctor.hpp b/3party/boost/boost/fusion/container/set/detail/set_forward_ctor.hpp index 789c7f3413..9e6fd926d4 100644 --- a/3party/boost/boost/fusion/container/set/detail/set_forward_ctor.hpp +++ b/3party/boost/boost/fusion/container/set/detail/set_forward_ctor.hpp @@ -27,6 +27,7 @@ #define N BOOST_PP_ITERATION() + BOOST_FUSION_GPU_ENABLED #if N == 1 explicit #endif diff --git a/3party/boost/boost/fusion/container/set/detail/value_of_data_impl.hpp b/3party/boost/boost/fusion/container/set/detail/value_of_data_impl.hpp index c98e5b9f77..9059dd87eb 100644 --- a/3party/boost/boost/fusion/container/set/detail/value_of_data_impl.hpp +++ b/3party/boost/boost/fusion/container/set/detail/value_of_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_VALUE_OF_DATA_IMPL_HPP #define BOOST_FUSION_CONTAINER_SET_DETAIL_VALUE_OF_DATA_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/container/set/detail/value_of_impl.hpp b/3party/boost/boost/fusion/container/set/detail/value_of_impl.hpp index 02218310ae..e12ab162c0 100644 --- a/3party/boost/boost/fusion/container/set/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/container/set/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_VALUE_OF_IMPL_HPP #define BOOST_FUSION_CONTAINER_SET_DETAIL_VALUE_OF_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/container/set/limits.hpp b/3party/boost/boost/fusion/container/set/limits.hpp index d01920e71d..adfecdbd0a 100644 --- a/3party/boost/boost/fusion/container/set/limits.hpp +++ b/3party/boost/boost/fusion/container/set/limits.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SET_LIMITS_09162005_1103) #define FUSION_SET_LIMITS_09162005_1103 +#include #include #if !defined(FUSION_MAX_SET_SIZE) diff --git a/3party/boost/boost/fusion/container/set/set.hpp b/3party/boost/boost/fusion/container/set/set.hpp index f26ea740ff..e1d019a77b 100644 --- a/3party/boost/boost/fusion/container/set/set.hpp +++ b/3party/boost/boost/fusion/container/set/set.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SET_09162005_1104) #define FUSION_SET_09162005_1104 +#include #include #include #include @@ -62,16 +63,19 @@ namespace boost { namespace fusion typedef typename storage_type::size size; + BOOST_FUSION_GPU_ENABLED set() : data() {} template + BOOST_FUSION_GPU_ENABLED set(Sequence const& rhs) : data(rhs) {} #include template + BOOST_FUSION_GPU_ENABLED set& operator=(T const& rhs) { @@ -79,7 +83,9 @@ namespace boost { namespace fusion return *this; } + BOOST_FUSION_GPU_ENABLED storage_type& get_data() { return data; } + BOOST_FUSION_GPU_ENABLED storage_type const& get_data() const { return data; } private: diff --git a/3party/boost/boost/fusion/container/set/set_fwd.hpp b/3party/boost/boost/fusion/container/set/set_fwd.hpp index 7b09d165ae..2de3db6d5b 100644 --- a/3party/boost/boost/fusion/container/set/set_fwd.hpp +++ b/3party/boost/boost/fusion/container/set/set_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SET_FORWARD_09162005_1102) #define FUSION_SET_FORWARD_09162005_1102 +#include #include #include diff --git a/3party/boost/boost/fusion/container/vector.hpp b/3party/boost/boost/fusion/container/vector.hpp index fa64cd0ff1..06fa5a04bb 100644 --- a/3party/boost/boost/fusion/container/vector.hpp +++ b/3party/boost/boost/fusion/container/vector.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602) #define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602 +#include #include #include diff --git a/3party/boost/boost/fusion/container/vector/convert.hpp b/3party/boost/boost/fusion/container/vector/convert.hpp index b317f995b7..0582fe5cbf 100644 --- a/3party/boost/boost/fusion/container/vector/convert.hpp +++ b/3party/boost/boost/fusion/container/vector/convert.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CONVERT_09222005_1104) #define FUSION_CONVERT_09222005_1104 +#include #include #include #include @@ -28,6 +29,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_vector::type as_vector(Sequence& seq) { @@ -36,6 +38,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::as_vector::type as_vector(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/container/vector/detail/advance_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/advance_impl.hpp index cded8f49f4..af45a1a8ef 100644 --- a/3party/boost/boost/fusion/container/vector/detail/advance_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/advance_impl.hpp @@ -29,6 +29,7 @@ namespace boost { namespace fusion typedef typename Iterator::vector vector; typedef vector_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/container/vector/detail/as_vector.hpp b/3party/boost/boost/fusion/container/vector/detail/as_vector.hpp index a311bd6389..2224fcc6ab 100644 --- a/3party/boost/boost/fusion/container/vector/detail/as_vector.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/as_vector.hpp @@ -35,6 +35,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator) { @@ -116,6 +117,7 @@ namespace boost { namespace fusion { namespace detail }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/vector/detail/at_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/at_impl.hpp index 0017d9c813..eb09b212a6 100644 --- a/3party/boost/boost/fusion/container/vector/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/at_impl.hpp @@ -1,12 +1,13 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_AT_IMPL_05042005_0741) #define FUSION_AT_IMPL_05042005_0741 +#include #include #include #include @@ -25,14 +26,16 @@ namespace boost { namespace fusion struct at_impl { template - struct apply + struct apply { typedef typename mpl::at::type element; typedef typename detail::ref_result::type type; - + + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { + BOOST_STATIC_ASSERT((N::value < Sequence::size::value)); return v.at_impl(N()); } }; @@ -42,10 +45,12 @@ namespace boost { namespace fusion { typedef typename mpl::at::type element; typedef typename detail::cref_result::type type; - + + BOOST_FUSION_GPU_ENABLED static type call(Sequence const& v) { + BOOST_STATIC_ASSERT((N::value < Sequence::size::value)); return v.at_impl(N()); } }; diff --git a/3party/boost/boost/fusion/container/vector/detail/begin_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/begin_impl.hpp index f5583ba6c1..026b34ff6e 100644 --- a/3party/boost/boost/fusion/container/vector/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_05042005_1136) #define FUSION_BEGIN_IMPL_05042005_1136 +#include #include namespace boost { namespace fusion @@ -26,6 +27,7 @@ namespace boost { namespace fusion { typedef vector_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/3party/boost/boost/fusion/container/vector/detail/convert_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/convert_impl.hpp index 633e688f02..ddf42590b0 100644 --- a/3party/boost/boost/fusion/container/vector/detail/convert_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/convert_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_CONVERT_IMPL_09222005_1104) #define FUSION_CONVERT_IMPL_09222005_1104 +#include #include #include #include @@ -33,6 +34,7 @@ namespace boost { namespace fusion template apply::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return gen::call(fusion::begin(seq)); diff --git a/3party/boost/boost/fusion/container/vector/detail/deref_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/deref_impl.hpp index 8c5fb94207..b338d2fe20 100644 --- a/3party/boost/boost/fusion/container/vector/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_05042005_1037) #define FUSION_DEREF_IMPL_05042005_1037 +#include #include #include #include @@ -41,6 +42,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/container/vector/detail/distance_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/distance_impl.hpp index 146d5ba12c..948355383f 100644 --- a/3party/boost/boost/fusion/container/vector/detail/distance_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/distance_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DISTANCE_IMPL_09172005_0751) #define FUSION_DISTANCE_IMPL_09172005_0751 +#include #include namespace boost { namespace fusion @@ -24,6 +25,7 @@ namespace boost { namespace fusion template struct apply : mpl::minus { + BOOST_FUSION_GPU_ENABLED static typename mpl::minus< typename Last::index, typename First::index>::type call(First const&, Last const&) diff --git a/3party/boost/boost/fusion/container/vector/detail/end_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/end_impl.hpp index fde365c7f8..14c6715775 100644 --- a/3party/boost/boost/fusion/container/vector/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_END_IMPL_05042005_1142) #define FUSION_END_IMPL_05042005_1142 +#include #include namespace boost { namespace fusion @@ -27,6 +28,7 @@ namespace boost { namespace fusion typedef typename Sequence::size size; typedef vector_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& v) { diff --git a/3party/boost/boost/fusion/container/vector/detail/equal_to_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/equal_to_impl.hpp index 3c6fcbd2ee..50420cc827 100644 --- a/3party/boost/boost/fusion/container/vector/detail/equal_to_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/equal_to_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_EQUAL_TO_IMPL_05052005_1215) #define FUSION_EQUAL_TO_IMPL_05052005_1215 +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/vector/detail/next_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/next_impl.hpp index 169297d524..78aef85d56 100644 --- a/3party/boost/boost/fusion/container/vector/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_05042005_1058) #define FUSION_NEXT_IMPL_05042005_1058 +#include #include namespace boost { namespace fusion @@ -30,6 +31,7 @@ namespace boost { namespace fusion typedef typename Iterator::index index; typedef vector_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp index 312a42a1ff..8a48beda9e 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector10.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef vector1 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef vector2 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef vector3 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef vector4 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef vector5 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef vector6 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef vector7 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef vector8 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef vector9 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef vector10 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp index 0893bcfdb3..63bb0d5899 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector20.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef vector1 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef vector2 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef vector3 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef vector4 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef vector5 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef vector6 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef vector7 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef vector8 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef vector9 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef vector10 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef vector11 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef vector12 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef vector13 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef vector14 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef vector15 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef vector16 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef vector17 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef vector18 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef vector19 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef vector20 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp index dcea3f4c6e..8888b2d8b9 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector30.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef vector1 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef vector2 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef vector3 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef vector4 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef vector5 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef vector6 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef vector7 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef vector8 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef vector9 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef vector10 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef vector11 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef vector12 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef vector13 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef vector14 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef vector15 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef vector16 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef vector17 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef vector18 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef vector19 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef vector20 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef vector21 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef vector22 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef vector23 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef vector24 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef vector25 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef vector26 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef vector27 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef vector28 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef vector29 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef vector30 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp index 465ae1191a..cfd7b055ec 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector40.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef vector1 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef vector2 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef vector3 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef vector4 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef vector5 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef vector6 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef vector7 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef vector8 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef vector9 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef vector10 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef vector11 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef vector12 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef vector13 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef vector14 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef vector15 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef vector16 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef vector17 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef vector18 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef vector19 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef vector20 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef vector21 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef vector22 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef vector23 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef vector24 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef vector25 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef vector26 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef vector27 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef vector28 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef vector29 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef vector30 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -619,6 +649,7 @@ namespace boost { namespace fusion { namespace detail typedef vector31 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -639,6 +670,7 @@ namespace boost { namespace fusion { namespace detail typedef vector32 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -659,6 +691,7 @@ namespace boost { namespace fusion { namespace detail typedef vector33 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -679,6 +712,7 @@ namespace boost { namespace fusion { namespace detail typedef vector34 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -699,6 +733,7 @@ namespace boost { namespace fusion { namespace detail typedef vector35 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -719,6 +754,7 @@ namespace boost { namespace fusion { namespace detail typedef vector36 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -739,6 +775,7 @@ namespace boost { namespace fusion { namespace detail typedef vector37 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -759,6 +796,7 @@ namespace boost { namespace fusion { namespace detail typedef vector38 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -779,6 +817,7 @@ namespace boost { namespace fusion { namespace detail typedef vector39 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -799,6 +838,7 @@ namespace boost { namespace fusion { namespace detail typedef vector40 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp index 5aa3fbc768..ea42ba2f8a 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/as_vector50.hpp @@ -19,6 +19,7 @@ namespace boost { namespace fusion { namespace detail typedef vector1 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -39,6 +40,7 @@ namespace boost { namespace fusion { namespace detail typedef vector2 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion { namespace detail typedef vector3 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion { namespace detail typedef vector4 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -99,6 +103,7 @@ namespace boost { namespace fusion { namespace detail typedef vector5 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -119,6 +124,7 @@ namespace boost { namespace fusion { namespace detail typedef vector6 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -139,6 +145,7 @@ namespace boost { namespace fusion { namespace detail typedef vector7 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -159,6 +166,7 @@ namespace boost { namespace fusion { namespace detail typedef vector8 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -179,6 +187,7 @@ namespace boost { namespace fusion { namespace detail typedef vector9 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -199,6 +208,7 @@ namespace boost { namespace fusion { namespace detail typedef vector10 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -219,6 +229,7 @@ namespace boost { namespace fusion { namespace detail typedef vector11 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -239,6 +250,7 @@ namespace boost { namespace fusion { namespace detail typedef vector12 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -259,6 +271,7 @@ namespace boost { namespace fusion { namespace detail typedef vector13 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -279,6 +292,7 @@ namespace boost { namespace fusion { namespace detail typedef vector14 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -299,6 +313,7 @@ namespace boost { namespace fusion { namespace detail typedef vector15 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -319,6 +334,7 @@ namespace boost { namespace fusion { namespace detail typedef vector16 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -339,6 +355,7 @@ namespace boost { namespace fusion { namespace detail typedef vector17 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -359,6 +376,7 @@ namespace boost { namespace fusion { namespace detail typedef vector18 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -379,6 +397,7 @@ namespace boost { namespace fusion { namespace detail typedef vector19 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -399,6 +418,7 @@ namespace boost { namespace fusion { namespace detail typedef vector20 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -419,6 +439,7 @@ namespace boost { namespace fusion { namespace detail typedef vector21 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -439,6 +460,7 @@ namespace boost { namespace fusion { namespace detail typedef vector22 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -459,6 +481,7 @@ namespace boost { namespace fusion { namespace detail typedef vector23 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -479,6 +502,7 @@ namespace boost { namespace fusion { namespace detail typedef vector24 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -499,6 +523,7 @@ namespace boost { namespace fusion { namespace detail typedef vector25 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -519,6 +544,7 @@ namespace boost { namespace fusion { namespace detail typedef vector26 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -539,6 +565,7 @@ namespace boost { namespace fusion { namespace detail typedef vector27 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -559,6 +586,7 @@ namespace boost { namespace fusion { namespace detail typedef vector28 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -579,6 +607,7 @@ namespace boost { namespace fusion { namespace detail typedef vector29 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -599,6 +628,7 @@ namespace boost { namespace fusion { namespace detail typedef vector30 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -619,6 +649,7 @@ namespace boost { namespace fusion { namespace detail typedef vector31 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -639,6 +670,7 @@ namespace boost { namespace fusion { namespace detail typedef vector32 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -659,6 +691,7 @@ namespace boost { namespace fusion { namespace detail typedef vector33 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -679,6 +712,7 @@ namespace boost { namespace fusion { namespace detail typedef vector34 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -699,6 +733,7 @@ namespace boost { namespace fusion { namespace detail typedef vector35 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -719,6 +754,7 @@ namespace boost { namespace fusion { namespace detail typedef vector36 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -739,6 +775,7 @@ namespace boost { namespace fusion { namespace detail typedef vector37 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -759,6 +796,7 @@ namespace boost { namespace fusion { namespace detail typedef vector38 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -779,6 +817,7 @@ namespace boost { namespace fusion { namespace detail typedef vector39 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -799,6 +838,7 @@ namespace boost { namespace fusion { namespace detail typedef vector40 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -819,6 +859,7 @@ namespace boost { namespace fusion { namespace detail typedef vector41 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -839,6 +880,7 @@ namespace boost { namespace fusion { namespace detail typedef vector42 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -859,6 +901,7 @@ namespace boost { namespace fusion { namespace detail typedef vector43 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -879,6 +922,7 @@ namespace boost { namespace fusion { namespace detail typedef vector44 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -899,6 +943,7 @@ namespace boost { namespace fusion { namespace detail typedef vector45 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -919,6 +964,7 @@ namespace boost { namespace fusion { namespace detail typedef vector46 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -939,6 +985,7 @@ namespace boost { namespace fusion { namespace detail typedef vector47 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -959,6 +1006,7 @@ namespace boost { namespace fusion { namespace detail typedef vector48 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -979,6 +1027,7 @@ namespace boost { namespace fusion { namespace detail typedef vector49 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { @@ -999,6 +1048,7 @@ namespace boost { namespace fusion { namespace detail typedef vector50 type; }; template + BOOST_FUSION_GPU_ENABLED static typename apply::type call(Iterator const& i0) { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector10.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector10.hpp index 8ef9947de9..600b663f7e 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector10.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector10.hpp @@ -8,17 +8,35 @@ ==============================================================================*/ namespace boost { namespace fusion { + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; template struct vector_data1 { + BOOST_FUSION_GPU_ENABLED vector_data1() : m0() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data1(U0 && _0 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) {} + vector_data1( + vector_data1&& other) + : m0(std::forward(other.m0)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data1( typename detail::call_param::type _0) : m0(_0) {} + BOOST_FUSION_GPU_ENABLED vector_data1( vector_data1 const& other) : m0(other.m0) {} + BOOST_FUSION_GPU_ENABLED vector_data1& operator=(vector_data1 const& vec) { @@ -26,6 +44,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data1 init_from_sequence(Sequence const& seq) { @@ -35,6 +54,7 @@ namespace boost { namespace fusion return vector_data1(*i0); } template + BOOST_FUSION_GPU_ENABLED static vector_data1 init_from_sequence(Sequence& seq) { @@ -58,28 +78,63 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<1> size; + BOOST_FUSION_GPU_ENABLED vector1() {} + BOOST_FUSION_GPU_ENABLED explicit vector1( typename detail::call_param::type _0) : base_type(_0) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + explicit + vector1(U0&& _0 + , typename boost::enable_if >::type* = 0 + ) + : base_type(std::forward(_0)) {} + BOOST_FUSION_GPU_ENABLED + vector1(vector1&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector1(vector1 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector1& + operator=(vector1 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector1& + operator=(vector1&& vec) + { + this->m0 = std::forward< T0>(vec.m0); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector1( vector1 const& vec) : base_type(vec.m0) {} template + BOOST_FUSION_GPU_ENABLED vector1( Sequence const& seq , typename boost::disable_if >::type* = 0 ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector1( Sequence& seq , typename boost::disable_if >::type* = 0 ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector1& operator=(vector1 const& vec) { @@ -87,6 +142,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -96,14 +152,16 @@ namespace boost { namespace fusion this->m0 = *i0; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -113,14 +171,29 @@ namespace boost { namespace fusion template struct vector_data2 { + BOOST_FUSION_GPU_ENABLED vector_data2() : m0() , m1() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data2(U0 && _0 , U1 && _1 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) {} + vector_data2( + vector_data2&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data2( typename detail::call_param::type _0 , typename detail::call_param::type _1) : m0(_0) , m1(_1) {} + BOOST_FUSION_GPU_ENABLED vector_data2( vector_data2 const& other) : m0(other.m0) , m1(other.m1) {} + BOOST_FUSION_GPU_ENABLED vector_data2& operator=(vector_data2 const& vec) { @@ -128,6 +201,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data2 init_from_sequence(Sequence const& seq) { @@ -137,6 +211,7 @@ namespace boost { namespace fusion return vector_data2(*i0 , *i1); } template + BOOST_FUSION_GPU_ENABLED static vector_data2 init_from_sequence(Sequence& seq) { @@ -160,25 +235,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<2> size; + BOOST_FUSION_GPU_ENABLED vector2() {} + BOOST_FUSION_GPU_ENABLED vector2( typename detail::call_param::type _0 , typename detail::call_param::type _1) : base_type(_0 , _1) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector2(U0 && _0 , U1 && _1) + : base_type(std::forward(_0) , std::forward(_1)) {} + BOOST_FUSION_GPU_ENABLED + vector2(vector2&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector2(vector2 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector2& + operator=(vector2 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector2& + operator=(vector2&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector2( vector2 const& vec) : base_type(vec.m0 , vec.m1) {} template + BOOST_FUSION_GPU_ENABLED vector2( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector2( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector2& operator=(vector2 const& vec) { @@ -186,6 +293,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -195,14 +303,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -212,14 +322,29 @@ namespace boost { namespace fusion template struct vector_data3 { + BOOST_FUSION_GPU_ENABLED vector_data3() : m0() , m1() , m2() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data3(U0 && _0 , U1 && _1 , U2 && _2 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) {} + vector_data3( + vector_data3&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data3( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : m0(_0) , m1(_1) , m2(_2) {} + BOOST_FUSION_GPU_ENABLED vector_data3( vector_data3 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) {} + BOOST_FUSION_GPU_ENABLED vector_data3& operator=(vector_data3 const& vec) { @@ -227,6 +352,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data3 init_from_sequence(Sequence const& seq) { @@ -236,6 +362,7 @@ namespace boost { namespace fusion return vector_data3(*i0 , *i1 , *i2); } template + BOOST_FUSION_GPU_ENABLED static vector_data3 init_from_sequence(Sequence& seq) { @@ -259,25 +386,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<3> size; + BOOST_FUSION_GPU_ENABLED vector3() {} + BOOST_FUSION_GPU_ENABLED vector3( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : base_type(_0 , _1 , _2) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector3(U0 && _0 , U1 && _1 , U2 && _2) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2)) {} + BOOST_FUSION_GPU_ENABLED + vector3(vector3&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector3(vector3 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector3& + operator=(vector3 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector3& + operator=(vector3&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector3( vector3 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2) {} template + BOOST_FUSION_GPU_ENABLED vector3( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector3( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector3& operator=(vector3 const& vec) { @@ -285,6 +444,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -294,14 +454,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -311,14 +473,29 @@ namespace boost { namespace fusion template struct vector_data4 { + BOOST_FUSION_GPU_ENABLED vector_data4() : m0() , m1() , m2() , m3() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data4(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) {} + vector_data4( + vector_data4&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data4( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : m0(_0) , m1(_1) , m2(_2) , m3(_3) {} + BOOST_FUSION_GPU_ENABLED vector_data4( vector_data4 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) {} + BOOST_FUSION_GPU_ENABLED vector_data4& operator=(vector_data4 const& vec) { @@ -326,6 +503,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data4 init_from_sequence(Sequence const& seq) { @@ -335,6 +513,7 @@ namespace boost { namespace fusion return vector_data4(*i0 , *i1 , *i2 , *i3); } template + BOOST_FUSION_GPU_ENABLED static vector_data4 init_from_sequence(Sequence& seq) { @@ -358,25 +537,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<4> size; + BOOST_FUSION_GPU_ENABLED vector4() {} + BOOST_FUSION_GPU_ENABLED vector4( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : base_type(_0 , _1 , _2 , _3) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector4(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3)) {} + BOOST_FUSION_GPU_ENABLED + vector4(vector4&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector4(vector4 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector4& + operator=(vector4 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector4& + operator=(vector4&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector4( vector4 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3) {} template + BOOST_FUSION_GPU_ENABLED vector4( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector4( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector4& operator=(vector4 const& vec) { @@ -384,6 +595,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -393,14 +605,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -410,14 +624,29 @@ namespace boost { namespace fusion template struct vector_data5 { + BOOST_FUSION_GPU_ENABLED vector_data5() : m0() , m1() , m2() , m3() , m4() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data5(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) {} + vector_data5( + vector_data5&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data5( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) {} + BOOST_FUSION_GPU_ENABLED vector_data5( vector_data5 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) {} + BOOST_FUSION_GPU_ENABLED vector_data5& operator=(vector_data5 const& vec) { @@ -425,6 +654,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data5 init_from_sequence(Sequence const& seq) { @@ -434,6 +664,7 @@ namespace boost { namespace fusion return vector_data5(*i0 , *i1 , *i2 , *i3 , *i4); } template + BOOST_FUSION_GPU_ENABLED static vector_data5 init_from_sequence(Sequence& seq) { @@ -457,25 +688,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<5> size; + BOOST_FUSION_GPU_ENABLED vector5() {} + BOOST_FUSION_GPU_ENABLED vector5( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : base_type(_0 , _1 , _2 , _3 , _4) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector5(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4)) {} + BOOST_FUSION_GPU_ENABLED + vector5(vector5&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector5(vector5 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector5& + operator=(vector5 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector5& + operator=(vector5&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector5( vector5 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4) {} template + BOOST_FUSION_GPU_ENABLED vector5( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector5( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector5& operator=(vector5 const& vec) { @@ -483,6 +746,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -492,14 +756,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -509,14 +775,29 @@ namespace boost { namespace fusion template struct vector_data6 { + BOOST_FUSION_GPU_ENABLED vector_data6() : m0() , m1() , m2() , m3() , m4() , m5() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data6(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) {} + vector_data6( + vector_data6&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data6( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) {} + BOOST_FUSION_GPU_ENABLED vector_data6( vector_data6 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) {} + BOOST_FUSION_GPU_ENABLED vector_data6& operator=(vector_data6 const& vec) { @@ -524,6 +805,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data6 init_from_sequence(Sequence const& seq) { @@ -533,6 +815,7 @@ namespace boost { namespace fusion return vector_data6(*i0 , *i1 , *i2 , *i3 , *i4 , *i5); } template + BOOST_FUSION_GPU_ENABLED static vector_data6 init_from_sequence(Sequence& seq) { @@ -556,25 +839,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<6> size; + BOOST_FUSION_GPU_ENABLED vector6() {} + BOOST_FUSION_GPU_ENABLED vector6( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : base_type(_0 , _1 , _2 , _3 , _4 , _5) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector6(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5)) {} + BOOST_FUSION_GPU_ENABLED + vector6(vector6&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector6(vector6 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector6& + operator=(vector6 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector6& + operator=(vector6&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector6( vector6 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5) {} template + BOOST_FUSION_GPU_ENABLED vector6( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector6( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector6& operator=(vector6 const& vec) { @@ -582,6 +897,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -591,14 +907,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -608,14 +926,29 @@ namespace boost { namespace fusion template struct vector_data7 { + BOOST_FUSION_GPU_ENABLED vector_data7() : m0() , m1() , m2() , m3() , m4() , m5() , m6() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data7(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) {} + vector_data7( + vector_data7&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data7( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) {} + BOOST_FUSION_GPU_ENABLED vector_data7( vector_data7 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) {} + BOOST_FUSION_GPU_ENABLED vector_data7& operator=(vector_data7 const& vec) { @@ -623,6 +956,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data7 init_from_sequence(Sequence const& seq) { @@ -632,6 +966,7 @@ namespace boost { namespace fusion return vector_data7(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6); } template + BOOST_FUSION_GPU_ENABLED static vector_data7 init_from_sequence(Sequence& seq) { @@ -655,25 +990,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<7> size; + BOOST_FUSION_GPU_ENABLED vector7() {} + BOOST_FUSION_GPU_ENABLED vector7( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector7(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6)) {} + BOOST_FUSION_GPU_ENABLED + vector7(vector7&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector7(vector7 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector7& + operator=(vector7 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector7& + operator=(vector7&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector7( vector7 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6) {} template + BOOST_FUSION_GPU_ENABLED vector7( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector7( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector7& operator=(vector7 const& vec) { @@ -681,6 +1048,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -690,14 +1058,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -707,14 +1077,29 @@ namespace boost { namespace fusion template struct vector_data8 { + BOOST_FUSION_GPU_ENABLED vector_data8() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data8(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) {} + vector_data8( + vector_data8&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data8( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) {} + BOOST_FUSION_GPU_ENABLED vector_data8( vector_data8 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) {} + BOOST_FUSION_GPU_ENABLED vector_data8& operator=(vector_data8 const& vec) { @@ -722,6 +1107,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data8 init_from_sequence(Sequence const& seq) { @@ -731,6 +1117,7 @@ namespace boost { namespace fusion return vector_data8(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7); } template + BOOST_FUSION_GPU_ENABLED static vector_data8 init_from_sequence(Sequence& seq) { @@ -754,25 +1141,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<8> size; + BOOST_FUSION_GPU_ENABLED vector8() {} + BOOST_FUSION_GPU_ENABLED vector8( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector8(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7)) {} + BOOST_FUSION_GPU_ENABLED + vector8(vector8&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector8(vector8 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector8& + operator=(vector8 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector8& + operator=(vector8&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector8( vector8 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7) {} template + BOOST_FUSION_GPU_ENABLED vector8( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector8( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector8& operator=(vector8 const& vec) { @@ -780,6 +1199,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -789,14 +1209,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -806,14 +1228,29 @@ namespace boost { namespace fusion template struct vector_data9 { + BOOST_FUSION_GPU_ENABLED vector_data9() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data9(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) {} + vector_data9( + vector_data9&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data9( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) {} + BOOST_FUSION_GPU_ENABLED vector_data9( vector_data9 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) {} + BOOST_FUSION_GPU_ENABLED vector_data9& operator=(vector_data9 const& vec) { @@ -821,6 +1258,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data9 init_from_sequence(Sequence const& seq) { @@ -830,6 +1268,7 @@ namespace boost { namespace fusion return vector_data9(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8); } template + BOOST_FUSION_GPU_ENABLED static vector_data9 init_from_sequence(Sequence& seq) { @@ -853,25 +1292,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<9> size; + BOOST_FUSION_GPU_ENABLED vector9() {} + BOOST_FUSION_GPU_ENABLED vector9( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector9(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8)) {} + BOOST_FUSION_GPU_ENABLED + vector9(vector9&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector9(vector9 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector9& + operator=(vector9 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector9& + operator=(vector9&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector9( vector9 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8) {} template + BOOST_FUSION_GPU_ENABLED vector9( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector9( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector9& operator=(vector9 const& vec) { @@ -879,6 +1350,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -888,14 +1360,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -905,14 +1379,29 @@ namespace boost { namespace fusion template struct vector_data10 { + BOOST_FUSION_GPU_ENABLED vector_data10() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data10(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) {} + vector_data10( + vector_data10&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data10( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) {} + BOOST_FUSION_GPU_ENABLED vector_data10( vector_data10 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) {} + BOOST_FUSION_GPU_ENABLED vector_data10& operator=(vector_data10 const& vec) { @@ -920,6 +1409,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data10 init_from_sequence(Sequence const& seq) { @@ -929,6 +1419,7 @@ namespace boost { namespace fusion return vector_data10(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9); } template + BOOST_FUSION_GPU_ENABLED static vector_data10 init_from_sequence(Sequence& seq) { @@ -952,25 +1443,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<10> size; + BOOST_FUSION_GPU_ENABLED vector10() {} + BOOST_FUSION_GPU_ENABLED vector10( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector10(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9)) {} + BOOST_FUSION_GPU_ENABLED + vector10(vector10&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector10(vector10 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector10& + operator=(vector10 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector10& + operator=(vector10&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector10( vector10 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9) {} template + BOOST_FUSION_GPU_ENABLED vector10( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector10( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector10& operator=(vector10 const& vec) { @@ -978,6 +1501,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -987,14 +1511,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector20.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector20.hpp index 151acbbdc8..7b71763f23 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector20.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector20.hpp @@ -14,14 +14,29 @@ namespace boost { namespace fusion template struct vector_data11 { + BOOST_FUSION_GPU_ENABLED vector_data11() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data11(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) {} + vector_data11( + vector_data11&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data11( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) {} + BOOST_FUSION_GPU_ENABLED vector_data11( vector_data11 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) {} + BOOST_FUSION_GPU_ENABLED vector_data11& operator=(vector_data11 const& vec) { @@ -29,6 +44,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data11 init_from_sequence(Sequence const& seq) { @@ -38,6 +54,7 @@ namespace boost { namespace fusion return vector_data11(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10); } template + BOOST_FUSION_GPU_ENABLED static vector_data11 init_from_sequence(Sequence& seq) { @@ -61,25 +78,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<11> size; + BOOST_FUSION_GPU_ENABLED vector11() {} + BOOST_FUSION_GPU_ENABLED vector11( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector11(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10)) {} + BOOST_FUSION_GPU_ENABLED + vector11(vector11&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector11(vector11 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector11& + operator=(vector11 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector11& + operator=(vector11&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector11( vector11 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10) {} template + BOOST_FUSION_GPU_ENABLED vector11( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector11( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector11& operator=(vector11 const& vec) { @@ -87,6 +136,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -96,14 +146,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -113,14 +165,29 @@ namespace boost { namespace fusion template struct vector_data12 { + BOOST_FUSION_GPU_ENABLED vector_data12() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data12(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) {} + vector_data12( + vector_data12&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data12( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) {} + BOOST_FUSION_GPU_ENABLED vector_data12( vector_data12 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) {} + BOOST_FUSION_GPU_ENABLED vector_data12& operator=(vector_data12 const& vec) { @@ -128,6 +195,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data12 init_from_sequence(Sequence const& seq) { @@ -137,6 +205,7 @@ namespace boost { namespace fusion return vector_data12(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11); } template + BOOST_FUSION_GPU_ENABLED static vector_data12 init_from_sequence(Sequence& seq) { @@ -160,25 +229,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<12> size; + BOOST_FUSION_GPU_ENABLED vector12() {} + BOOST_FUSION_GPU_ENABLED vector12( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector12(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11)) {} + BOOST_FUSION_GPU_ENABLED + vector12(vector12&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector12(vector12 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector12& + operator=(vector12 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector12& + operator=(vector12&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector12( vector12 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11) {} template + BOOST_FUSION_GPU_ENABLED vector12( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector12( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector12& operator=(vector12 const& vec) { @@ -186,6 +287,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -195,14 +297,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -212,14 +316,29 @@ namespace boost { namespace fusion template struct vector_data13 { + BOOST_FUSION_GPU_ENABLED vector_data13() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data13(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) {} + vector_data13( + vector_data13&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data13( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) {} + BOOST_FUSION_GPU_ENABLED vector_data13( vector_data13 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) {} + BOOST_FUSION_GPU_ENABLED vector_data13& operator=(vector_data13 const& vec) { @@ -227,6 +346,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data13 init_from_sequence(Sequence const& seq) { @@ -236,6 +356,7 @@ namespace boost { namespace fusion return vector_data13(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12); } template + BOOST_FUSION_GPU_ENABLED static vector_data13 init_from_sequence(Sequence& seq) { @@ -259,25 +380,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<13> size; + BOOST_FUSION_GPU_ENABLED vector13() {} + BOOST_FUSION_GPU_ENABLED vector13( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector13(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12)) {} + BOOST_FUSION_GPU_ENABLED + vector13(vector13&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector13(vector13 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector13& + operator=(vector13 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector13& + operator=(vector13&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector13( vector13 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12) {} template + BOOST_FUSION_GPU_ENABLED vector13( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector13( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector13& operator=(vector13 const& vec) { @@ -285,6 +438,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -294,14 +448,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -311,14 +467,29 @@ namespace boost { namespace fusion template struct vector_data14 { + BOOST_FUSION_GPU_ENABLED vector_data14() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data14(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) {} + vector_data14( + vector_data14&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data14( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) {} + BOOST_FUSION_GPU_ENABLED vector_data14( vector_data14 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) {} + BOOST_FUSION_GPU_ENABLED vector_data14& operator=(vector_data14 const& vec) { @@ -326,6 +497,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data14 init_from_sequence(Sequence const& seq) { @@ -335,6 +507,7 @@ namespace boost { namespace fusion return vector_data14(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13); } template + BOOST_FUSION_GPU_ENABLED static vector_data14 init_from_sequence(Sequence& seq) { @@ -358,25 +531,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<14> size; + BOOST_FUSION_GPU_ENABLED vector14() {} + BOOST_FUSION_GPU_ENABLED vector14( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector14(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13)) {} + BOOST_FUSION_GPU_ENABLED + vector14(vector14&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector14(vector14 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector14& + operator=(vector14 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector14& + operator=(vector14&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector14( vector14 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13) {} template + BOOST_FUSION_GPU_ENABLED vector14( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector14( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector14& operator=(vector14 const& vec) { @@ -384,6 +589,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -393,14 +599,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -410,14 +618,29 @@ namespace boost { namespace fusion template struct vector_data15 { + BOOST_FUSION_GPU_ENABLED vector_data15() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data15(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) {} + vector_data15( + vector_data15&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data15( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) {} + BOOST_FUSION_GPU_ENABLED vector_data15( vector_data15 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) {} + BOOST_FUSION_GPU_ENABLED vector_data15& operator=(vector_data15 const& vec) { @@ -425,6 +648,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data15 init_from_sequence(Sequence const& seq) { @@ -434,6 +658,7 @@ namespace boost { namespace fusion return vector_data15(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14); } template + BOOST_FUSION_GPU_ENABLED static vector_data15 init_from_sequence(Sequence& seq) { @@ -457,25 +682,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<15> size; + BOOST_FUSION_GPU_ENABLED vector15() {} + BOOST_FUSION_GPU_ENABLED vector15( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector15(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14)) {} + BOOST_FUSION_GPU_ENABLED + vector15(vector15&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector15(vector15 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector15& + operator=(vector15 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector15& + operator=(vector15&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector15( vector15 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14) {} template + BOOST_FUSION_GPU_ENABLED vector15( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector15( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector15& operator=(vector15 const& vec) { @@ -483,6 +740,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -492,14 +750,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -509,14 +769,29 @@ namespace boost { namespace fusion template struct vector_data16 { + BOOST_FUSION_GPU_ENABLED vector_data16() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data16(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) {} + vector_data16( + vector_data16&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data16( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) {} + BOOST_FUSION_GPU_ENABLED vector_data16( vector_data16 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) {} + BOOST_FUSION_GPU_ENABLED vector_data16& operator=(vector_data16 const& vec) { @@ -524,6 +799,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data16 init_from_sequence(Sequence const& seq) { @@ -533,6 +809,7 @@ namespace boost { namespace fusion return vector_data16(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15); } template + BOOST_FUSION_GPU_ENABLED static vector_data16 init_from_sequence(Sequence& seq) { @@ -556,25 +833,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<16> size; + BOOST_FUSION_GPU_ENABLED vector16() {} + BOOST_FUSION_GPU_ENABLED vector16( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector16(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15)) {} + BOOST_FUSION_GPU_ENABLED + vector16(vector16&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector16(vector16 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector16& + operator=(vector16 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector16& + operator=(vector16&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector16( vector16 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15) {} template + BOOST_FUSION_GPU_ENABLED vector16( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector16( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector16& operator=(vector16 const& vec) { @@ -582,6 +891,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -591,14 +901,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -608,14 +920,29 @@ namespace boost { namespace fusion template struct vector_data17 { + BOOST_FUSION_GPU_ENABLED vector_data17() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data17(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) {} + vector_data17( + vector_data17&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data17( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) {} + BOOST_FUSION_GPU_ENABLED vector_data17( vector_data17 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) {} + BOOST_FUSION_GPU_ENABLED vector_data17& operator=(vector_data17 const& vec) { @@ -623,6 +950,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data17 init_from_sequence(Sequence const& seq) { @@ -632,6 +960,7 @@ namespace boost { namespace fusion return vector_data17(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16); } template + BOOST_FUSION_GPU_ENABLED static vector_data17 init_from_sequence(Sequence& seq) { @@ -655,25 +984,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<17> size; + BOOST_FUSION_GPU_ENABLED vector17() {} + BOOST_FUSION_GPU_ENABLED vector17( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector17(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16)) {} + BOOST_FUSION_GPU_ENABLED + vector17(vector17&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector17(vector17 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector17& + operator=(vector17 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector17& + operator=(vector17&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector17( vector17 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16) {} template + BOOST_FUSION_GPU_ENABLED vector17( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector17( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector17& operator=(vector17 const& vec) { @@ -681,6 +1042,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -690,14 +1052,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -707,14 +1071,29 @@ namespace boost { namespace fusion template struct vector_data18 { + BOOST_FUSION_GPU_ENABLED vector_data18() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data18(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) {} + vector_data18( + vector_data18&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data18( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) {} + BOOST_FUSION_GPU_ENABLED vector_data18( vector_data18 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) {} + BOOST_FUSION_GPU_ENABLED vector_data18& operator=(vector_data18 const& vec) { @@ -722,6 +1101,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data18 init_from_sequence(Sequence const& seq) { @@ -731,6 +1111,7 @@ namespace boost { namespace fusion return vector_data18(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17); } template + BOOST_FUSION_GPU_ENABLED static vector_data18 init_from_sequence(Sequence& seq) { @@ -754,25 +1135,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<18> size; + BOOST_FUSION_GPU_ENABLED vector18() {} + BOOST_FUSION_GPU_ENABLED vector18( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector18(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17)) {} + BOOST_FUSION_GPU_ENABLED + vector18(vector18&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector18(vector18 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector18& + operator=(vector18 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector18& + operator=(vector18&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector18( vector18 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17) {} template + BOOST_FUSION_GPU_ENABLED vector18( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector18( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector18& operator=(vector18 const& vec) { @@ -780,6 +1193,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -789,14 +1203,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -806,14 +1222,29 @@ namespace boost { namespace fusion template struct vector_data19 { + BOOST_FUSION_GPU_ENABLED vector_data19() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data19(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) {} + vector_data19( + vector_data19&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data19( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) {} + BOOST_FUSION_GPU_ENABLED vector_data19( vector_data19 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) {} + BOOST_FUSION_GPU_ENABLED vector_data19& operator=(vector_data19 const& vec) { @@ -821,6 +1252,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data19 init_from_sequence(Sequence const& seq) { @@ -830,6 +1262,7 @@ namespace boost { namespace fusion return vector_data19(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18); } template + BOOST_FUSION_GPU_ENABLED static vector_data19 init_from_sequence(Sequence& seq) { @@ -853,25 +1286,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<19> size; + BOOST_FUSION_GPU_ENABLED vector19() {} + BOOST_FUSION_GPU_ENABLED vector19( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector19(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18)) {} + BOOST_FUSION_GPU_ENABLED + vector19(vector19&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector19(vector19 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector19& + operator=(vector19 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector19& + operator=(vector19&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector19( vector19 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18) {} template + BOOST_FUSION_GPU_ENABLED vector19( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector19( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector19& operator=(vector19 const& vec) { @@ -879,6 +1344,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -888,14 +1354,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -905,14 +1373,29 @@ namespace boost { namespace fusion template struct vector_data20 { + BOOST_FUSION_GPU_ENABLED vector_data20() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data20(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) {} + vector_data20( + vector_data20&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data20( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) {} + BOOST_FUSION_GPU_ENABLED vector_data20( vector_data20 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) {} + BOOST_FUSION_GPU_ENABLED vector_data20& operator=(vector_data20 const& vec) { @@ -920,6 +1403,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data20 init_from_sequence(Sequence const& seq) { @@ -929,6 +1413,7 @@ namespace boost { namespace fusion return vector_data20(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19); } template + BOOST_FUSION_GPU_ENABLED static vector_data20 init_from_sequence(Sequence& seq) { @@ -952,25 +1437,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<20> size; + BOOST_FUSION_GPU_ENABLED vector20() {} + BOOST_FUSION_GPU_ENABLED vector20( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector20(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19)) {} + BOOST_FUSION_GPU_ENABLED + vector20(vector20&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector20(vector20 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector20& + operator=(vector20 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector20& + operator=(vector20&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector20( vector20 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19) {} template + BOOST_FUSION_GPU_ENABLED vector20( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector20( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector20& operator=(vector20 const& vec) { @@ -978,6 +1495,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -987,14 +1505,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector30.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector30.hpp index 3810091bcf..8810fb0a71 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector30.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector30.hpp @@ -14,14 +14,29 @@ namespace boost { namespace fusion template struct vector_data21 { + BOOST_FUSION_GPU_ENABLED vector_data21() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data21(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) {} + vector_data21( + vector_data21&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data21( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) {} + BOOST_FUSION_GPU_ENABLED vector_data21( vector_data21 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) {} + BOOST_FUSION_GPU_ENABLED vector_data21& operator=(vector_data21 const& vec) { @@ -29,6 +44,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data21 init_from_sequence(Sequence const& seq) { @@ -38,6 +54,7 @@ namespace boost { namespace fusion return vector_data21(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20); } template + BOOST_FUSION_GPU_ENABLED static vector_data21 init_from_sequence(Sequence& seq) { @@ -61,25 +78,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<21> size; + BOOST_FUSION_GPU_ENABLED vector21() {} + BOOST_FUSION_GPU_ENABLED vector21( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector21(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20)) {} + BOOST_FUSION_GPU_ENABLED + vector21(vector21&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector21(vector21 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector21& + operator=(vector21 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector21& + operator=(vector21&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector21( vector21 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20) {} template + BOOST_FUSION_GPU_ENABLED vector21( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector21( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector21& operator=(vector21 const& vec) { @@ -87,6 +136,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -96,14 +146,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -113,14 +165,29 @@ namespace boost { namespace fusion template struct vector_data22 { + BOOST_FUSION_GPU_ENABLED vector_data22() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data22(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) {} + vector_data22( + vector_data22&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data22( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) {} + BOOST_FUSION_GPU_ENABLED vector_data22( vector_data22 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) {} + BOOST_FUSION_GPU_ENABLED vector_data22& operator=(vector_data22 const& vec) { @@ -128,6 +195,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data22 init_from_sequence(Sequence const& seq) { @@ -137,6 +205,7 @@ namespace boost { namespace fusion return vector_data22(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21); } template + BOOST_FUSION_GPU_ENABLED static vector_data22 init_from_sequence(Sequence& seq) { @@ -160,25 +229,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<22> size; + BOOST_FUSION_GPU_ENABLED vector22() {} + BOOST_FUSION_GPU_ENABLED vector22( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector22(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21)) {} + BOOST_FUSION_GPU_ENABLED + vector22(vector22&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector22(vector22 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector22& + operator=(vector22 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector22& + operator=(vector22&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector22( vector22 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21) {} template + BOOST_FUSION_GPU_ENABLED vector22( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector22( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector22& operator=(vector22 const& vec) { @@ -186,6 +287,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -195,14 +297,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -212,14 +316,29 @@ namespace boost { namespace fusion template struct vector_data23 { + BOOST_FUSION_GPU_ENABLED vector_data23() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data23(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) {} + vector_data23( + vector_data23&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data23( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) {} + BOOST_FUSION_GPU_ENABLED vector_data23( vector_data23 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) {} + BOOST_FUSION_GPU_ENABLED vector_data23& operator=(vector_data23 const& vec) { @@ -227,6 +346,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data23 init_from_sequence(Sequence const& seq) { @@ -236,6 +356,7 @@ namespace boost { namespace fusion return vector_data23(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22); } template + BOOST_FUSION_GPU_ENABLED static vector_data23 init_from_sequence(Sequence& seq) { @@ -259,25 +380,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<23> size; + BOOST_FUSION_GPU_ENABLED vector23() {} + BOOST_FUSION_GPU_ENABLED vector23( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector23(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22)) {} + BOOST_FUSION_GPU_ENABLED + vector23(vector23&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector23(vector23 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector23& + operator=(vector23 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector23& + operator=(vector23&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector23( vector23 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22) {} template + BOOST_FUSION_GPU_ENABLED vector23( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector23( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector23& operator=(vector23 const& vec) { @@ -285,6 +438,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -294,14 +448,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -311,14 +467,29 @@ namespace boost { namespace fusion template struct vector_data24 { + BOOST_FUSION_GPU_ENABLED vector_data24() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data24(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) {} + vector_data24( + vector_data24&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data24( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) {} + BOOST_FUSION_GPU_ENABLED vector_data24( vector_data24 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) {} + BOOST_FUSION_GPU_ENABLED vector_data24& operator=(vector_data24 const& vec) { @@ -326,6 +497,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data24 init_from_sequence(Sequence const& seq) { @@ -335,6 +507,7 @@ namespace boost { namespace fusion return vector_data24(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23); } template + BOOST_FUSION_GPU_ENABLED static vector_data24 init_from_sequence(Sequence& seq) { @@ -358,25 +531,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<24> size; + BOOST_FUSION_GPU_ENABLED vector24() {} + BOOST_FUSION_GPU_ENABLED vector24( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector24(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23)) {} + BOOST_FUSION_GPU_ENABLED + vector24(vector24&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector24(vector24 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector24& + operator=(vector24 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector24& + operator=(vector24&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector24( vector24 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23) {} template + BOOST_FUSION_GPU_ENABLED vector24( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector24( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector24& operator=(vector24 const& vec) { @@ -384,6 +589,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -393,14 +599,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -410,14 +618,29 @@ namespace boost { namespace fusion template struct vector_data25 { + BOOST_FUSION_GPU_ENABLED vector_data25() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data25(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) {} + vector_data25( + vector_data25&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data25( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) {} + BOOST_FUSION_GPU_ENABLED vector_data25( vector_data25 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) {} + BOOST_FUSION_GPU_ENABLED vector_data25& operator=(vector_data25 const& vec) { @@ -425,6 +648,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data25 init_from_sequence(Sequence const& seq) { @@ -434,6 +658,7 @@ namespace boost { namespace fusion return vector_data25(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24); } template + BOOST_FUSION_GPU_ENABLED static vector_data25 init_from_sequence(Sequence& seq) { @@ -457,25 +682,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<25> size; + BOOST_FUSION_GPU_ENABLED vector25() {} + BOOST_FUSION_GPU_ENABLED vector25( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector25(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24)) {} + BOOST_FUSION_GPU_ENABLED + vector25(vector25&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector25(vector25 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector25& + operator=(vector25 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector25& + operator=(vector25&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector25( vector25 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24) {} template + BOOST_FUSION_GPU_ENABLED vector25( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector25( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector25& operator=(vector25 const& vec) { @@ -483,6 +740,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -492,14 +750,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -509,14 +769,29 @@ namespace boost { namespace fusion template struct vector_data26 { + BOOST_FUSION_GPU_ENABLED vector_data26() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data26(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) {} + vector_data26( + vector_data26&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data26( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) {} + BOOST_FUSION_GPU_ENABLED vector_data26( vector_data26 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) {} + BOOST_FUSION_GPU_ENABLED vector_data26& operator=(vector_data26 const& vec) { @@ -524,6 +799,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data26 init_from_sequence(Sequence const& seq) { @@ -533,6 +809,7 @@ namespace boost { namespace fusion return vector_data26(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25); } template + BOOST_FUSION_GPU_ENABLED static vector_data26 init_from_sequence(Sequence& seq) { @@ -556,25 +833,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<26> size; + BOOST_FUSION_GPU_ENABLED vector26() {} + BOOST_FUSION_GPU_ENABLED vector26( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector26(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25)) {} + BOOST_FUSION_GPU_ENABLED + vector26(vector26&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector26(vector26 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector26& + operator=(vector26 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector26& + operator=(vector26&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector26( vector26 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25) {} template + BOOST_FUSION_GPU_ENABLED vector26( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector26( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector26& operator=(vector26 const& vec) { @@ -582,6 +891,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -591,14 +901,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -608,14 +920,29 @@ namespace boost { namespace fusion template struct vector_data27 { + BOOST_FUSION_GPU_ENABLED vector_data27() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data27(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) {} + vector_data27( + vector_data27&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data27( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) {} + BOOST_FUSION_GPU_ENABLED vector_data27( vector_data27 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) {} + BOOST_FUSION_GPU_ENABLED vector_data27& operator=(vector_data27 const& vec) { @@ -623,6 +950,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data27 init_from_sequence(Sequence const& seq) { @@ -632,6 +960,7 @@ namespace boost { namespace fusion return vector_data27(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26); } template + BOOST_FUSION_GPU_ENABLED static vector_data27 init_from_sequence(Sequence& seq) { @@ -655,25 +984,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<27> size; + BOOST_FUSION_GPU_ENABLED vector27() {} + BOOST_FUSION_GPU_ENABLED vector27( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector27(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26)) {} + BOOST_FUSION_GPU_ENABLED + vector27(vector27&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector27(vector27 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector27& + operator=(vector27 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector27& + operator=(vector27&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector27( vector27 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26) {} template + BOOST_FUSION_GPU_ENABLED vector27( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector27( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector27& operator=(vector27 const& vec) { @@ -681,6 +1042,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -690,14 +1052,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -707,14 +1071,29 @@ namespace boost { namespace fusion template struct vector_data28 { + BOOST_FUSION_GPU_ENABLED vector_data28() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data28(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) {} + vector_data28( + vector_data28&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data28( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) {} + BOOST_FUSION_GPU_ENABLED vector_data28( vector_data28 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) {} + BOOST_FUSION_GPU_ENABLED vector_data28& operator=(vector_data28 const& vec) { @@ -722,6 +1101,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data28 init_from_sequence(Sequence const& seq) { @@ -731,6 +1111,7 @@ namespace boost { namespace fusion return vector_data28(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27); } template + BOOST_FUSION_GPU_ENABLED static vector_data28 init_from_sequence(Sequence& seq) { @@ -754,25 +1135,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<28> size; + BOOST_FUSION_GPU_ENABLED vector28() {} + BOOST_FUSION_GPU_ENABLED vector28( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector28(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27)) {} + BOOST_FUSION_GPU_ENABLED + vector28(vector28&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector28(vector28 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector28& + operator=(vector28 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector28& + operator=(vector28&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector28( vector28 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27) {} template + BOOST_FUSION_GPU_ENABLED vector28( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector28( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector28& operator=(vector28 const& vec) { @@ -780,6 +1193,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -789,14 +1203,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -806,14 +1222,29 @@ namespace boost { namespace fusion template struct vector_data29 { + BOOST_FUSION_GPU_ENABLED vector_data29() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data29(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) {} + vector_data29( + vector_data29&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data29( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) {} + BOOST_FUSION_GPU_ENABLED vector_data29( vector_data29 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) {} + BOOST_FUSION_GPU_ENABLED vector_data29& operator=(vector_data29 const& vec) { @@ -821,6 +1252,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data29 init_from_sequence(Sequence const& seq) { @@ -830,6 +1262,7 @@ namespace boost { namespace fusion return vector_data29(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28); } template + BOOST_FUSION_GPU_ENABLED static vector_data29 init_from_sequence(Sequence& seq) { @@ -853,25 +1286,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<29> size; + BOOST_FUSION_GPU_ENABLED vector29() {} + BOOST_FUSION_GPU_ENABLED vector29( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector29(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28)) {} + BOOST_FUSION_GPU_ENABLED + vector29(vector29&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector29(vector29 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector29& + operator=(vector29 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector29& + operator=(vector29&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector29( vector29 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28) {} template + BOOST_FUSION_GPU_ENABLED vector29( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector29( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector29& operator=(vector29 const& vec) { @@ -879,6 +1344,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -888,14 +1354,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -905,14 +1373,29 @@ namespace boost { namespace fusion template struct vector_data30 { + BOOST_FUSION_GPU_ENABLED vector_data30() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data30(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) {} + vector_data30( + vector_data30&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data30( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) {} + BOOST_FUSION_GPU_ENABLED vector_data30( vector_data30 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) {} + BOOST_FUSION_GPU_ENABLED vector_data30& operator=(vector_data30 const& vec) { @@ -920,6 +1403,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data30 init_from_sequence(Sequence const& seq) { @@ -929,6 +1413,7 @@ namespace boost { namespace fusion return vector_data30(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29); } template + BOOST_FUSION_GPU_ENABLED static vector_data30 init_from_sequence(Sequence& seq) { @@ -952,25 +1437,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<30> size; + BOOST_FUSION_GPU_ENABLED vector30() {} + BOOST_FUSION_GPU_ENABLED vector30( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector30(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29)) {} + BOOST_FUSION_GPU_ENABLED + vector30(vector30&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector30(vector30 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector30& + operator=(vector30 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector30& + operator=(vector30&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector30( vector30 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29) {} template + BOOST_FUSION_GPU_ENABLED vector30( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector30( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector30& operator=(vector30 const& vec) { @@ -978,6 +1495,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -987,14 +1505,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector40.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector40.hpp index 07fac8dcff..cac27a27ab 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector40.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector40.hpp @@ -14,14 +14,29 @@ namespace boost { namespace fusion template struct vector_data31 { + BOOST_FUSION_GPU_ENABLED vector_data31() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data31(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) {} + vector_data31( + vector_data31&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data31( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) {} + BOOST_FUSION_GPU_ENABLED vector_data31( vector_data31 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) {} + BOOST_FUSION_GPU_ENABLED vector_data31& operator=(vector_data31 const& vec) { @@ -29,6 +44,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data31 init_from_sequence(Sequence const& seq) { @@ -38,6 +54,7 @@ namespace boost { namespace fusion return vector_data31(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30); } template + BOOST_FUSION_GPU_ENABLED static vector_data31 init_from_sequence(Sequence& seq) { @@ -61,25 +78,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<31> size; + BOOST_FUSION_GPU_ENABLED vector31() {} + BOOST_FUSION_GPU_ENABLED vector31( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector31(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30)) {} + BOOST_FUSION_GPU_ENABLED + vector31(vector31&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector31(vector31 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector31& + operator=(vector31 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector31& + operator=(vector31&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector31( vector31 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30) {} template + BOOST_FUSION_GPU_ENABLED vector31( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector31( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector31& operator=(vector31 const& vec) { @@ -87,6 +136,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -96,14 +146,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -113,14 +165,29 @@ namespace boost { namespace fusion template struct vector_data32 { + BOOST_FUSION_GPU_ENABLED vector_data32() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data32(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) {} + vector_data32( + vector_data32&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data32( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) {} + BOOST_FUSION_GPU_ENABLED vector_data32( vector_data32 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) {} + BOOST_FUSION_GPU_ENABLED vector_data32& operator=(vector_data32 const& vec) { @@ -128,6 +195,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data32 init_from_sequence(Sequence const& seq) { @@ -137,6 +205,7 @@ namespace boost { namespace fusion return vector_data32(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31); } template + BOOST_FUSION_GPU_ENABLED static vector_data32 init_from_sequence(Sequence& seq) { @@ -160,25 +229,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<32> size; + BOOST_FUSION_GPU_ENABLED vector32() {} + BOOST_FUSION_GPU_ENABLED vector32( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector32(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31)) {} + BOOST_FUSION_GPU_ENABLED + vector32(vector32&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector32(vector32 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector32& + operator=(vector32 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector32& + operator=(vector32&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector32( vector32 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31) {} template + BOOST_FUSION_GPU_ENABLED vector32( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector32( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector32& operator=(vector32 const& vec) { @@ -186,6 +287,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -195,14 +297,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -212,14 +316,29 @@ namespace boost { namespace fusion template struct vector_data33 { + BOOST_FUSION_GPU_ENABLED vector_data33() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data33(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) {} + vector_data33( + vector_data33&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data33( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) {} + BOOST_FUSION_GPU_ENABLED vector_data33( vector_data33 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) {} + BOOST_FUSION_GPU_ENABLED vector_data33& operator=(vector_data33 const& vec) { @@ -227,6 +346,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data33 init_from_sequence(Sequence const& seq) { @@ -236,6 +356,7 @@ namespace boost { namespace fusion return vector_data33(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32); } template + BOOST_FUSION_GPU_ENABLED static vector_data33 init_from_sequence(Sequence& seq) { @@ -259,25 +380,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<33> size; + BOOST_FUSION_GPU_ENABLED vector33() {} + BOOST_FUSION_GPU_ENABLED vector33( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector33(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32)) {} + BOOST_FUSION_GPU_ENABLED + vector33(vector33&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector33(vector33 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector33& + operator=(vector33 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector33& + operator=(vector33&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector33( vector33 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32) {} template + BOOST_FUSION_GPU_ENABLED vector33( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector33( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector33& operator=(vector33 const& vec) { @@ -285,6 +438,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -294,14 +448,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -311,14 +467,29 @@ namespace boost { namespace fusion template struct vector_data34 { + BOOST_FUSION_GPU_ENABLED vector_data34() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data34(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) {} + vector_data34( + vector_data34&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data34( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) {} + BOOST_FUSION_GPU_ENABLED vector_data34( vector_data34 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) {} + BOOST_FUSION_GPU_ENABLED vector_data34& operator=(vector_data34 const& vec) { @@ -326,6 +497,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data34 init_from_sequence(Sequence const& seq) { @@ -335,6 +507,7 @@ namespace boost { namespace fusion return vector_data34(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33); } template + BOOST_FUSION_GPU_ENABLED static vector_data34 init_from_sequence(Sequence& seq) { @@ -358,25 +531,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<34> size; + BOOST_FUSION_GPU_ENABLED vector34() {} + BOOST_FUSION_GPU_ENABLED vector34( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector34(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33)) {} + BOOST_FUSION_GPU_ENABLED + vector34(vector34&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector34(vector34 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector34& + operator=(vector34 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector34& + operator=(vector34&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector34( vector34 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33) {} template + BOOST_FUSION_GPU_ENABLED vector34( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector34( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector34& operator=(vector34 const& vec) { @@ -384,6 +589,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -393,14 +599,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -410,14 +618,29 @@ namespace boost { namespace fusion template struct vector_data35 { + BOOST_FUSION_GPU_ENABLED vector_data35() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data35(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) {} + vector_data35( + vector_data35&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data35( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) {} + BOOST_FUSION_GPU_ENABLED vector_data35( vector_data35 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) {} + BOOST_FUSION_GPU_ENABLED vector_data35& operator=(vector_data35 const& vec) { @@ -425,6 +648,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data35 init_from_sequence(Sequence const& seq) { @@ -434,6 +658,7 @@ namespace boost { namespace fusion return vector_data35(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34); } template + BOOST_FUSION_GPU_ENABLED static vector_data35 init_from_sequence(Sequence& seq) { @@ -457,25 +682,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<35> size; + BOOST_FUSION_GPU_ENABLED vector35() {} + BOOST_FUSION_GPU_ENABLED vector35( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector35(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34)) {} + BOOST_FUSION_GPU_ENABLED + vector35(vector35&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector35(vector35 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector35& + operator=(vector35 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector35& + operator=(vector35&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector35( vector35 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34) {} template + BOOST_FUSION_GPU_ENABLED vector35( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector35( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector35& operator=(vector35 const& vec) { @@ -483,6 +740,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -492,14 +750,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -509,14 +769,29 @@ namespace boost { namespace fusion template struct vector_data36 { + BOOST_FUSION_GPU_ENABLED vector_data36() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data36(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) {} + vector_data36( + vector_data36&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data36( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) {} + BOOST_FUSION_GPU_ENABLED vector_data36( vector_data36 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) {} + BOOST_FUSION_GPU_ENABLED vector_data36& operator=(vector_data36 const& vec) { @@ -524,6 +799,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data36 init_from_sequence(Sequence const& seq) { @@ -533,6 +809,7 @@ namespace boost { namespace fusion return vector_data36(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35); } template + BOOST_FUSION_GPU_ENABLED static vector_data36 init_from_sequence(Sequence& seq) { @@ -556,25 +833,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<36> size; + BOOST_FUSION_GPU_ENABLED vector36() {} + BOOST_FUSION_GPU_ENABLED vector36( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector36(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35)) {} + BOOST_FUSION_GPU_ENABLED + vector36(vector36&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector36(vector36 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector36& + operator=(vector36 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector36& + operator=(vector36&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector36( vector36 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35) {} template + BOOST_FUSION_GPU_ENABLED vector36( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector36( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector36& operator=(vector36 const& vec) { @@ -582,6 +891,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -591,14 +901,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -608,14 +920,29 @@ namespace boost { namespace fusion template struct vector_data37 { + BOOST_FUSION_GPU_ENABLED vector_data37() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data37(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) {} + vector_data37( + vector_data37&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data37( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) {} + BOOST_FUSION_GPU_ENABLED vector_data37( vector_data37 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) {} + BOOST_FUSION_GPU_ENABLED vector_data37& operator=(vector_data37 const& vec) { @@ -623,6 +950,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data37 init_from_sequence(Sequence const& seq) { @@ -632,6 +960,7 @@ namespace boost { namespace fusion return vector_data37(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36); } template + BOOST_FUSION_GPU_ENABLED static vector_data37 init_from_sequence(Sequence& seq) { @@ -655,25 +984,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<37> size; + BOOST_FUSION_GPU_ENABLED vector37() {} + BOOST_FUSION_GPU_ENABLED vector37( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector37(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36)) {} + BOOST_FUSION_GPU_ENABLED + vector37(vector37&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector37(vector37 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector37& + operator=(vector37 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector37& + operator=(vector37&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector37( vector37 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36) {} template + BOOST_FUSION_GPU_ENABLED vector37( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector37( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector37& operator=(vector37 const& vec) { @@ -681,6 +1042,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -690,14 +1052,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -707,14 +1071,29 @@ namespace boost { namespace fusion template struct vector_data38 { + BOOST_FUSION_GPU_ENABLED vector_data38() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data38(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) {} + vector_data38( + vector_data38&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data38( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) {} + BOOST_FUSION_GPU_ENABLED vector_data38( vector_data38 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) {} + BOOST_FUSION_GPU_ENABLED vector_data38& operator=(vector_data38 const& vec) { @@ -722,6 +1101,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data38 init_from_sequence(Sequence const& seq) { @@ -731,6 +1111,7 @@ namespace boost { namespace fusion return vector_data38(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37); } template + BOOST_FUSION_GPU_ENABLED static vector_data38 init_from_sequence(Sequence& seq) { @@ -754,25 +1135,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<38> size; + BOOST_FUSION_GPU_ENABLED vector38() {} + BOOST_FUSION_GPU_ENABLED vector38( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector38(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37)) {} + BOOST_FUSION_GPU_ENABLED + vector38(vector38&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector38(vector38 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector38& + operator=(vector38 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector38& + operator=(vector38&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector38( vector38 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37) {} template + BOOST_FUSION_GPU_ENABLED vector38( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector38( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector38& operator=(vector38 const& vec) { @@ -780,6 +1193,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -789,14 +1203,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -806,14 +1222,29 @@ namespace boost { namespace fusion template struct vector_data39 { + BOOST_FUSION_GPU_ENABLED vector_data39() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data39(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) {} + vector_data39( + vector_data39&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data39( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) {} + BOOST_FUSION_GPU_ENABLED vector_data39( vector_data39 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) {} + BOOST_FUSION_GPU_ENABLED vector_data39& operator=(vector_data39 const& vec) { @@ -821,6 +1252,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data39 init_from_sequence(Sequence const& seq) { @@ -830,6 +1262,7 @@ namespace boost { namespace fusion return vector_data39(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38); } template + BOOST_FUSION_GPU_ENABLED static vector_data39 init_from_sequence(Sequence& seq) { @@ -853,25 +1286,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<39> size; + BOOST_FUSION_GPU_ENABLED vector39() {} + BOOST_FUSION_GPU_ENABLED vector39( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector39(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38)) {} + BOOST_FUSION_GPU_ENABLED + vector39(vector39&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector39(vector39 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector39& + operator=(vector39 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector39& + operator=(vector39&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector39( vector39 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38) {} template + BOOST_FUSION_GPU_ENABLED vector39( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector39( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector39& operator=(vector39 const& vec) { @@ -879,6 +1344,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -888,14 +1354,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -905,14 +1373,29 @@ namespace boost { namespace fusion template struct vector_data40 { + BOOST_FUSION_GPU_ENABLED vector_data40() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data40(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) {} + vector_data40( + vector_data40&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data40( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) {} + BOOST_FUSION_GPU_ENABLED vector_data40( vector_data40 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) {} + BOOST_FUSION_GPU_ENABLED vector_data40& operator=(vector_data40 const& vec) { @@ -920,6 +1403,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data40 init_from_sequence(Sequence const& seq) { @@ -929,6 +1413,7 @@ namespace boost { namespace fusion return vector_data40(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39); } template + BOOST_FUSION_GPU_ENABLED static vector_data40 init_from_sequence(Sequence& seq) { @@ -952,25 +1437,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<40> size; + BOOST_FUSION_GPU_ENABLED vector40() {} + BOOST_FUSION_GPU_ENABLED vector40( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector40(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39)) {} + BOOST_FUSION_GPU_ENABLED + vector40(vector40&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector40(vector40 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector40& + operator=(vector40 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector40& + operator=(vector40&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector40( vector40 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39) {} template + BOOST_FUSION_GPU_ENABLED vector40( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector40( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector40& operator=(vector40 const& vec) { @@ -978,6 +1495,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -987,14 +1505,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector50.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector50.hpp index 7ef9402e66..38b2f0c732 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector50.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vector50.hpp @@ -14,14 +14,29 @@ namespace boost { namespace fusion template struct vector_data41 { + BOOST_FUSION_GPU_ENABLED vector_data41() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data41(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) {} + vector_data41( + vector_data41&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data41( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) {} + BOOST_FUSION_GPU_ENABLED vector_data41( vector_data41 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) {} + BOOST_FUSION_GPU_ENABLED vector_data41& operator=(vector_data41 const& vec) { @@ -29,6 +44,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data41 init_from_sequence(Sequence const& seq) { @@ -38,6 +54,7 @@ namespace boost { namespace fusion return vector_data41(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40); } template + BOOST_FUSION_GPU_ENABLED static vector_data41 init_from_sequence(Sequence& seq) { @@ -61,25 +78,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<41> size; + BOOST_FUSION_GPU_ENABLED vector41() {} + BOOST_FUSION_GPU_ENABLED vector41( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector41(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40)) {} + BOOST_FUSION_GPU_ENABLED + vector41(vector41&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector41(vector41 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector41& + operator=(vector41 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector41& + operator=(vector41&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector41( vector41 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40) {} template + BOOST_FUSION_GPU_ENABLED vector41( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector41( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector41& operator=(vector41 const& vec) { @@ -87,6 +136,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -96,14 +146,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -113,14 +165,29 @@ namespace boost { namespace fusion template struct vector_data42 { + BOOST_FUSION_GPU_ENABLED vector_data42() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data42(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) {} + vector_data42( + vector_data42&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data42( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) {} + BOOST_FUSION_GPU_ENABLED vector_data42( vector_data42 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) {} + BOOST_FUSION_GPU_ENABLED vector_data42& operator=(vector_data42 const& vec) { @@ -128,6 +195,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data42 init_from_sequence(Sequence const& seq) { @@ -137,6 +205,7 @@ namespace boost { namespace fusion return vector_data42(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41); } template + BOOST_FUSION_GPU_ENABLED static vector_data42 init_from_sequence(Sequence& seq) { @@ -160,25 +229,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<42> size; + BOOST_FUSION_GPU_ENABLED vector42() {} + BOOST_FUSION_GPU_ENABLED vector42( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector42(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41)) {} + BOOST_FUSION_GPU_ENABLED + vector42(vector42&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector42(vector42 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector42& + operator=(vector42 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector42& + operator=(vector42&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector42( vector42 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41) {} template + BOOST_FUSION_GPU_ENABLED vector42( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector42( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector42& operator=(vector42 const& vec) { @@ -186,6 +287,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -195,14 +297,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -212,14 +316,29 @@ namespace boost { namespace fusion template struct vector_data43 { + BOOST_FUSION_GPU_ENABLED vector_data43() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data43(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) , m42(std::forward(_42)) {} + vector_data43( + vector_data43&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) , m42(std::forward(other.m42)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data43( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) {} + BOOST_FUSION_GPU_ENABLED vector_data43( vector_data43 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) {} + BOOST_FUSION_GPU_ENABLED vector_data43& operator=(vector_data43 const& vec) { @@ -227,6 +346,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data43 init_from_sequence(Sequence const& seq) { @@ -236,6 +356,7 @@ namespace boost { namespace fusion return vector_data43(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42); } template + BOOST_FUSION_GPU_ENABLED static vector_data43 init_from_sequence(Sequence& seq) { @@ -259,25 +380,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<43> size; + BOOST_FUSION_GPU_ENABLED vector43() {} + BOOST_FUSION_GPU_ENABLED vector43( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector43(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42)) {} + BOOST_FUSION_GPU_ENABLED + vector43(vector43&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector43(vector43 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector43& + operator=(vector43 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector43& + operator=(vector43&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); this->m42 = std::forward< T42>(vec.m42); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector43( vector43 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42) {} template + BOOST_FUSION_GPU_ENABLED vector43( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector43( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector43& operator=(vector43 const& vec) { @@ -285,6 +438,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -294,14 +448,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -311,14 +467,29 @@ namespace boost { namespace fusion template struct vector_data44 { + BOOST_FUSION_GPU_ENABLED vector_data44() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data44(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) , m42(std::forward(_42)) , m43(std::forward(_43)) {} + vector_data44( + vector_data44&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) , m42(std::forward(other.m42)) , m43(std::forward(other.m43)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data44( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) {} + BOOST_FUSION_GPU_ENABLED vector_data44( vector_data44 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) {} + BOOST_FUSION_GPU_ENABLED vector_data44& operator=(vector_data44 const& vec) { @@ -326,6 +497,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data44 init_from_sequence(Sequence const& seq) { @@ -335,6 +507,7 @@ namespace boost { namespace fusion return vector_data44(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43); } template + BOOST_FUSION_GPU_ENABLED static vector_data44 init_from_sequence(Sequence& seq) { @@ -358,25 +531,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<44> size; + BOOST_FUSION_GPU_ENABLED vector44() {} + BOOST_FUSION_GPU_ENABLED vector44( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector44(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43)) {} + BOOST_FUSION_GPU_ENABLED + vector44(vector44&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector44(vector44 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector44& + operator=(vector44 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector44& + operator=(vector44&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); this->m42 = std::forward< T42>(vec.m42); this->m43 = std::forward< T43>(vec.m43); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector44( vector44 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43) {} template + BOOST_FUSION_GPU_ENABLED vector44( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector44( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector44& operator=(vector44 const& vec) { @@ -384,6 +589,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -393,14 +599,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -410,14 +618,29 @@ namespace boost { namespace fusion template struct vector_data45 { + BOOST_FUSION_GPU_ENABLED vector_data45() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data45(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) , m42(std::forward(_42)) , m43(std::forward(_43)) , m44(std::forward(_44)) {} + vector_data45( + vector_data45&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) , m42(std::forward(other.m42)) , m43(std::forward(other.m43)) , m44(std::forward(other.m44)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data45( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) {} + BOOST_FUSION_GPU_ENABLED vector_data45( vector_data45 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) {} + BOOST_FUSION_GPU_ENABLED vector_data45& operator=(vector_data45 const& vec) { @@ -425,6 +648,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data45 init_from_sequence(Sequence const& seq) { @@ -434,6 +658,7 @@ namespace boost { namespace fusion return vector_data45(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44); } template + BOOST_FUSION_GPU_ENABLED static vector_data45 init_from_sequence(Sequence& seq) { @@ -457,25 +682,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<45> size; + BOOST_FUSION_GPU_ENABLED vector45() {} + BOOST_FUSION_GPU_ENABLED vector45( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector45(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44)) {} + BOOST_FUSION_GPU_ENABLED + vector45(vector45&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector45(vector45 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector45& + operator=(vector45 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector45& + operator=(vector45&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); this->m42 = std::forward< T42>(vec.m42); this->m43 = std::forward< T43>(vec.m43); this->m44 = std::forward< T44>(vec.m44); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector45( vector45 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44) {} template + BOOST_FUSION_GPU_ENABLED vector45( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector45( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector45& operator=(vector45 const& vec) { @@ -483,6 +740,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -492,14 +750,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -509,14 +769,29 @@ namespace boost { namespace fusion template struct vector_data46 { + BOOST_FUSION_GPU_ENABLED vector_data46() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data46(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) , m42(std::forward(_42)) , m43(std::forward(_43)) , m44(std::forward(_44)) , m45(std::forward(_45)) {} + vector_data46( + vector_data46&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) , m42(std::forward(other.m42)) , m43(std::forward(other.m43)) , m44(std::forward(other.m44)) , m45(std::forward(other.m45)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data46( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) {} + BOOST_FUSION_GPU_ENABLED vector_data46( vector_data46 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) {} + BOOST_FUSION_GPU_ENABLED vector_data46& operator=(vector_data46 const& vec) { @@ -524,6 +799,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data46 init_from_sequence(Sequence const& seq) { @@ -533,6 +809,7 @@ namespace boost { namespace fusion return vector_data46(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45); } template + BOOST_FUSION_GPU_ENABLED static vector_data46 init_from_sequence(Sequence& seq) { @@ -556,25 +833,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<46> size; + BOOST_FUSION_GPU_ENABLED vector46() {} + BOOST_FUSION_GPU_ENABLED vector46( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector46(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45)) {} + BOOST_FUSION_GPU_ENABLED + vector46(vector46&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector46(vector46 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector46& + operator=(vector46 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector46& + operator=(vector46&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); this->m42 = std::forward< T42>(vec.m42); this->m43 = std::forward< T43>(vec.m43); this->m44 = std::forward< T44>(vec.m44); this->m45 = std::forward< T45>(vec.m45); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector46( vector46 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45) {} template + BOOST_FUSION_GPU_ENABLED vector46( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector46( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector46& operator=(vector46 const& vec) { @@ -582,6 +891,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -591,14 +901,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -608,14 +920,29 @@ namespace boost { namespace fusion template struct vector_data47 { + BOOST_FUSION_GPU_ENABLED vector_data47() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() , m46() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data47(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) , m42(std::forward(_42)) , m43(std::forward(_43)) , m44(std::forward(_44)) , m45(std::forward(_45)) , m46(std::forward(_46)) {} + vector_data47( + vector_data47&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) , m42(std::forward(other.m42)) , m43(std::forward(other.m43)) , m44(std::forward(other.m44)) , m45(std::forward(other.m45)) , m46(std::forward(other.m46)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data47( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) , m46(_46) {} + BOOST_FUSION_GPU_ENABLED vector_data47( vector_data47 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) , m46(other.m46) {} + BOOST_FUSION_GPU_ENABLED vector_data47& operator=(vector_data47 const& vec) { @@ -623,6 +950,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data47 init_from_sequence(Sequence const& seq) { @@ -632,6 +960,7 @@ namespace boost { namespace fusion return vector_data47(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46); } template + BOOST_FUSION_GPU_ENABLED static vector_data47 init_from_sequence(Sequence& seq) { @@ -655,25 +984,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<47> size; + BOOST_FUSION_GPU_ENABLED vector47() {} + BOOST_FUSION_GPU_ENABLED vector47( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector47(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45) , std::forward(_46)) {} + BOOST_FUSION_GPU_ENABLED + vector47(vector47&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector47(vector47 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector47& + operator=(vector47 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector47& + operator=(vector47&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); this->m42 = std::forward< T42>(vec.m42); this->m43 = std::forward< T43>(vec.m43); this->m44 = std::forward< T44>(vec.m44); this->m45 = std::forward< T45>(vec.m45); this->m46 = std::forward< T46>(vec.m46); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector47( vector47 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45 , vec.m46) {} template + BOOST_FUSION_GPU_ENABLED vector47( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector47( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector47& operator=(vector47 const& vec) { @@ -681,6 +1042,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -690,14 +1052,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; this->m46 = *i46; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } typename add_reference::type at_impl(mpl::int_<46>) { return this->m46; } typename add_reference::type>::type at_impl(mpl::int_<46>) const { return this->m46; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<46>) { return this->m46; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<46>) const { return this->m46; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -707,14 +1071,29 @@ namespace boost { namespace fusion template struct vector_data48 { + BOOST_FUSION_GPU_ENABLED vector_data48() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() , m46() , m47() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data48(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) , m42(std::forward(_42)) , m43(std::forward(_43)) , m44(std::forward(_44)) , m45(std::forward(_45)) , m46(std::forward(_46)) , m47(std::forward(_47)) {} + vector_data48( + vector_data48&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) , m42(std::forward(other.m42)) , m43(std::forward(other.m43)) , m44(std::forward(other.m44)) , m45(std::forward(other.m45)) , m46(std::forward(other.m46)) , m47(std::forward(other.m47)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data48( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) , m46(_46) , m47(_47) {} + BOOST_FUSION_GPU_ENABLED vector_data48( vector_data48 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) , m46(other.m46) , m47(other.m47) {} + BOOST_FUSION_GPU_ENABLED vector_data48& operator=(vector_data48 const& vec) { @@ -722,6 +1101,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data48 init_from_sequence(Sequence const& seq) { @@ -731,6 +1111,7 @@ namespace boost { namespace fusion return vector_data48(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47); } template + BOOST_FUSION_GPU_ENABLED static vector_data48 init_from_sequence(Sequence& seq) { @@ -754,25 +1135,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<48> size; + BOOST_FUSION_GPU_ENABLED vector48() {} + BOOST_FUSION_GPU_ENABLED vector48( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector48(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45) , std::forward(_46) , std::forward(_47)) {} + BOOST_FUSION_GPU_ENABLED + vector48(vector48&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector48(vector48 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector48& + operator=(vector48 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector48& + operator=(vector48&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); this->m42 = std::forward< T42>(vec.m42); this->m43 = std::forward< T43>(vec.m43); this->m44 = std::forward< T44>(vec.m44); this->m45 = std::forward< T45>(vec.m45); this->m46 = std::forward< T46>(vec.m46); this->m47 = std::forward< T47>(vec.m47); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector48( vector48 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45 , vec.m46 , vec.m47) {} template + BOOST_FUSION_GPU_ENABLED vector48( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector48( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector48& operator=(vector48 const& vec) { @@ -780,6 +1193,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -789,14 +1203,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; this->m46 = *i46; this->m47 = *i47; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } typename add_reference::type at_impl(mpl::int_<46>) { return this->m46; } typename add_reference::type>::type at_impl(mpl::int_<46>) const { return this->m46; } typename add_reference::type at_impl(mpl::int_<47>) { return this->m47; } typename add_reference::type>::type at_impl(mpl::int_<47>) const { return this->m47; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<46>) { return this->m46; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<46>) const { return this->m46; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<47>) { return this->m47; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<47>) const { return this->m47; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -806,14 +1222,29 @@ namespace boost { namespace fusion template struct vector_data49 { + BOOST_FUSION_GPU_ENABLED vector_data49() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() , m46() , m47() , m48() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data49(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47 , U48 && _48 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) , m42(std::forward(_42)) , m43(std::forward(_43)) , m44(std::forward(_44)) , m45(std::forward(_45)) , m46(std::forward(_46)) , m47(std::forward(_47)) , m48(std::forward(_48)) {} + vector_data49( + vector_data49&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) , m42(std::forward(other.m42)) , m43(std::forward(other.m43)) , m44(std::forward(other.m44)) , m45(std::forward(other.m45)) , m46(std::forward(other.m46)) , m47(std::forward(other.m47)) , m48(std::forward(other.m48)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data49( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) , m46(_46) , m47(_47) , m48(_48) {} + BOOST_FUSION_GPU_ENABLED vector_data49( vector_data49 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) , m46(other.m46) , m47(other.m47) , m48(other.m48) {} + BOOST_FUSION_GPU_ENABLED vector_data49& operator=(vector_data49 const& vec) { @@ -821,6 +1252,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data49 init_from_sequence(Sequence const& seq) { @@ -830,6 +1262,7 @@ namespace boost { namespace fusion return vector_data49(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48); } template + BOOST_FUSION_GPU_ENABLED static vector_data49 init_from_sequence(Sequence& seq) { @@ -853,25 +1286,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<49> size; + BOOST_FUSION_GPU_ENABLED vector49() {} + BOOST_FUSION_GPU_ENABLED vector49( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector49(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47 , U48 && _48) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45) , std::forward(_46) , std::forward(_47) , std::forward(_48)) {} + BOOST_FUSION_GPU_ENABLED + vector49(vector49&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector49(vector49 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector49& + operator=(vector49 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector49& + operator=(vector49&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); this->m42 = std::forward< T42>(vec.m42); this->m43 = std::forward< T43>(vec.m43); this->m44 = std::forward< T44>(vec.m44); this->m45 = std::forward< T45>(vec.m45); this->m46 = std::forward< T46>(vec.m46); this->m47 = std::forward< T47>(vec.m47); this->m48 = std::forward< T48>(vec.m48); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector49( vector49 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45 , vec.m46 , vec.m47 , vec.m48) {} template + BOOST_FUSION_GPU_ENABLED vector49( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector49( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector49& operator=(vector49 const& vec) { @@ -879,6 +1344,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -888,14 +1354,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; this->m46 = *i46; this->m47 = *i47; this->m48 = *i48; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } typename add_reference::type at_impl(mpl::int_<46>) { return this->m46; } typename add_reference::type>::type at_impl(mpl::int_<46>) const { return this->m46; } typename add_reference::type at_impl(mpl::int_<47>) { return this->m47; } typename add_reference::type>::type at_impl(mpl::int_<47>) const { return this->m47; } typename add_reference::type at_impl(mpl::int_<48>) { return this->m48; } typename add_reference::type>::type at_impl(mpl::int_<48>) const { return this->m48; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<46>) { return this->m46; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<46>) const { return this->m46; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<47>) { return this->m47; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<47>) const { return this->m47; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<48>) { return this->m48; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<48>) const { return this->m48; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -905,14 +1373,29 @@ namespace boost { namespace fusion template struct vector_data50 { + BOOST_FUSION_GPU_ENABLED vector_data50() : m0() , m1() , m2() , m3() , m4() , m5() , m6() , m7() , m8() , m9() , m10() , m11() , m12() , m13() , m14() , m15() , m16() , m17() , m18() , m19() , m20() , m21() , m22() , m23() , m24() , m25() , m26() , m27() , m28() , m29() , m30() , m31() , m32() , m33() , m34() , m35() , m36() , m37() , m38() , m39() , m40() , m41() , m42() , m43() , m44() , m45() , m46() , m47() , m48() , m49() {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector_data50(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47 , U48 && _48 , U49 && _49 + , typename boost::enable_if >::type* = 0 + ) + : m0(std::forward(_0)) , m1(std::forward(_1)) , m2(std::forward(_2)) , m3(std::forward(_3)) , m4(std::forward(_4)) , m5(std::forward(_5)) , m6(std::forward(_6)) , m7(std::forward(_7)) , m8(std::forward(_8)) , m9(std::forward(_9)) , m10(std::forward(_10)) , m11(std::forward(_11)) , m12(std::forward(_12)) , m13(std::forward(_13)) , m14(std::forward(_14)) , m15(std::forward(_15)) , m16(std::forward(_16)) , m17(std::forward(_17)) , m18(std::forward(_18)) , m19(std::forward(_19)) , m20(std::forward(_20)) , m21(std::forward(_21)) , m22(std::forward(_22)) , m23(std::forward(_23)) , m24(std::forward(_24)) , m25(std::forward(_25)) , m26(std::forward(_26)) , m27(std::forward(_27)) , m28(std::forward(_28)) , m29(std::forward(_29)) , m30(std::forward(_30)) , m31(std::forward(_31)) , m32(std::forward(_32)) , m33(std::forward(_33)) , m34(std::forward(_34)) , m35(std::forward(_35)) , m36(std::forward(_36)) , m37(std::forward(_37)) , m38(std::forward(_38)) , m39(std::forward(_39)) , m40(std::forward(_40)) , m41(std::forward(_41)) , m42(std::forward(_42)) , m43(std::forward(_43)) , m44(std::forward(_44)) , m45(std::forward(_45)) , m46(std::forward(_46)) , m47(std::forward(_47)) , m48(std::forward(_48)) , m49(std::forward(_49)) {} + vector_data50( + vector_data50&& other) + : m0(std::forward(other.m0)) , m1(std::forward(other.m1)) , m2(std::forward(other.m2)) , m3(std::forward(other.m3)) , m4(std::forward(other.m4)) , m5(std::forward(other.m5)) , m6(std::forward(other.m6)) , m7(std::forward(other.m7)) , m8(std::forward(other.m8)) , m9(std::forward(other.m9)) , m10(std::forward(other.m10)) , m11(std::forward(other.m11)) , m12(std::forward(other.m12)) , m13(std::forward(other.m13)) , m14(std::forward(other.m14)) , m15(std::forward(other.m15)) , m16(std::forward(other.m16)) , m17(std::forward(other.m17)) , m18(std::forward(other.m18)) , m19(std::forward(other.m19)) , m20(std::forward(other.m20)) , m21(std::forward(other.m21)) , m22(std::forward(other.m22)) , m23(std::forward(other.m23)) , m24(std::forward(other.m24)) , m25(std::forward(other.m25)) , m26(std::forward(other.m26)) , m27(std::forward(other.m27)) , m28(std::forward(other.m28)) , m29(std::forward(other.m29)) , m30(std::forward(other.m30)) , m31(std::forward(other.m31)) , m32(std::forward(other.m32)) , m33(std::forward(other.m33)) , m34(std::forward(other.m34)) , m35(std::forward(other.m35)) , m36(std::forward(other.m36)) , m37(std::forward(other.m37)) , m38(std::forward(other.m38)) , m39(std::forward(other.m39)) , m40(std::forward(other.m40)) , m41(std::forward(other.m41)) , m42(std::forward(other.m42)) , m43(std::forward(other.m43)) , m44(std::forward(other.m44)) , m45(std::forward(other.m45)) , m46(std::forward(other.m46)) , m47(std::forward(other.m47)) , m48(std::forward(other.m48)) , m49(std::forward(other.m49)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector_data50( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48 , typename detail::call_param::type _49) : m0(_0) , m1(_1) , m2(_2) , m3(_3) , m4(_4) , m5(_5) , m6(_6) , m7(_7) , m8(_8) , m9(_9) , m10(_10) , m11(_11) , m12(_12) , m13(_13) , m14(_14) , m15(_15) , m16(_16) , m17(_17) , m18(_18) , m19(_19) , m20(_20) , m21(_21) , m22(_22) , m23(_23) , m24(_24) , m25(_25) , m26(_26) , m27(_27) , m28(_28) , m29(_29) , m30(_30) , m31(_31) , m32(_32) , m33(_33) , m34(_34) , m35(_35) , m36(_36) , m37(_37) , m38(_38) , m39(_39) , m40(_40) , m41(_41) , m42(_42) , m43(_43) , m44(_44) , m45(_45) , m46(_46) , m47(_47) , m48(_48) , m49(_49) {} + BOOST_FUSION_GPU_ENABLED vector_data50( vector_data50 const& other) : m0(other.m0) , m1(other.m1) , m2(other.m2) , m3(other.m3) , m4(other.m4) , m5(other.m5) , m6(other.m6) , m7(other.m7) , m8(other.m8) , m9(other.m9) , m10(other.m10) , m11(other.m11) , m12(other.m12) , m13(other.m13) , m14(other.m14) , m15(other.m15) , m16(other.m16) , m17(other.m17) , m18(other.m18) , m19(other.m19) , m20(other.m20) , m21(other.m21) , m22(other.m22) , m23(other.m23) , m24(other.m24) , m25(other.m25) , m26(other.m26) , m27(other.m27) , m28(other.m28) , m29(other.m29) , m30(other.m30) , m31(other.m31) , m32(other.m32) , m33(other.m33) , m34(other.m34) , m35(other.m35) , m36(other.m36) , m37(other.m37) , m38(other.m38) , m39(other.m39) , m40(other.m40) , m41(other.m41) , m42(other.m42) , m43(other.m43) , m44(other.m44) , m45(other.m45) , m46(other.m46) , m47(other.m47) , m48(other.m48) , m49(other.m49) {} + BOOST_FUSION_GPU_ENABLED vector_data50& operator=(vector_data50 const& vec) { @@ -920,6 +1403,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED static vector_data50 init_from_sequence(Sequence const& seq) { @@ -929,6 +1413,7 @@ namespace boost { namespace fusion return vector_data50(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19 , *i20 , *i21 , *i22 , *i23 , *i24 , *i25 , *i26 , *i27 , *i28 , *i29 , *i30 , *i31 , *i32 , *i33 , *i34 , *i35 , *i36 , *i37 , *i38 , *i39 , *i40 , *i41 , *i42 , *i43 , *i44 , *i45 , *i46 , *i47 , *i48 , *i49); } template + BOOST_FUSION_GPU_ENABLED static vector_data50 init_from_sequence(Sequence& seq) { @@ -952,25 +1437,57 @@ namespace boost { namespace fusion typedef mpl::false_ is_view; typedef random_access_traversal_tag category; typedef mpl::int_<50> size; + BOOST_FUSION_GPU_ENABLED vector50() {} + BOOST_FUSION_GPU_ENABLED vector50( typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48 , typename detail::call_param::type _49) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template + BOOST_FUSION_GPU_ENABLED + vector50(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47 , U48 && _48 , U49 && _49) + : base_type(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45) , std::forward(_46) , std::forward(_47) , std::forward(_48) , std::forward(_49)) {} + BOOST_FUSION_GPU_ENABLED + vector50(vector50&& rhs) + : base_type(std::forward(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector50(vector50 const& rhs) + : base_type(static_cast(rhs)) {} + BOOST_FUSION_GPU_ENABLED + vector50& + operator=(vector50 const& vec) + { + base_type::operator=(vec); + return *this; + } + BOOST_FUSION_GPU_ENABLED + vector50& + operator=(vector50&& vec) + { + this->m0 = std::forward< T0>(vec.m0); this->m1 = std::forward< T1>(vec.m1); this->m2 = std::forward< T2>(vec.m2); this->m3 = std::forward< T3>(vec.m3); this->m4 = std::forward< T4>(vec.m4); this->m5 = std::forward< T5>(vec.m5); this->m6 = std::forward< T6>(vec.m6); this->m7 = std::forward< T7>(vec.m7); this->m8 = std::forward< T8>(vec.m8); this->m9 = std::forward< T9>(vec.m9); this->m10 = std::forward< T10>(vec.m10); this->m11 = std::forward< T11>(vec.m11); this->m12 = std::forward< T12>(vec.m12); this->m13 = std::forward< T13>(vec.m13); this->m14 = std::forward< T14>(vec.m14); this->m15 = std::forward< T15>(vec.m15); this->m16 = std::forward< T16>(vec.m16); this->m17 = std::forward< T17>(vec.m17); this->m18 = std::forward< T18>(vec.m18); this->m19 = std::forward< T19>(vec.m19); this->m20 = std::forward< T20>(vec.m20); this->m21 = std::forward< T21>(vec.m21); this->m22 = std::forward< T22>(vec.m22); this->m23 = std::forward< T23>(vec.m23); this->m24 = std::forward< T24>(vec.m24); this->m25 = std::forward< T25>(vec.m25); this->m26 = std::forward< T26>(vec.m26); this->m27 = std::forward< T27>(vec.m27); this->m28 = std::forward< T28>(vec.m28); this->m29 = std::forward< T29>(vec.m29); this->m30 = std::forward< T30>(vec.m30); this->m31 = std::forward< T31>(vec.m31); this->m32 = std::forward< T32>(vec.m32); this->m33 = std::forward< T33>(vec.m33); this->m34 = std::forward< T34>(vec.m34); this->m35 = std::forward< T35>(vec.m35); this->m36 = std::forward< T36>(vec.m36); this->m37 = std::forward< T37>(vec.m37); this->m38 = std::forward< T38>(vec.m38); this->m39 = std::forward< T39>(vec.m39); this->m40 = std::forward< T40>(vec.m40); this->m41 = std::forward< T41>(vec.m41); this->m42 = std::forward< T42>(vec.m42); this->m43 = std::forward< T43>(vec.m43); this->m44 = std::forward< T44>(vec.m44); this->m45 = std::forward< T45>(vec.m45); this->m46 = std::forward< T46>(vec.m46); this->m47 = std::forward< T47>(vec.m47); this->m48 = std::forward< T48>(vec.m48); this->m49 = std::forward< T49>(vec.m49); + return *this; + } +# endif + template + BOOST_FUSION_GPU_ENABLED vector50( vector50 const& vec) : base_type(vec.m0 , vec.m1 , vec.m2 , vec.m3 , vec.m4 , vec.m5 , vec.m6 , vec.m7 , vec.m8 , vec.m9 , vec.m10 , vec.m11 , vec.m12 , vec.m13 , vec.m14 , vec.m15 , vec.m16 , vec.m17 , vec.m18 , vec.m19 , vec.m20 , vec.m21 , vec.m22 , vec.m23 , vec.m24 , vec.m25 , vec.m26 , vec.m27 , vec.m28 , vec.m29 , vec.m30 , vec.m31 , vec.m32 , vec.m33 , vec.m34 , vec.m35 , vec.m36 , vec.m37 , vec.m38 , vec.m39 , vec.m40 , vec.m41 , vec.m42 , vec.m43 , vec.m44 , vec.m45 , vec.m46 , vec.m47 , vec.m48 , vec.m49) {} template + BOOST_FUSION_GPU_ENABLED vector50( Sequence const& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector50( Sequence& seq ) : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED vector50& operator=(vector50 const& vec) { @@ -978,6 +1495,7 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { @@ -987,14 +1505,16 @@ namespace boost { namespace fusion this->m0 = *i0; this->m1 = *i1; this->m2 = *i2; this->m3 = *i3; this->m4 = *i4; this->m5 = *i5; this->m6 = *i6; this->m7 = *i7; this->m8 = *i8; this->m9 = *i9; this->m10 = *i10; this->m11 = *i11; this->m12 = *i12; this->m13 = *i13; this->m14 = *i14; this->m15 = *i15; this->m16 = *i16; this->m17 = *i17; this->m18 = *i18; this->m19 = *i19; this->m20 = *i20; this->m21 = *i21; this->m22 = *i22; this->m23 = *i23; this->m24 = *i24; this->m25 = *i25; this->m26 = *i26; this->m27 = *i27; this->m28 = *i28; this->m29 = *i29; this->m30 = *i30; this->m31 = *i31; this->m32 = *i32; this->m33 = *i33; this->m34 = *i34; this->m35 = *i35; this->m36 = *i36; this->m37 = *i37; this->m38 = *i38; this->m39 = *i39; this->m40 = *i40; this->m41 = *i41; this->m42 = *i42; this->m43 = *i43; this->m44 = *i44; this->m45 = *i45; this->m46 = *i46; this->m47 = *i47; this->m48 = *i48; this->m49 = *i49; return *this; } - typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } typename add_reference::type at_impl(mpl::int_<46>) { return this->m46; } typename add_reference::type>::type at_impl(mpl::int_<46>) const { return this->m46; } typename add_reference::type at_impl(mpl::int_<47>) { return this->m47; } typename add_reference::type>::type at_impl(mpl::int_<47>) const { return this->m47; } typename add_reference::type at_impl(mpl::int_<48>) { return this->m48; } typename add_reference::type>::type at_impl(mpl::int_<48>) const { return this->m48; } typename add_reference::type at_impl(mpl::int_<49>) { return this->m49; } typename add_reference::type>::type at_impl(mpl::int_<49>) const { return this->m49; } + BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<0>) { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<0>) const { return this->m0; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<1>) { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<1>) const { return this->m1; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<2>) { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<2>) const { return this->m2; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<3>) { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<3>) const { return this->m3; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<4>) { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<4>) const { return this->m4; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<5>) { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<5>) const { return this->m5; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<6>) { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<6>) const { return this->m6; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<7>) { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<7>) const { return this->m7; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<8>) { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<8>) const { return this->m8; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<9>) { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<9>) const { return this->m9; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<10>) { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<10>) const { return this->m10; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<11>) { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<11>) const { return this->m11; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<12>) { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<12>) const { return this->m12; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<13>) { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<13>) const { return this->m13; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<14>) { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<14>) const { return this->m14; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<15>) { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<15>) const { return this->m15; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<16>) { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<16>) const { return this->m16; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<17>) { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<17>) const { return this->m17; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<18>) { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<18>) const { return this->m18; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<19>) { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<19>) const { return this->m19; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<20>) { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<20>) const { return this->m20; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<21>) { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<21>) const { return this->m21; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<22>) { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<22>) const { return this->m22; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<23>) { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<23>) const { return this->m23; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<24>) { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<24>) const { return this->m24; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<25>) { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<25>) const { return this->m25; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<26>) { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<26>) const { return this->m26; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<27>) { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<27>) const { return this->m27; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<28>) { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<28>) const { return this->m28; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<29>) { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<29>) const { return this->m29; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<30>) { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<30>) const { return this->m30; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<31>) { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<31>) const { return this->m31; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<32>) { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<32>) const { return this->m32; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<33>) { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<33>) const { return this->m33; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<34>) { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<34>) const { return this->m34; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<35>) { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<35>) const { return this->m35; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<36>) { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<36>) const { return this->m36; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<37>) { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<37>) const { return this->m37; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<38>) { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<38>) const { return this->m38; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<39>) { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<39>) const { return this->m39; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<40>) { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<40>) const { return this->m40; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<41>) { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<41>) const { return this->m41; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<42>) { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<42>) const { return this->m42; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<43>) { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<43>) const { return this->m43; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<44>) { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<44>) const { return this->m44; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<45>) { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<45>) const { return this->m45; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<46>) { return this->m46; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<46>) const { return this->m46; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<47>) { return this->m47; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<47>) const { return this->m47; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<48>) { return this->m48; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<48>) const { return this->m48; } BOOST_FUSION_GPU_ENABLED typename add_reference::type at_impl(mpl::int_<49>) { return this->m49; } BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(mpl::int_<49>) const { return this->m49; } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { return this->at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp index 8e6f1f68a1..ab2a39299c 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector10.hpp @@ -27,14 +27,18 @@ namespace boost { namespace fusion typedef typename vector_n::size size; typedef typename vector_n::category category; typedef typename vector_n::is_view is_view; + BOOST_FUSION_GPU_ENABLED vector() : vec() {} template + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} template + BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -44,28 +48,100 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit vector(typename detail::call_param::type _0) : vec(_0) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit + vector(U0 && _0) + : vec(std::forward(_0)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1) : vec(_0 , _1) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1) + : vec(std::forward(_0) , std::forward(_1)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : vec(_0 , _1 , _2) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : vec(_0 , _1 , _2 , _3) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : vec(_0 , _1 , _2 , _3 , _4) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : vec(_0 , _1 , _2 , _3 , _4 , _5) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9)) {} +# endif template + BOOST_FUSION_GPU_ENABLED vector& operator=(vector const& rhs) { @@ -73,13 +149,42 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED vector& operator=(T const& rhs) { vec = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED + vector(vector&& rhs) + : vec(std::forward(rhs.vec)) {} + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector&& rhs) + { + vec = std::forward(rhs.vec); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + vector& + operator=(T&& rhs) + { + vec = std::forward(rhs); + return *this; + } +# endif template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at_c::type >::type @@ -88,6 +193,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at_c::type @@ -98,6 +204,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at::type >::type @@ -106,6 +213,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at::type diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp index bc04fefeed..0ae2b8a4c4 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector20.hpp @@ -27,14 +27,18 @@ namespace boost { namespace fusion typedef typename vector_n::size size; typedef typename vector_n::category category; typedef typename vector_n::is_view is_view; + BOOST_FUSION_GPU_ENABLED vector() : vec() {} template + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} template + BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -44,48 +48,190 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit vector(typename detail::call_param::type _0) : vec(_0) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit + vector(U0 && _0) + : vec(std::forward(_0)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1) : vec(_0 , _1) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1) + : vec(std::forward(_0) , std::forward(_1)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : vec(_0 , _1 , _2) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : vec(_0 , _1 , _2 , _3) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : vec(_0 , _1 , _2 , _3 , _4) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : vec(_0 , _1 , _2 , _3 , _4 , _5) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19)) {} +# endif template + BOOST_FUSION_GPU_ENABLED vector& operator=(vector const& rhs) { @@ -93,13 +239,42 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED vector& operator=(T const& rhs) { vec = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED + vector(vector&& rhs) + : vec(std::forward(rhs.vec)) {} + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector&& rhs) + { + vec = std::forward(rhs.vec); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + vector& + operator=(T&& rhs) + { + vec = std::forward(rhs); + return *this; + } +# endif template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at_c::type >::type @@ -108,6 +283,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at_c::type @@ -118,6 +294,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at::type >::type @@ -126,6 +303,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at::type diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp index 0841920a27..3c9d5230f7 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector30.hpp @@ -27,14 +27,18 @@ namespace boost { namespace fusion typedef typename vector_n::size size; typedef typename vector_n::category category; typedef typename vector_n::is_view is_view; + BOOST_FUSION_GPU_ENABLED vector() : vec() {} template + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} template + BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -44,68 +48,280 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit vector(typename detail::call_param::type _0) : vec(_0) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit + vector(U0 && _0) + : vec(std::forward(_0)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1) : vec(_0 , _1) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1) + : vec(std::forward(_0) , std::forward(_1)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : vec(_0 , _1 , _2) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : vec(_0 , _1 , _2 , _3) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : vec(_0 , _1 , _2 , _3 , _4) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : vec(_0 , _1 , _2 , _3 , _4 , _5) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29)) {} +# endif template + BOOST_FUSION_GPU_ENABLED vector& operator=(vector const& rhs) { @@ -113,13 +329,42 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED vector& operator=(T const& rhs) { vec = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED + vector(vector&& rhs) + : vec(std::forward(rhs.vec)) {} + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector&& rhs) + { + vec = std::forward(rhs.vec); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + vector& + operator=(T&& rhs) + { + vec = std::forward(rhs); + return *this; + } +# endif template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at_c::type >::type @@ -128,6 +373,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at_c::type @@ -138,6 +384,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at::type >::type @@ -146,6 +393,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at::type diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp index 11d9cc7d66..e5555a2495 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector40.hpp @@ -27,14 +27,18 @@ namespace boost { namespace fusion typedef typename vector_n::size size; typedef typename vector_n::category category; typedef typename vector_n::is_view is_view; + BOOST_FUSION_GPU_ENABLED vector() : vec() {} template + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} template + BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -44,88 +48,370 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit vector(typename detail::call_param::type _0) : vec(_0) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit + vector(U0 && _0) + : vec(std::forward(_0)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1) : vec(_0 , _1) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1) + : vec(std::forward(_0) , std::forward(_1)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : vec(_0 , _1 , _2) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : vec(_0 , _1 , _2 , _3) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : vec(_0 , _1 , _2 , _3 , _4) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : vec(_0 , _1 , _2 , _3 , _4 , _5) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39)) {} +# endif template + BOOST_FUSION_GPU_ENABLED vector& operator=(vector const& rhs) { @@ -133,13 +419,42 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED vector& operator=(T const& rhs) { vec = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED + vector(vector&& rhs) + : vec(std::forward(rhs.vec)) {} + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector&& rhs) + { + vec = std::forward(rhs.vec); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + vector& + operator=(T&& rhs) + { + vec = std::forward(rhs); + return *this; + } +# endif template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at_c::type >::type @@ -148,6 +463,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at_c::type @@ -158,6 +474,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at::type >::type @@ -166,6 +483,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at::type diff --git a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp index 1ac6c6f423..e9e2a506fc 100644 --- a/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/preprocessed/vvector50.hpp @@ -27,14 +27,18 @@ namespace boost { namespace fusion typedef typename vector_n::size size; typedef typename vector_n::category category; typedef typename vector_n::is_view is_view; + BOOST_FUSION_GPU_ENABLED vector() : vec() {} template + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} template + BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -44,108 +48,460 @@ namespace boost { namespace fusion + BOOST_FUSION_GPU_ENABLED explicit vector(typename detail::call_param::type _0) : vec(_0) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + explicit + vector(U0 && _0) + : vec(std::forward(_0)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1) : vec(_0 , _1) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1) + : vec(std::forward(_0) , std::forward(_1)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : vec(_0 , _1 , _2) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : vec(_0 , _1 , _2 , _3) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : vec(_0 , _1 , _2 , _3 , _4) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : vec(_0 , _1 , _2 , _3 , _4 , _5) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45) , std::forward(_46)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45) , std::forward(_46) , std::forward(_47)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47 , U48 && _48) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45) , std::forward(_46) , std::forward(_47) , std::forward(_48)) {} +# endif + BOOST_FUSION_GPU_ENABLED vector(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48 , typename detail::call_param::type _49) : vec(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49) {} +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + vector(U0 && _0 , U1 && _1 , U2 && _2 , U3 && _3 , U4 && _4 , U5 && _5 , U6 && _6 , U7 && _7 , U8 && _8 , U9 && _9 , U10 && _10 , U11 && _11 , U12 && _12 , U13 && _13 , U14 && _14 , U15 && _15 , U16 && _16 , U17 && _17 , U18 && _18 , U19 && _19 , U20 && _20 , U21 && _21 , U22 && _22 , U23 && _23 , U24 && _24 , U25 && _25 , U26 && _26 , U27 && _27 , U28 && _28 , U29 && _29 , U30 && _30 , U31 && _31 , U32 && _32 , U33 && _33 , U34 && _34 , U35 && _35 , U36 && _36 , U37 && _37 , U38 && _38 , U39 && _39 , U40 && _40 , U41 && _41 , U42 && _42 , U43 && _43 , U44 && _44 , U45 && _45 , U46 && _46 , U47 && _47 , U48 && _48 , U49 && _49) + : vec(std::forward(_0) , std::forward(_1) , std::forward(_2) , std::forward(_3) , std::forward(_4) , std::forward(_5) , std::forward(_6) , std::forward(_7) , std::forward(_8) , std::forward(_9) , std::forward(_10) , std::forward(_11) , std::forward(_12) , std::forward(_13) , std::forward(_14) , std::forward(_15) , std::forward(_16) , std::forward(_17) , std::forward(_18) , std::forward(_19) , std::forward(_20) , std::forward(_21) , std::forward(_22) , std::forward(_23) , std::forward(_24) , std::forward(_25) , std::forward(_26) , std::forward(_27) , std::forward(_28) , std::forward(_29) , std::forward(_30) , std::forward(_31) , std::forward(_32) , std::forward(_33) , std::forward(_34) , std::forward(_35) , std::forward(_36) , std::forward(_37) , std::forward(_38) , std::forward(_39) , std::forward(_40) , std::forward(_41) , std::forward(_42) , std::forward(_43) , std::forward(_44) , std::forward(_45) , std::forward(_46) , std::forward(_47) , std::forward(_48) , std::forward(_49)) {} +# endif template + BOOST_FUSION_GPU_ENABLED vector& operator=(vector const& rhs) { @@ -153,13 +509,42 @@ namespace boost { namespace fusion return *this; } template + BOOST_FUSION_GPU_ENABLED vector& operator=(T const& rhs) { vec = rhs; return *this; } + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } +# if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED + vector(vector&& rhs) + : vec(std::forward(rhs.vec)) {} + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector&& rhs) + { + vec = std::forward(rhs.vec); + return *this; + } + template + BOOST_FUSION_GPU_ENABLED + vector& + operator=(T&& rhs) + { + vec = std::forward(rhs); + return *this; + } +# endif template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at_c::type >::type @@ -168,6 +553,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at_c::type @@ -178,6 +564,7 @@ namespace boost { namespace fusion return vec.at_impl(index); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at::type >::type @@ -186,6 +573,7 @@ namespace boost { namespace fusion return vec.at_impl(mpl::int_()); } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at::type diff --git a/3party/boost/boost/fusion/container/vector/detail/prior_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/prior_impl.hpp index b0a6a684db..b3bdc55f60 100644 --- a/3party/boost/boost/fusion/container/vector/detail/prior_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/prior_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_PRIOR_IMPL_05042005_1145) #define FUSION_PRIOR_IMPL_05042005_1145 +#include #include namespace boost { namespace fusion @@ -30,6 +31,7 @@ namespace boost { namespace fusion typedef typename Iterator::index index; typedef vector_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/container/vector/detail/value_at_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/value_at_impl.hpp index b5aeb199e9..9b94e9deb3 100644 --- a/3party/boost/boost/fusion/container/vector/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/value_at_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_AT_IMPL_05052005_0232) #define FUSION_VALUE_AT_IMPL_05052005_0232 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/container/vector/detail/value_of_impl.hpp b/3party/boost/boost/fusion/container/vector/detail/value_of_impl.hpp index e10c5225b3..7527d58148 100644 --- a/3party/boost/boost/fusion/container/vector/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_05052005_1128) #define FUSION_VALUE_OF_IMPL_05052005_1128 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/container/vector/detail/vector_forward_ctor.hpp b/3party/boost/boost/fusion/container/vector/detail/vector_forward_ctor.hpp index c41d5b297b..976e2a1f74 100644 --- a/3party/boost/boost/fusion/container/vector/detail/vector_forward_ctor.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/vector_forward_ctor.hpp @@ -1,25 +1,21 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #ifndef BOOST_PP_IS_ITERATING #if !defined(FUSION_VECTOR_FORWARD_CTOR_07122005_1123) #define FUSION_VECTOR_FORWARD_CTOR_07122005_1123 -#include -#include -#include - -#define FUSION_FORWARD_CTOR_MOVE(z, n, _) std::move(_##n) +#define FUSION_FORWARD_CTOR_FORWARD(z, n, _) std::forward(_##n) #define BOOST_PP_FILENAME_1 \ #define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE) #include BOOST_PP_ITERATE() -#undef FUSION_FORWARD_CTOR_MOVE +#undef FUSION_FORWARD_CTOR_FORWARD #endif #else // defined(BOOST_PP_IS_ITERATING) /////////////////////////////////////////////////////////////////////////////// @@ -28,23 +24,32 @@ // /////////////////////////////////////////////////////////////////////////////// -#define N BOOST_PP_ITERATION() +#define M BOOST_PP_ITERATION() -#if N == 1 + BOOST_FUSION_GPU_ENABLED +#if M == 1 explicit #endif vector(BOOST_PP_ENUM_BINARY_PARAMS( - N, typename detail::call_param::type _)) - : vec(BOOST_PP_ENUM_PARAMS(N, _)) {} + M, typename detail::call_param::type _)) + : vec(BOOST_PP_ENUM_PARAMS(M, _)) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) -#if N == 1 +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + template + BOOST_FUSION_GPU_ENABLED +#if M == 1 explicit #endif - vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) - : vec(BOOST_PP_ENUM(N, FUSION_FORWARD_CTOR_MOVE, _)) {} + vector(BOOST_PP_ENUM_BINARY_PARAMS(M, U, && _)) + : vec(BOOST_PP_ENUM(M, FUSION_FORWARD_CTOR_FORWARD, _)) {} +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif #endif -#undef N +#undef M #endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/3party/boost/boost/fusion/container/vector/detail/vector_n.hpp b/3party/boost/boost/fusion/container/vector/detail/vector_n.hpp index 539b47fa99..89c6f03c1b 100644 --- a/3party/boost/boost/fusion/container/vector/detail/vector_n.hpp +++ b/3party/boost/boost/fusion/container/vector/detail/vector_n.hpp @@ -9,28 +9,41 @@ #if !defined(FUSION_MACRO_05042005) #define FUSION_MACRO_05042005 -#define FUSION_VECTOR_MEMBER_MEMBER_DEFAULT_INIT(z, n, _) m##n() -#define FUSION_VECTOR_MEMBER_MEMBER_INIT(z, n, _) m##n(_##n) -#define FUSION_VECTOR_MEMBER_COPY_INIT(z, n, _) m##n(other.m##n) -#define FUSION_VECTOR_MEMBER_FWD(z, n, _) m##n(std::forward(other.m##n)) -#define FUSION_VECTOR_ARG_FWD(z, n, _) m##n(std::forward(_##n)) -#define FUSION_VECTOR_MEMBER_MEMBER_DECL(z, n, _) T##n m##n; -#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) std::forward(_##n) +#define FUSION_VECTOR_CTOR_DEFAULT_INIT(z, n, _) \ + m##n() -#define FUSION_VECTOR_MEMBER_MEMBER_ASSIGN(z, n, _) \ +#define FUSION_VECTOR_CTOR_INIT(z, n, _) \ + m##n(_##n) + +#define FUSION_VECTOR_MEMBER_CTOR_INIT(z, n, _) \ + m##n(other.m##n) + +#define FUSION_VECTOR_CTOR_FORWARD(z, n, _) \ + m##n(std::forward(other.m##n)) + +#define FUSION_VECTOR_CTOR_ARG_FWD(z, n, _) \ + m##n(std::forward(_##n)) + +#define FUSION_VECTOR_MEMBER_DECL(z, n, _) \ + T##n m##n; + +#define FUSION_VECTOR_MEMBER_FORWARD(z, n, _) \ + std::forward(_##n) + +#define FUSION_VECTOR_MEMBER_ASSIGN(z, n, _) \ this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n); -#define FUSION_VECTOR_MEMBER_DEREF_MEMBER_ASSIGN(z, n, _) \ +#define FUSION_VECTOR_MEMBER_DEREF_ASSIGN(z, n, _) \ this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n); -#define FUSION_VECTOR_MEMBER_MEMBER_FORWARD(z, n, _) \ +#define FUSION_VECTOR_MEMBER_MOVE(z, n, _) \ this->BOOST_PP_CAT(m, n) = std::forward< \ BOOST_PP_CAT(T, n)>(vec.BOOST_PP_CAT(m, n)); #define FUSION_VECTOR_MEMBER_AT_IMPL(z, n, _) \ - typename add_reference::type \ + BOOST_FUSION_GPU_ENABLED typename add_reference::type \ at_impl(mpl::int_) { return this->m##n; } \ - typename add_reference::type>::type \ + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type \ at_impl(mpl::int_) const { return this->m##n; } #define FUSION_VECTOR_MEMBER_ITER_DECL_VAR(z, n, _) \ @@ -46,37 +59,50 @@ template struct BOOST_PP_CAT(vector_data, N) { + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector_data, N)() - : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_MEMBER_DEFAULT_INIT, _) {} + : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_DEFAULT_INIT, _) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) - BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) - : BOOST_PP_ENUM(N, FUSION_VECTOR_ARG_FWD, _) {} +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + template + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _) + , typename boost::enable_if >::type* /*dummy*/ = 0 + ) + : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_ARG_FWD, _) {} + BOOST_PP_CAT(vector_data, N)( + BOOST_PP_CAT(vector_data, N)&& other) + : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_FORWARD, _) {} +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif #endif + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector_data, N)( BOOST_PP_ENUM_BINARY_PARAMS( N, typename detail::call_param::type _)) - : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_MEMBER_INIT, _) {} + : BOOST_PP_ENUM(N, FUSION_VECTOR_CTOR_INIT, _) {} + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector_data, N)( BOOST_PP_CAT(vector_data, N) const& other) - : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_COPY_INIT, _) {} - -#if !defined(BOOST_NO_RVALUE_REFERENCES) - BOOST_PP_CAT(vector_data, N)( - BOOST_PP_CAT(vector_data, N)&& other) - : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FWD, _) {} -#endif + : BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_CTOR_INIT, _) {} + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector_data, N)& operator=(BOOST_PP_CAT(vector_data, N) const& vec) { - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_ASSIGN, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _) return *this; } template + BOOST_FUSION_GPU_ENABLED static BOOST_PP_CAT(vector_data, N) init_from_sequence(Sequence const& seq) { @@ -87,6 +113,7 @@ } template + BOOST_FUSION_GPU_ENABLED static BOOST_PP_CAT(vector_data, N) init_from_sequence(Sequence& seq) { @@ -96,7 +123,7 @@ return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i)); } - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_DECL, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DECL, _) }; template @@ -113,8 +140,10 @@ typedef random_access_traversal_tag category; typedef mpl::int_ size; + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector, N)() {} + BOOST_FUSION_GPU_ENABLED #if (N == 1) explicit #endif @@ -123,25 +152,60 @@ N, typename detail::call_param::type _)) : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + template + BOOST_FUSION_GPU_ENABLED #if (N == 1) explicit -#endif - BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, T, && _)) + BOOST_PP_CAT(vector, N)(U0&& _0 + , typename boost::enable_if >::type* /*dummy*/ = 0 + ) + : base_type(std::forward(_0)) {} +#else + BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, U, && _)) : base_type(BOOST_PP_ENUM(N, FUSION_VECTOR_MEMBER_FORWARD, _)) {} #endif -#if !defined(BOOST_NO_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N)&& rhs) : base_type(std::forward(rhs)) {} + + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)(BOOST_PP_CAT(vector, N) const& rhs) + : base_type(static_cast(rhs)) {} + + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)& + operator=(BOOST_PP_CAT(vector, N) const& vec) + { + base_type::operator=(vec); + return *this; + } + + BOOST_FUSION_GPU_ENABLED + BOOST_PP_CAT(vector, N)& + operator=(BOOST_PP_CAT(vector, N)&& vec) + { + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MOVE, _) + return *this; + } +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif #endif template + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector, N)( BOOST_PP_CAT(vector, N) const& vec) : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {} template + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector, N)( Sequence const& seq #if (N == 1) @@ -151,6 +215,7 @@ : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector, N)( Sequence& seq #if (N == 1) @@ -160,36 +225,30 @@ : base_type(base_type::init_from_sequence(seq)) {} template + BOOST_FUSION_GPU_ENABLED BOOST_PP_CAT(vector, N)& operator=(BOOST_PP_CAT(vector, N) const& vec) { - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_ASSIGN, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_ASSIGN, _) return *this; } template + BOOST_FUSION_GPU_ENABLED typename boost::disable_if, this_type&>::type operator=(Sequence const& seq) { typedef typename result_of::begin::type I0; I0 i0 = fusion::begin(seq); BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_VECTOR_MEMBER_ITER_DECL_VAR, _) - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_MEMBER_ASSIGN, _) + BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_DEREF_ASSIGN, _) return *this; } -#if !defined(BOOST_NO_RVALUE_REFERENCES) - BOOST_PP_CAT(vector, N)& - operator=(BOOST_PP_CAT(vector, N)&& vec) - { - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_MEMBER_FORWARD, _) - return *this; - } -#endif - BOOST_PP_REPEAT(N, FUSION_VECTOR_MEMBER_AT_IMPL, _) template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type at_impl(I) { @@ -197,6 +256,7 @@ } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type>::type at_impl(I) const { @@ -205,5 +265,3 @@ }; #undef N - - diff --git a/3party/boost/boost/fusion/container/vector/limits.hpp b/3party/boost/boost/fusion/container/vector/limits.hpp index e1b6042d6b..6e106144bb 100644 --- a/3party/boost/boost/fusion/container/vector/limits.hpp +++ b/3party/boost/boost/fusion/container/vector/limits.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VECTOR_LIMITS_07072005_1246) #define FUSION_VECTOR_LIMITS_07072005_1246 +#include #include #if !defined(FUSION_MAX_VECTOR_SIZE) diff --git a/3party/boost/boost/fusion/container/vector/vector.hpp b/3party/boost/boost/fusion/container/vector/vector.hpp index 36c1b7ac9c..391bf39d25 100644 --- a/3party/boost/boost/fusion/container/vector/vector.hpp +++ b/3party/boost/boost/fusion/container/vector/vector.hpp @@ -7,6 +7,10 @@ #if !defined(FUSION_VECTOR_07072005_1244) #define FUSION_VECTOR_07072005_1244 +#include +#include +#include +#include #include #include #include @@ -17,7 +21,7 @@ #include #include -#if !defined(__WAVE__) +#define FUSION_HASH # #if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) @@ -25,6 +29,7 @@ ctor_helper(rhs, is_base_of()) \ #define BOOST_FUSION_VECTOR_CTOR_HELPER() \ + BOOST_FUSION_GPU_ENABLED \ static vector_n const& \ ctor_helper(vector const& rhs, mpl::true_) \ { \ @@ -32,6 +37,7 @@ } \ \ template \ + BOOST_FUSION_GPU_ENABLED \ static T const& \ ctor_helper(T const& rhs, mpl::false_) \ { \ @@ -47,8 +53,6 @@ #endif -#endif // !defined(__WAVE__) - #if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES) #include #else @@ -96,22 +100,21 @@ namespace boost { namespace fusion typedef typename vector_n::category category; typedef typename vector_n::is_view is_view; + BOOST_FUSION_GPU_ENABLED vector() : vec() {} template + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} + BOOST_FUSION_GPU_ENABLED vector(vector const& rhs) : vec(rhs.vec) {} -#if !defined(BOOST_NO_RVALUE_REFERENCES) - vector(vector&& rhs) - : vec(std::forward(rhs.vec)) {} -#endif - template + BOOST_FUSION_GPU_ENABLED vector(Sequence const& rhs) : vec(BOOST_FUSION_VECTOR_COPY_INIT()) {} @@ -125,6 +128,7 @@ namespace boost { namespace fusion #include template + BOOST_FUSION_GPU_ENABLED vector& operator=(vector const& rhs) { @@ -133,6 +137,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED vector& operator=(T const& rhs) { @@ -140,7 +145,23 @@ namespace boost { namespace fusion return *this; } -#if !defined(BOOST_NO_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED + vector& + operator=(vector const& rhs) + { + vec = rhs.vec; + return *this; + } + +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) +#endif +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ + (defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES)) + BOOST_FUSION_GPU_ENABLED + vector(vector&& rhs) + : vec(std::forward(rhs.vec)) {} + BOOST_FUSION_GPU_ENABLED vector& operator=(vector&& rhs) { @@ -149,15 +170,20 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED vector& operator=(T&& rhs) { vec = std::forward(rhs); return *this; } +#endif +#if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) +FUSION_HASH endif #endif template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at_c::type >::type @@ -167,6 +193,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at_c::type @@ -178,6 +205,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename mpl::at::type >::type @@ -187,6 +215,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename add_reference< typename add_const< typename mpl::at::type @@ -210,4 +239,5 @@ namespace boost { namespace fusion #endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES +#undef FUSION_HASH #endif diff --git a/3party/boost/boost/fusion/container/vector/vector10.hpp b/3party/boost/boost/fusion/container/vector/vector10.hpp index bcafe59981..4f9b18f5e1 100644 --- a/3party/boost/boost/fusion/container/vector/vector10.hpp +++ b/3party/boost/boost/fusion/container/vector/vector10.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VECTOR10_05042005_0257) #define FUSION_VECTOR10_05042005_0257 +#include #include #include #include @@ -50,9 +51,11 @@ namespace boost { namespace fusion typedef random_access_traversal_tag category; typedef mpl::int_<0> size; + BOOST_FUSION_GPU_ENABLED vector0() {} template + BOOST_FUSION_GPU_ENABLED vector0(Sequence const& /*seq*/) {} }; @@ -80,12 +83,16 @@ namespace boost { namespace fusion namespace boost { namespace fusion { + struct vector_tag; + struct fusion_sequence_tag; + struct random_access_traversal_tag; +#define FUSION_HASH # // expand vector1 to vector10 #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (1, 10) #include BOOST_PP_ITERATE() - +#undef FUSION_HASH }} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/3party/boost/boost/fusion/container/vector/vector10_fwd.hpp b/3party/boost/boost/fusion/container/vector/vector10_fwd.hpp index 5f8c2188c3..ce5cb1e806 100644 --- a/3party/boost/boost/fusion/container/vector/vector10_fwd.hpp +++ b/3party/boost/boost/fusion/container/vector/vector10_fwd.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_VECTOR10_FWD_HPP_INCLUDED) #define BOOST_FUSION_VECTOR10_FWD_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/vector/vector20.hpp b/3party/boost/boost/fusion/container/vector/vector20.hpp index d688a0d22e..11df242062 100644 --- a/3party/boost/boost/fusion/container/vector/vector20.hpp +++ b/3party/boost/boost/fusion/container/vector/vector20.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_VECTOR20_05052005_0205) #define FUSION_VECTOR20_05052005_0205 +#include #include #include #include @@ -61,11 +62,12 @@ namespace boost { namespace fusion struct fusion_sequence_tag; struct random_access_traversal_tag; +#define FUSION_HASH # // expand vector11 to vector20 #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (11, 20) #include BOOST_PP_ITERATE() - +#undef FUSION_HASH }} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/3party/boost/boost/fusion/container/vector/vector20_fwd.hpp b/3party/boost/boost/fusion/container/vector/vector20_fwd.hpp index 4102888f3e..bf1b39b454 100644 --- a/3party/boost/boost/fusion/container/vector/vector20_fwd.hpp +++ b/3party/boost/boost/fusion/container/vector/vector20_fwd.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_VECTOR20_FWD_HPP_INCLUDED) #define BOOST_FUSION_VECTOR20_FWD_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/vector/vector30.hpp b/3party/boost/boost/fusion/container/vector/vector30.hpp index 4080005ad6..de379a06a2 100644 --- a/3party/boost/boost/fusion/container/vector/vector30.hpp +++ b/3party/boost/boost/fusion/container/vector/vector30.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VECTOR30_05052005_0206) #define FUSION_VECTOR30_05052005_0206 +#include #include #include #include @@ -60,11 +61,12 @@ namespace boost { namespace fusion struct fusion_sequence_tag; struct random_access_traversal_tag; +#define FUSION_HASH # // expand vector21 to vector30 #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (21, 30) #include BOOST_PP_ITERATE() - +#undef FUSION_HASH }} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/3party/boost/boost/fusion/container/vector/vector30_fwd.hpp b/3party/boost/boost/fusion/container/vector/vector30_fwd.hpp index 9b60644929..23b38569e5 100644 --- a/3party/boost/boost/fusion/container/vector/vector30_fwd.hpp +++ b/3party/boost/boost/fusion/container/vector/vector30_fwd.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_VECTOR30_FWD_HPP_INCLUDED) #define BOOST_FUSION_VECTOR30_FWD_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/vector/vector40.hpp b/3party/boost/boost/fusion/container/vector/vector40.hpp index 3350badbc4..2c6fd85431 100644 --- a/3party/boost/boost/fusion/container/vector/vector40.hpp +++ b/3party/boost/boost/fusion/container/vector/vector40.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_VECTOR40_05052005_0208) #define FUSION_VECTOR40_05052005_0208 +#include #include #include #include @@ -61,11 +62,12 @@ namespace boost { namespace fusion struct fusion_sequence_tag; struct random_access_traversal_tag; +#define FUSION_HASH # // expand vector31 to vector40 #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (31, 40) #include BOOST_PP_ITERATE() - +#undef FUSION_HASH }} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/3party/boost/boost/fusion/container/vector/vector40_fwd.hpp b/3party/boost/boost/fusion/container/vector/vector40_fwd.hpp index 05342d1dea..fc3d29d195 100644 --- a/3party/boost/boost/fusion/container/vector/vector40_fwd.hpp +++ b/3party/boost/boost/fusion/container/vector/vector40_fwd.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_VECTOR40_FWD_HPP_INCLUDED) #define BOOST_FUSION_VECTOR40_FWD_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/vector/vector50.hpp b/3party/boost/boost/fusion/container/vector/vector50.hpp index ec28828e7e..d209966535 100644 --- a/3party/boost/boost/fusion/container/vector/vector50.hpp +++ b/3party/boost/boost/fusion/container/vector/vector50.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VECTOR50_05052005_0207) #define FUSION_VECTOR50_05052005_0207 +#include #include #include #include @@ -60,11 +61,12 @@ namespace boost { namespace fusion struct fusion_sequence_tag; struct random_access_traversal_tag; +#define FUSION_HASH # // expand vector41 to vector50 #define BOOST_PP_FILENAME_1 #define BOOST_PP_ITERATION_LIMITS (41, 50) #include BOOST_PP_ITERATE() - +#undef FUSION_HASH }} #if defined(__WAVE__) && defined(BOOST_FUSION_CREATE_PREPROCESSED_FILES) diff --git a/3party/boost/boost/fusion/container/vector/vector50_fwd.hpp b/3party/boost/boost/fusion/container/vector/vector50_fwd.hpp index 03b3b2f87a..52083ad47c 100644 --- a/3party/boost/boost/fusion/container/vector/vector50_fwd.hpp +++ b/3party/boost/boost/fusion/container/vector/vector50_fwd.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_VECTOR50_FWD_HPP_INCLUDED) #define BOOST_FUSION_VECTOR50_FWD_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/container/vector/vector_fwd.hpp b/3party/boost/boost/fusion/container/vector/vector_fwd.hpp index 194736a250..d157ea81f8 100644 --- a/3party/boost/boost/fusion/container/vector/vector_fwd.hpp +++ b/3party/boost/boost/fusion/container/vector/vector_fwd.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_VECTOR_FORWARD_07072005_0125) #define FUSION_VECTOR_FORWARD_07072005_0125 +#include #include #include diff --git a/3party/boost/boost/fusion/container/vector/vector_iterator.hpp b/3party/boost/boost/fusion/container/vector/vector_iterator.hpp index 66e9ebed26..ffa4d1380f 100644 --- a/3party/boost/boost/fusion/container/vector/vector_iterator.hpp +++ b/3party/boost/boost/fusion/container/vector/vector_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VECTOR_ITERATOR_05042005_0635) #define FUSION_VECTOR_ITERATOR_05042005_0635 +#include #include #include #include @@ -36,6 +37,7 @@ namespace boost { namespace fusion typedef vector_iterator_identity< typename add_const::type, N> identity; + BOOST_FUSION_GPU_ENABLED vector_iterator(Vector& in_vec) : vec(in_vec) {} Vector& vec; diff --git a/3party/boost/boost/fusion/functional.hpp b/3party/boost/boost/fusion/functional.hpp index 12662d973a..56b25cff02 100644 --- a/3party/boost/boost/fusion/functional.hpp +++ b/3party/boost/boost/fusion/functional.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/functional/adapter.hpp b/3party/boost/boost/fusion/functional/adapter.hpp index 1a1f9819f0..a4ddc7a382 100644 --- a/3party/boost/boost/fusion/functional/adapter.hpp +++ b/3party/boost/boost/fusion/functional/adapter.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/functional/adapter/fused.hpp b/3party/boost/boost/fusion/functional/adapter/fused.hpp index 91ae1f2cf1..c6b1b03c81 100644 --- a/3party/boost/boost/fusion/functional/adapter/fused.hpp +++ b/3party/boost/boost/fusion/functional/adapter/fused.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED +#include #include #include @@ -36,11 +37,13 @@ namespace boost { namespace fusion public: + BOOST_FUSION_GPU_ENABLED inline explicit fused(func_const_fwd_t f = Function()) : fnc_transformed(f) { } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke::type operator()(Seq const & s) const { @@ -48,6 +51,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke::type operator()(Seq const & s) { @@ -55,6 +59,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke::type operator()(Seq & s) const { @@ -62,6 +67,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke::type operator()(Seq & s) { diff --git a/3party/boost/boost/fusion/functional/adapter/fused_function_object.hpp b/3party/boost/boost/fusion/functional/adapter/fused_function_object.hpp index da8ac99baf..b3973a11d1 100644 --- a/3party/boost/boost/fusion/functional/adapter/fused_function_object.hpp +++ b/3party/boost/boost/fusion/functional/adapter/fused_function_object.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED +#include #include #include @@ -36,11 +37,13 @@ namespace boost { namespace fusion public: + BOOST_FUSION_GPU_ENABLED inline explicit fused_function_object(func_const_fwd_t f = Function()) : fnc_transformed(f) { } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke_function_object::type operator()(Seq const & s) const { @@ -49,6 +52,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke_function_object::type operator()(Seq const & s) @@ -58,6 +62,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke_function_object::type operator()(Seq & s) const @@ -67,6 +72,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke_function_object::type operator()(Seq & s) { diff --git a/3party/boost/boost/fusion/functional/adapter/fused_procedure.hpp b/3party/boost/boost/fusion/functional/adapter/fused_procedure.hpp index 10c7c7a0d2..495320af7b 100644 --- a/3party/boost/boost/fusion/functional/adapter/fused_procedure.hpp +++ b/3party/boost/boost/fusion/functional/adapter/fused_procedure.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED +#include #include #include @@ -36,11 +37,13 @@ namespace boost { namespace fusion public: + BOOST_FUSION_GPU_ENABLED inline explicit fused_procedure(func_const_fwd_t f = Function()) : fnc_transformed(f) { } template + BOOST_FUSION_GPU_ENABLED inline void operator()(Seq const & s) const { fusion::invoke_procedure< @@ -48,6 +51,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline void operator()(Seq const & s) { fusion::invoke_procedure< @@ -55,6 +59,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline void operator()(Seq & s) const { fusion::invoke_procedure< @@ -62,6 +67,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline void operator()(Seq & s) { return fusion::invoke_procedure< diff --git a/3party/boost/boost/fusion/functional/adapter/unfused.hpp b/3party/boost/boost/fusion/functional/adapter/unfused.hpp index facd5c5427..b02f5d28a9 100644 --- a/3party/boost/boost/fusion/functional/adapter/unfused.hpp +++ b/3party/boost/boost/fusion/functional/adapter/unfused.hpp @@ -47,14 +47,14 @@ namespace boost { namespace fusion using unfused::operator(); - inline explicit unfused(func_const_fwd_t f = function()) + BOOST_FUSION_GPU_ENABLED inline explicit unfused(func_const_fwd_t f = function()) : unfused(f) { } typedef typename boost::result_of< function_c(fusion::vector0<> &) >::type call_const_0_result; - inline call_const_0_result operator()() const + BOOST_FUSION_GPU_ENABLED inline call_const_0_result operator()() const { fusion::vector0<> arg; return this->fnc_transformed(arg); @@ -63,7 +63,7 @@ namespace boost { namespace fusion typedef typename boost::result_of< function(fusion::vector0<> &) >::type call_0_result; - inline call_0_result operator()() + BOOST_FUSION_GPU_ENABLED inline call_0_result operator()() { fusion::vector0<> arg; return this->fnc_transformed(arg); @@ -79,6 +79,7 @@ namespace boost { namespace fusion typedef typename detail::call_param::type func_const_fwd_t; public: + BOOST_FUSION_GPU_ENABLED inline explicit unfused(func_const_fwd_t f = function()) : fnc_transformed(f) { } @@ -100,7 +101,7 @@ namespace boost { namespace fusion namespace boost { -#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE) +#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_CXX11_DECLTYPE) template struct result_of< boost::fusion::unfused const () > { @@ -148,6 +149,7 @@ namespace boost { }; template + BOOST_FUSION_GPU_ENABLED inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const @@ -159,6 +161,7 @@ namespace boost } template + BOOST_FUSION_GPU_ENABLED inline typename boost::result_of & )>::type operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) diff --git a/3party/boost/boost/fusion/functional/adapter/unfused_typed.hpp b/3party/boost/boost/fusion/functional/adapter/unfused_typed.hpp index 923c6876c1..c3ab33dd74 100644 --- a/3party/boost/boost/fusion/functional/adapter/unfused_typed.hpp +++ b/3party/boost/boost/fusion/functional/adapter/unfused_typed.hpp @@ -63,6 +63,7 @@ namespace boost { namespace fusion public: + BOOST_FUSION_GPU_ENABLED inline explicit unfused_typed(func_const_fwd_t f = Function()) : fnc_transformed(f) { } @@ -80,7 +81,7 @@ namespace boost { namespace fusion namespace boost { -#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE) +#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_CXX11_DECLTYPE) template struct result_of< boost::fusion::unfused_typed const () > : boost::fusion::unfused_typed::template result< @@ -129,7 +130,8 @@ namespace boost #define M(z,i,s) \ typename call_param::type>::type a##i - inline typename boost::result_of< + BOOST_FUSION_GPU_ENABLED + inline typename boost::result_of< function_c(arg_vector_t &) >::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const { @@ -141,6 +143,7 @@ namespace boost return static_cast(this)->fnc_transformed(arg); } + BOOST_FUSION_GPU_ENABLED inline typename boost::result_of< function(arg_vector_t &) >::type operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) diff --git a/3party/boost/boost/fusion/functional/generation.hpp b/3party/boost/boost/fusion/functional/generation.hpp index 3d812b9f7e..b97fd6c019 100644 --- a/3party/boost/boost/fusion/functional/generation.hpp +++ b/3party/boost/boost/fusion/functional/generation.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_GENERATION_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/functional/generation/detail/gen_make_adapter.hpp b/3party/boost/boost/fusion/functional/generation/detail/gen_make_adapter.hpp index 1c2c3e95a0..b7744826bd 100644 --- a/3party/boost/boost/fusion/functional/generation/detail/gen_make_adapter.hpp +++ b/3party/boost/boost/fusion/functional/generation/detail/gen_make_adapter.hpp @@ -31,6 +31,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::BOOST_FUSION_FUNC_NAME::type BOOST_FUSION_FUNC_NAME(F const & f) { diff --git a/3party/boost/boost/fusion/functional/generation/make_fused.hpp b/3party/boost/boost/fusion/functional/generation/make_fused.hpp index 12365824f7..13ed807ea3 100644 --- a/3party/boost/boost/fusion/functional/generation/make_fused.hpp +++ b/3party/boost/boost/fusion/functional/generation/make_fused.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP_INCLUDED +#include #include #define BOOST_FUSION_CLASS_TPL_NAME fused diff --git a/3party/boost/boost/fusion/functional/generation/make_fused_function_object.hpp b/3party/boost/boost/fusion/functional/generation/make_fused_function_object.hpp index 4146ddd6a7..f3169e6ee8 100644 --- a/3party/boost/boost/fusion/functional/generation/make_fused_function_object.hpp +++ b/3party/boost/boost/fusion/functional/generation/make_fused_function_object.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP_INCLUDED +#include #include #define BOOST_FUSION_CLASS_TPL_NAME fused_function_object diff --git a/3party/boost/boost/fusion/functional/generation/make_fused_procedure.hpp b/3party/boost/boost/fusion/functional/generation/make_fused_procedure.hpp index 0687577c26..f8ca1254a7 100644 --- a/3party/boost/boost/fusion/functional/generation/make_fused_procedure.hpp +++ b/3party/boost/boost/fusion/functional/generation/make_fused_procedure.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP_INCLUDED +#include #include #define BOOST_FUSION_CLASS_TPL_NAME fused_procedure diff --git a/3party/boost/boost/fusion/functional/generation/make_unfused.hpp b/3party/boost/boost/fusion/functional/generation/make_unfused.hpp index 79eadbd5aa..6e7f9e0061 100644 --- a/3party/boost/boost/fusion/functional/generation/make_unfused.hpp +++ b/3party/boost/boost/fusion/functional/generation/make_unfused.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_HPP_INCLUDED +#include #include #define BOOST_FUSION_CLASS_TPL_NAME unfused diff --git a/3party/boost/boost/fusion/functional/invocation.hpp b/3party/boost/boost/fusion/functional/invocation.hpp index 3ca68c34ff..fe881bfb51 100644 --- a/3party/boost/boost/fusion/functional/invocation.hpp +++ b/3party/boost/boost/fusion/functional/invocation.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/functional/invocation/detail/that_ptr.hpp b/3party/boost/boost/fusion/functional/invocation/detail/that_ptr.hpp index a92c436b25..a2b4a86a4d 100644 --- a/3party/boost/boost/fusion/functional/invocation/detail/that_ptr.hpp +++ b/3party/boost/boost/fusion/functional/invocation/detail/that_ptr.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP_INCLUDED) #define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP_INCLUDED +#include #include #include #include @@ -24,11 +25,13 @@ namespace boost { namespace fusion { namespace detail typedef typename remove_reference::type pointee; template + BOOST_FUSION_GPU_ENABLED static inline pointee * do_get_pointer(T &, pointee * x) { return x; } template + BOOST_FUSION_GPU_ENABLED static inline pointee * do_get_pointer(T & x, void const *) { return get_pointer(x); @@ -36,17 +39,21 @@ namespace boost { namespace fusion { namespace detail public: + BOOST_FUSION_GPU_ENABLED static inline pointee * get(pointee * x) { return x; } + BOOST_FUSION_GPU_ENABLED static inline pointee * get(pointee & x) { return boost::addressof(x); } - template static inline pointee * get(T & x) + template + BOOST_FUSION_GPU_ENABLED + static inline pointee * get(T & x) { return do_get_pointer(x, boost::addressof(x)); } diff --git a/3party/boost/boost/fusion/functional/invocation/invoke.hpp b/3party/boost/boost/fusion/functional/invocation/invoke.hpp index 1a49170277..d4aa945647 100644 --- a/3party/boost/boost/fusion/functional/invocation/invoke.hpp +++ b/3party/boost/boost/fusion/functional/invocation/invoke.hpp @@ -145,6 +145,7 @@ namespace boost { namespace fusion typedef typename boost::add_reference::type result_type; + BOOST_FUSION_GPU_ENABLED static inline result_type call(T C::* f, Sequence & s) { typename result_of::front::type c = fusion::front(s); @@ -164,6 +165,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke::type invoke(Function f, Sequence & s) { @@ -173,6 +175,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke::type invoke(Function f, Sequence const & s) { @@ -205,6 +208,7 @@ namespace boost { namespace fusion #if N > 0 template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & s) { @@ -214,6 +218,7 @@ namespace boost { namespace fusion #else template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & /*s*/) { @@ -234,6 +239,7 @@ namespace boost { namespace fusion #if N > 0 template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & s) { @@ -243,6 +249,7 @@ namespace boost { namespace fusion #else template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & /*s*/) { @@ -263,6 +270,7 @@ namespace boost { namespace fusion typedef typename ft::result_type::type result_type; template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & s) { @@ -293,6 +301,7 @@ namespace boost { namespace fusion #if N > 0 template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & s) { @@ -304,6 +313,7 @@ namespace boost { namespace fusion #else template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & /*s*/) { @@ -326,6 +336,7 @@ namespace boost { namespace fusion #if N > 0 template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & s) { @@ -337,6 +348,7 @@ namespace boost { namespace fusion #else template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & /*s*/) { @@ -358,6 +370,7 @@ namespace boost { namespace fusion typedef typename ft::result_type::type result_type; template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & s) { diff --git a/3party/boost/boost/fusion/functional/invocation/invoke_function_object.hpp b/3party/boost/boost/fusion/functional/invocation/invoke_function_object.hpp index 81c33f9229..a5c9510c25 100644 --- a/3party/boost/boost/fusion/functional/invocation/invoke_function_object.hpp +++ b/3party/boost/boost/fusion/functional/invocation/invoke_function_object.hpp @@ -40,10 +40,12 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke_function_object::type invoke_function_object(Function, Sequence &); template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke_function_object::type invoke_function_object(Function, Sequence const &); @@ -79,6 +81,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke_function_object::type invoke_function_object(Function f, Sequence & s) { @@ -88,6 +91,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::invoke_function_object::type invoke_function_object(Function f, Sequence const & s) { @@ -121,6 +125,7 @@ namespace boost { namespace fusion #if N > 0 template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & s) { @@ -132,6 +137,7 @@ namespace boost { namespace fusion #else template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & /*s*/) { @@ -155,6 +161,7 @@ namespace boost { namespace fusion #if N > 0 template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & s) { @@ -170,6 +177,7 @@ namespace boost { namespace fusion #else template + BOOST_FUSION_GPU_ENABLED static inline result_type call(F & f, Sequence & /*s*/) { diff --git a/3party/boost/boost/fusion/functional/invocation/invoke_procedure.hpp b/3party/boost/boost/fusion/functional/invocation/invoke_procedure.hpp index ddb5e5065d..bd3e49b9d0 100644 --- a/3party/boost/boost/fusion/functional/invocation/invoke_procedure.hpp +++ b/3party/boost/boost/fusion/functional/invocation/invoke_procedure.hpp @@ -47,9 +47,11 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline void invoke_procedure(Function, Sequence &); template + BOOST_FUSION_GPU_ENABLED inline void invoke_procedure(Function, Sequence const &); //----- ---- --- -- - - - - @@ -75,6 +77,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline void invoke_procedure(Function f, Sequence & s) { detail::invoke_procedure_impl< @@ -83,6 +86,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline void invoke_procedure(Function f, Sequence const & s) { detail::invoke_procedure_impl< @@ -109,6 +113,7 @@ namespace boost { namespace fusion #if N > 0 + BOOST_FUSION_GPU_ENABLED static inline void call(Function & f, Sequence & s) { f(BOOST_PP_ENUM(N,M,~)); @@ -116,6 +121,7 @@ namespace boost { namespace fusion #else + BOOST_FUSION_GPU_ENABLED static inline void call(Function & f, Sequence & /*s*/) { f(); @@ -129,6 +135,7 @@ namespace boost { namespace fusion template struct invoke_procedure_impl { + BOOST_FUSION_GPU_ENABLED static inline void call(Function & f, Sequence & s) { (that_ptr 0 + BOOST_FUSION_GPU_ENABLED static inline void call(Function & f, Sequence & s) { typedef typename result_of::begin::type I0; @@ -160,6 +168,7 @@ namespace boost { namespace fusion } #else + BOOST_FUSION_GPU_ENABLED static inline void call(Function & f, Sequence & /*s*/) { f(); @@ -173,6 +182,7 @@ namespace boost { namespace fusion template struct invoke_procedure_impl { + BOOST_FUSION_GPU_ENABLED static inline void call(Function & f, Sequence & s) { typedef typename result_of::begin::type I0; diff --git a/3party/boost/boost/fusion/include/accumulate.hpp b/3party/boost/boost/fusion/include/accumulate.hpp index b9ca6526ef..b2cbc189e6 100644 --- a/3party/boost/boost/fusion/include/accumulate.hpp +++ b/3party/boost/boost/fusion/include/accumulate.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ACCUMULATE) #define FUSION_INCLUDE_ACCUMULATE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_adt.hpp b/3party/boost/boost/fusion/include/adapt_adt.hpp index 87ef15e848..b84016d67c 100644 --- a/3party/boost/boost/fusion/include/adapt_adt.hpp +++ b/3party/boost/boost/fusion/include/adapt_adt.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_ADT_HPP #define BOOST_FUSION_INCLUDE_ADAPT_ADT_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_adt_named.cpp b/3party/boost/boost/fusion/include/adapt_adt_named.cpp index 8ac033a019..8ccdf0777e 100644 --- a/3party/boost/boost/fusion/include/adapt_adt_named.cpp +++ b/3party/boost/boost/fusion/include/adapt_adt_named.cpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ADAPT_ADT_NAMED) #define FUSION_INCLUDE_ADAPT_ADT_NAMED +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_adt_named.hpp b/3party/boost/boost/fusion/include/adapt_adt_named.hpp index 308249e818..46b0a4cb39 100644 --- a/3party/boost/boost/fusion/include/adapt_adt_named.hpp +++ b/3party/boost/boost/fusion/include/adapt_adt_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_ADT_NAMED_HPP #define BOOST_FUSION_INCLUDE_ADAPT_ADT_NAMED_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_assoc_adt.hpp b/3party/boost/boost/fusion/include/adapt_assoc_adt.hpp index 55bd551465..775057c073 100644 --- a/3party/boost/boost/fusion/include/adapt_assoc_adt.hpp +++ b/3party/boost/boost/fusion/include/adapt_assoc_adt.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADT_HPP #define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADR_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_assoc_adt_named.hpp b/3party/boost/boost/fusion/include/adapt_assoc_adt_named.hpp index aa356e756d..d25aae5149 100644 --- a/3party/boost/boost/fusion/include/adapt_assoc_adt_named.hpp +++ b/3party/boost/boost/fusion/include/adapt_assoc_adt_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADT_NAMED_HPP #define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADT_NAMED_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_assoc_class.hpp b/3party/boost/boost/fusion/include/adapt_assoc_class.hpp index ccbfeb18e6..83d6c4daa4 100644 --- a/3party/boost/boost/fusion/include/adapt_assoc_class.hpp +++ b/3party/boost/boost/fusion/include/adapt_assoc_class.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_CLASS_HPP #define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_CLASS_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_assoc_class_named.hpp b/3party/boost/boost/fusion/include/adapt_assoc_class_named.hpp index 10782681d5..3c04183d2a 100644 --- a/3party/boost/boost/fusion/include/adapt_assoc_class_named.hpp +++ b/3party/boost/boost/fusion/include/adapt_assoc_class_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_CLASS_NAMED_HPP #define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_CLASS_NAMED_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_assoc_struct.hpp b/3party/boost/boost/fusion/include/adapt_assoc_struct.hpp index 681aa2e421..a55f6e560d 100644 --- a/3party/boost/boost/fusion/include/adapt_assoc_struct.hpp +++ b/3party/boost/boost/fusion/include/adapt_assoc_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_STRUCT_HPP #define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_STRUCT_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_assoc_struct_named.hpp b/3party/boost/boost/fusion/include/adapt_assoc_struct_named.hpp index 19204f50b5..3afd13733b 100644 --- a/3party/boost/boost/fusion/include/adapt_assoc_struct_named.hpp +++ b/3party/boost/boost/fusion/include/adapt_assoc_struct_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_STRUCT_NAMED_HPP #define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_STRUCT_NAMED_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_struct.hpp b/3party/boost/boost/fusion/include/adapt_struct.hpp index c1271543f8..ea2fea5b75 100644 --- a/3party/boost/boost/fusion/include/adapt_struct.hpp +++ b/3party/boost/boost/fusion/include/adapt_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_STRUCT_HPP #define BOOST_FUSION_INCLUDE_ADAPT_STRUCT_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapt_struct_named.hpp b/3party/boost/boost/fusion/include/adapt_struct_named.hpp index 01cbf3294d..c80b57df2f 100644 --- a/3party/boost/boost/fusion/include/adapt_struct_named.hpp +++ b/3party/boost/boost/fusion/include/adapt_struct_named.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ADAPT_STRUCT_NAMED_HPP #define BOOST_FUSION_INCLUDE_ADAPT_STRUCT_NAMED_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapted.hpp b/3party/boost/boost/fusion/include/adapted.hpp index 1827267da5..da68f5b206 100644 --- a/3party/boost/boost/fusion/include/adapted.hpp +++ b/3party/boost/boost/fusion/include/adapted.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ADAPTED) #define FUSION_INCLUDE_ADAPTED +#include #include #endif diff --git a/3party/boost/boost/fusion/include/adapter.hpp b/3party/boost/boost/fusion/include/adapter.hpp index 2441d7caa6..53ff0796e3 100644 --- a/3party/boost/boost/fusion/include/adapter.hpp +++ b/3party/boost/boost/fusion/include/adapter.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ADAPTER) #define FUSION_INCLUDE_ADAPTER +#include #include #endif diff --git a/3party/boost/boost/fusion/include/advance.hpp b/3party/boost/boost/fusion/include/advance.hpp index cb9ed7a9b8..011c3b8b7c 100644 --- a/3party/boost/boost/fusion/include/advance.hpp +++ b/3party/boost/boost/fusion/include/advance.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ADVANCE) #define FUSION_INCLUDE_ADVANCE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/algorithm.hpp b/3party/boost/boost/fusion/include/algorithm.hpp index 1a362fd8f6..df33a54a47 100644 --- a/3party/boost/boost/fusion/include/algorithm.hpp +++ b/3party/boost/boost/fusion/include/algorithm.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ALGORITHM) #define FUSION_INCLUDE_ALGORITHM +#include #include #endif diff --git a/3party/boost/boost/fusion/include/all.hpp b/3party/boost/boost/fusion/include/all.hpp index 5802626890..1848e754bd 100644 --- a/3party/boost/boost/fusion/include/all.hpp +++ b/3party/boost/boost/fusion/include/all.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ALL) #define FUSION_INCLUDE_ALL +#include #include #endif diff --git a/3party/boost/boost/fusion/include/any.hpp b/3party/boost/boost/fusion/include/any.hpp index e5c7306020..c76d6b6905 100644 --- a/3party/boost/boost/fusion/include/any.hpp +++ b/3party/boost/boost/fusion/include/any.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ANY) #define FUSION_INCLUDE_ANY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/array.hpp b/3party/boost/boost/fusion/include/array.hpp index b54cd70d88..b0e53a7b35 100644 --- a/3party/boost/boost/fusion/include/array.hpp +++ b/3party/boost/boost/fusion/include/array.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ARRAY) #define FUSION_INCLUDE_ARRAY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/as_deque.hpp b/3party/boost/boost/fusion/include/as_deque.hpp index 8f1686f268..77f90fd34a 100644 --- a/3party/boost/boost/fusion/include/as_deque.hpp +++ b/3party/boost/boost/fusion/include/as_deque.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AS_DEQUE) #define FUSION_INCLUDE_AS_DEQUE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/as_list.hpp b/3party/boost/boost/fusion/include/as_list.hpp index 6c477d2402..9a4072ebbd 100644 --- a/3party/boost/boost/fusion/include/as_list.hpp +++ b/3party/boost/boost/fusion/include/as_list.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AS_LIST) #define FUSION_INCLUDE_AS_LIST +#include #include #endif diff --git a/3party/boost/boost/fusion/include/as_map.hpp b/3party/boost/boost/fusion/include/as_map.hpp index bdfd3f53c0..3a6db91344 100644 --- a/3party/boost/boost/fusion/include/as_map.hpp +++ b/3party/boost/boost/fusion/include/as_map.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AS_MAP) #define FUSION_INCLUDE_AS_MAP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/as_set.hpp b/3party/boost/boost/fusion/include/as_set.hpp index c0d5a8b3d4..697f86c7ce 100644 --- a/3party/boost/boost/fusion/include/as_set.hpp +++ b/3party/boost/boost/fusion/include/as_set.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AS_SET) #define FUSION_INCLUDE_AS_SET +#include #include #endif diff --git a/3party/boost/boost/fusion/include/as_vector.hpp b/3party/boost/boost/fusion/include/as_vector.hpp index 4c9b39d041..35aecd8f37 100644 --- a/3party/boost/boost/fusion/include/as_vector.hpp +++ b/3party/boost/boost/fusion/include/as_vector.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AS_VECTOR) #define FUSION_INCLUDE_AS_VECTOR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/at.hpp b/3party/boost/boost/fusion/include/at.hpp index eacd7bbb80..99b70d6d94 100644 --- a/3party/boost/boost/fusion/include/at.hpp +++ b/3party/boost/boost/fusion/include/at.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AT) #define FUSION_INCLUDE_AT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/at_c.hpp b/3party/boost/boost/fusion/include/at_c.hpp index a2403d16c3..053a596210 100644 --- a/3party/boost/boost/fusion/include/at_c.hpp +++ b/3party/boost/boost/fusion/include/at_c.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AT_C) #define FUSION_INCLUDE_AT_C +#include #include #endif diff --git a/3party/boost/boost/fusion/include/at_key.hpp b/3party/boost/boost/fusion/include/at_key.hpp index 89a0aae26a..17331b9172 100644 --- a/3party/boost/boost/fusion/include/at_key.hpp +++ b/3party/boost/boost/fusion/include/at_key.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AT_KEY) #define FUSION_INCLUDE_AT_KEY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/auxiliary.hpp b/3party/boost/boost/fusion/include/auxiliary.hpp index e75ee3c611..af36d6d2f4 100644 --- a/3party/boost/boost/fusion/include/auxiliary.hpp +++ b/3party/boost/boost/fusion/include/auxiliary.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_AUXILIARY) #define FUSION_INCLUDE_AUXILIARY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/back.hpp b/3party/boost/boost/fusion/include/back.hpp index d5e77f0a67..9e2e977007 100644 --- a/3party/boost/boost/fusion/include/back.hpp +++ b/3party/boost/boost/fusion/include/back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_BACK) #define FUSION_INCLUDE_BACK +#include #include #endif diff --git a/3party/boost/boost/fusion/include/begin.hpp b/3party/boost/boost/fusion/include/begin.hpp index 53361fb210..88a449f20f 100644 --- a/3party/boost/boost/fusion/include/begin.hpp +++ b/3party/boost/boost/fusion/include/begin.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_BEGIN) #define FUSION_INCLUDE_BEGIN +#include #include #endif diff --git a/3party/boost/boost/fusion/include/boost_array.hpp b/3party/boost/boost/fusion/include/boost_array.hpp index d2c2bed836..b85fa53ff7 100644 --- a/3party/boost/boost/fusion/include/boost_array.hpp +++ b/3party/boost/boost/fusion/include/boost_array.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_BOOST_ARRAY) #define FUSION_INCLUDE_BOOST_ARRAY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/boost_tuple.hpp b/3party/boost/boost/fusion/include/boost_tuple.hpp index 1ccc94dab4..3f5fc8c308 100644 --- a/3party/boost/boost/fusion/include/boost_tuple.hpp +++ b/3party/boost/boost/fusion/include/boost_tuple.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_BOOST_TUPLE) #define FUSION_INCLUDE_BOOST_TUPLE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/category_of.hpp b/3party/boost/boost/fusion/include/category_of.hpp index c390686cd6..0b75369fe3 100644 --- a/3party/boost/boost/fusion/include/category_of.hpp +++ b/3party/boost/boost/fusion/include/category_of.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_CATEGORY_OF) #define FUSION_INCLUDE_CATEGORY_OF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/clear.hpp b/3party/boost/boost/fusion/include/clear.hpp index 7fd863323d..0c742fd58e 100644 --- a/3party/boost/boost/fusion/include/clear.hpp +++ b/3party/boost/boost/fusion/include/clear.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_CLEAR) #define FUSION_INCLUDE_CLEAR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/comparison.hpp b/3party/boost/boost/fusion/include/comparison.hpp index e7790f2831..07e7cd808d 100644 --- a/3party/boost/boost/fusion/include/comparison.hpp +++ b/3party/boost/boost/fusion/include/comparison.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_COMPARISON) #define FUSION_INCLUDE_COMPARISON +#include #include #endif diff --git a/3party/boost/boost/fusion/include/cons.hpp b/3party/boost/boost/fusion/include/cons.hpp index 853eb6d2c4..498e9407ee 100644 --- a/3party/boost/boost/fusion/include/cons.hpp +++ b/3party/boost/boost/fusion/include/cons.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_CONS) #define FUSION_INCLUDE_CONS +#include #include #endif diff --git a/3party/boost/boost/fusion/include/cons_tie.hpp b/3party/boost/boost/fusion/include/cons_tie.hpp index 740e1739f0..7467ee4703 100644 --- a/3party/boost/boost/fusion/include/cons_tie.hpp +++ b/3party/boost/boost/fusion/include/cons_tie.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_CONS_TIE) #define FUSION_INCLUDE_CONS_TIE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/container.hpp b/3party/boost/boost/fusion/include/container.hpp index 657b4c3022..4e6886f8c6 100644 --- a/3party/boost/boost/fusion/include/container.hpp +++ b/3party/boost/boost/fusion/include/container.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_CONTAINER) #define FUSION_INCLUDE_CONTAINER +#include #include #endif diff --git a/3party/boost/boost/fusion/include/convert.hpp b/3party/boost/boost/fusion/include/convert.hpp index 1d64ea1b00..10fff22e55 100644 --- a/3party/boost/boost/fusion/include/convert.hpp +++ b/3party/boost/boost/fusion/include/convert.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_CONVERT) #define FUSION_INCLUDE_CONVERT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/copy.hpp b/3party/boost/boost/fusion/include/copy.hpp index 9fb4bb5432..e44f58bf3b 100644 --- a/3party/boost/boost/fusion/include/copy.hpp +++ b/3party/boost/boost/fusion/include/copy.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_COPY) #define FUSION_INCLUDE_COPY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/count.hpp b/3party/boost/boost/fusion/include/count.hpp index 750a030327..3e5b8fca59 100644 --- a/3party/boost/boost/fusion/include/count.hpp +++ b/3party/boost/boost/fusion/include/count.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_COUNT) #define FUSION_INCLUDE_COUNT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/count_if.hpp b/3party/boost/boost/fusion/include/count_if.hpp index ff804ae94e..524af8aba8 100644 --- a/3party/boost/boost/fusion/include/count_if.hpp +++ b/3party/boost/boost/fusion/include/count_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_COUNT_IF) #define FUSION_INCLUDE_COUNT_IF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/deduce.hpp b/3party/boost/boost/fusion/include/deduce.hpp index 43ec5c0f3d..572e0d52fd 100644 --- a/3party/boost/boost/fusion/include/deduce.hpp +++ b/3party/boost/boost/fusion/include/deduce.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_DEDUCE) #define FUSION_INCLUDE_DEDUCE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/deduce_sequence.hpp b/3party/boost/boost/fusion/include/deduce_sequence.hpp index a8d36c08c9..153fac544d 100644 --- a/3party/boost/boost/fusion/include/deduce_sequence.hpp +++ b/3party/boost/boost/fusion/include/deduce_sequence.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_DEDUCE_SEQUENCE) #define FUSION_INCLUDE_DEDUCE_SEQUENCE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/define_assoc_struct.hpp b/3party/boost/boost/fusion/include/define_assoc_struct.hpp index 8b8ee261d2..56ca85af77 100644 --- a/3party/boost/boost/fusion/include/define_assoc_struct.hpp +++ b/3party/boost/boost/fusion/include/define_assoc_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_DEFINE_ASSOC_STRUCT_HPP #define BOOST_FUSION_INCLUDE_DEFINE_ASSOC_STRUCT_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/define_struct.hpp b/3party/boost/boost/fusion/include/define_struct.hpp index 564f1c7834..366c98d323 100644 --- a/3party/boost/boost/fusion/include/define_struct.hpp +++ b/3party/boost/boost/fusion/include/define_struct.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_DEFINE_STRUCT_HPP #define BOOST_FUSION_INCLUDE_DEFINE_STRUCT_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/define_struct_inline.hpp b/3party/boost/boost/fusion/include/define_struct_inline.hpp index 141ad4e2dd..bf18865233 100644 --- a/3party/boost/boost/fusion/include/define_struct_inline.hpp +++ b/3party/boost/boost/fusion/include/define_struct_inline.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_DEFINE_STRUCT_INLINE_HPP #define BOOST_FUSION_INCLUDE_DEFINE_STRUCT_INLINE_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/deque.hpp b/3party/boost/boost/fusion/include/deque.hpp index 17386a1dc1..bbbdfe80a4 100644 --- a/3party/boost/boost/fusion/include/deque.hpp +++ b/3party/boost/boost/fusion/include/deque.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_DEQUE) #define FUSION_INCLUDE_DEQUE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/deque_fwd.hpp b/3party/boost/boost/fusion/include/deque_fwd.hpp index 915c3cbb4e..8a41121a68 100644 --- a/3party/boost/boost/fusion/include/deque_fwd.hpp +++ b/3party/boost/boost/fusion/include/deque_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_DEQUE) #define FUSION_INCLUDE_DEQUE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/deque_tie.hpp b/3party/boost/boost/fusion/include/deque_tie.hpp index 8adbc4c0bc..400e9803e0 100644 --- a/3party/boost/boost/fusion/include/deque_tie.hpp +++ b/3party/boost/boost/fusion/include/deque_tie.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_GENERATION) #define FUSION_INCLUDE_GENERATION +#include #include #include diff --git a/3party/boost/boost/fusion/include/deref.hpp b/3party/boost/boost/fusion/include/deref.hpp index 9c831f79da..64dbe6972c 100644 --- a/3party/boost/boost/fusion/include/deref.hpp +++ b/3party/boost/boost/fusion/include/deref.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_DEREF) #define FUSION_INCLUDE_DEREF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/deref_data.hpp b/3party/boost/boost/fusion/include/deref_data.hpp index 24d4e7cfd1..e6bc41f4df 100644 --- a/3party/boost/boost/fusion/include/deref_data.hpp +++ b/3party/boost/boost/fusion/include/deref_data.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_DEREF_DATA_HPP #define BOOST_FUSION_INCLUDE_DEREF_DATA_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/distance.hpp b/3party/boost/boost/fusion/include/distance.hpp index fac103a6f2..f76bad114f 100644 --- a/3party/boost/boost/fusion/include/distance.hpp +++ b/3party/boost/boost/fusion/include/distance.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_DISTANCE) #define FUSION_INCLUDE_DISTANCE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/empty.hpp b/3party/boost/boost/fusion/include/empty.hpp index 0a8af33c44..8e6ed931c5 100644 --- a/3party/boost/boost/fusion/include/empty.hpp +++ b/3party/boost/boost/fusion/include/empty.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_EMPTY) #define FUSION_INCLUDE_EMPTY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/end.hpp b/3party/boost/boost/fusion/include/end.hpp index 61d65de01d..255d05f0d5 100644 --- a/3party/boost/boost/fusion/include/end.hpp +++ b/3party/boost/boost/fusion/include/end.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_END) #define FUSION_INCLUDE_END +#include #include #endif diff --git a/3party/boost/boost/fusion/include/equal_to.hpp b/3party/boost/boost/fusion/include/equal_to.hpp index 5607b8e231..24499a9069 100644 --- a/3party/boost/boost/fusion/include/equal_to.hpp +++ b/3party/boost/boost/fusion/include/equal_to.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_EQUAL_TO) #define FUSION_INCLUDE_EQUAL_TO +#include #include #include diff --git a/3party/boost/boost/fusion/include/erase.hpp b/3party/boost/boost/fusion/include/erase.hpp index b7e6fafb35..07e756540d 100644 --- a/3party/boost/boost/fusion/include/erase.hpp +++ b/3party/boost/boost/fusion/include/erase.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ERASE) #define FUSION_INCLUDE_ERASE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/erase_key.hpp b/3party/boost/boost/fusion/include/erase_key.hpp index e13c889f2c..11c342c4eb 100644 --- a/3party/boost/boost/fusion/include/erase_key.hpp +++ b/3party/boost/boost/fusion/include/erase_key.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ERASE_KEY) #define FUSION_INCLUDE_ERASE_KEY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/filter.hpp b/3party/boost/boost/fusion/include/filter.hpp index 234e40642b..96c8bd6c4d 100644 --- a/3party/boost/boost/fusion/include/filter.hpp +++ b/3party/boost/boost/fusion/include/filter.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FILTER) #define FUSION_INCLUDE_FILTER +#include #include #endif diff --git a/3party/boost/boost/fusion/include/filter_if.hpp b/3party/boost/boost/fusion/include/filter_if.hpp index 31fdec5d32..081541b0f2 100644 --- a/3party/boost/boost/fusion/include/filter_if.hpp +++ b/3party/boost/boost/fusion/include/filter_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FILTER_IF) #define FUSION_INCLUDE_FILTER_IF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/filter_view.hpp b/3party/boost/boost/fusion/include/filter_view.hpp index 196df8a012..6ba64fe16d 100644 --- a/3party/boost/boost/fusion/include/filter_view.hpp +++ b/3party/boost/boost/fusion/include/filter_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FILTER_VIEW) #define FUSION_INCLUDE_FILTER_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/find.hpp b/3party/boost/boost/fusion/include/find.hpp index cf50c412fd..47167d8545 100644 --- a/3party/boost/boost/fusion/include/find.hpp +++ b/3party/boost/boost/fusion/include/find.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FIND) #define FUSION_INCLUDE_FIND +#include #include #endif diff --git a/3party/boost/boost/fusion/include/find_if.hpp b/3party/boost/boost/fusion/include/find_if.hpp index aa1a4c7a45..a864d801df 100644 --- a/3party/boost/boost/fusion/include/find_if.hpp +++ b/3party/boost/boost/fusion/include/find_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FIND_IF) #define FUSION_INCLUDE_FIND_IF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/flatten.hpp b/3party/boost/boost/fusion/include/flatten.hpp new file mode 100644 index 0000000000..33d7349990 --- /dev/null +++ b/3party/boost/boost/fusion/include/flatten.hpp @@ -0,0 +1,14 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2014 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef FUSION_INCLUDE_FLATTEN +#define FUSION_INCLUDE_FLATTEN + + +#include + + +#endif diff --git a/3party/boost/boost/fusion/include/flatten_view.hpp b/3party/boost/boost/fusion/include/flatten_view.hpp new file mode 100644 index 0000000000..9a3536b238 --- /dev/null +++ b/3party/boost/boost/fusion/include/flatten_view.hpp @@ -0,0 +1,14 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2014 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef FUSION_INCLUDE_FLATTEN_VIEW +#define FUSION_INCLUDE_FLATTEN_VIEW + + +#include + + +#endif diff --git a/3party/boost/boost/fusion/include/fold.hpp b/3party/boost/boost/fusion/include/fold.hpp index 40bf3a793e..04a18580b0 100644 --- a/3party/boost/boost/fusion/include/fold.hpp +++ b/3party/boost/boost/fusion/include/fold.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FOLD) #define FUSION_INCLUDE_FOLD +#include #include #endif diff --git a/3party/boost/boost/fusion/include/for_each.hpp b/3party/boost/boost/fusion/include/for_each.hpp index b20578e5e8..b4a96ae0ea 100644 --- a/3party/boost/boost/fusion/include/for_each.hpp +++ b/3party/boost/boost/fusion/include/for_each.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FOR_EACH) #define FUSION_INCLUDE_FOR_EACH +#include #include #endif diff --git a/3party/boost/boost/fusion/include/front.hpp b/3party/boost/boost/fusion/include/front.hpp index 495deaf74d..b080fe5659 100644 --- a/3party/boost/boost/fusion/include/front.hpp +++ b/3party/boost/boost/fusion/include/front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FRONT) #define FUSION_INCLUDE_FRONT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/functional.hpp b/3party/boost/boost/fusion/include/functional.hpp index ab38fe1f43..01e7439a01 100644 --- a/3party/boost/boost/fusion/include/functional.hpp +++ b/3party/boost/boost/fusion/include/functional.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FUNCTIONAL) #define FUSION_INCLUDE_FUNCTIONAL +#include #include #endif diff --git a/3party/boost/boost/fusion/include/fused.hpp b/3party/boost/boost/fusion/include/fused.hpp index fa9dd46443..f27094f1f6 100644 --- a/3party/boost/boost/fusion/include/fused.hpp +++ b/3party/boost/boost/fusion/include/fused.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FUSED) #define FUSION_INCLUDE_FUSED +#include #include #endif diff --git a/3party/boost/boost/fusion/include/fused_function_object.hpp b/3party/boost/boost/fusion/include/fused_function_object.hpp index d35140c655..4196410d3d 100644 --- a/3party/boost/boost/fusion/include/fused_function_object.hpp +++ b/3party/boost/boost/fusion/include/fused_function_object.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FUSED_FUNCTION_OBJECT) #define FUSION_INCLUDE_FUSED_FUNCTION_OBJECT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/fused_procedure.hpp b/3party/boost/boost/fusion/include/fused_procedure.hpp index 9df4717b7d..f6c3a01def 100644 --- a/3party/boost/boost/fusion/include/fused_procedure.hpp +++ b/3party/boost/boost/fusion/include/fused_procedure.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_FUSED_PROCEDURE) #define FUSION_INCLUDE_FUSED_PROCEDURE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/generation.hpp b/3party/boost/boost/fusion/include/generation.hpp index 8adbc4c0bc..400e9803e0 100644 --- a/3party/boost/boost/fusion/include/generation.hpp +++ b/3party/boost/boost/fusion/include/generation.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_GENERATION) #define FUSION_INCLUDE_GENERATION +#include #include #include diff --git a/3party/boost/boost/fusion/include/greater.hpp b/3party/boost/boost/fusion/include/greater.hpp index a5ff306fd4..e70550ced2 100644 --- a/3party/boost/boost/fusion/include/greater.hpp +++ b/3party/boost/boost/fusion/include/greater.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_NOT_GREATER) #define FUSION_INCLUDE_NOT_GREATER +#include #include #endif diff --git a/3party/boost/boost/fusion/include/greater_equal.hpp b/3party/boost/boost/fusion/include/greater_equal.hpp index 3a09255147..efd462c54d 100644 --- a/3party/boost/boost/fusion/include/greater_equal.hpp +++ b/3party/boost/boost/fusion/include/greater_equal.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_GREATER_EQUAL) #define FUSION_INCLUDE_GREATER_EQUAL +#include #include #endif diff --git a/3party/boost/boost/fusion/include/has_key.hpp b/3party/boost/boost/fusion/include/has_key.hpp index b696241d03..ee192cf09e 100644 --- a/3party/boost/boost/fusion/include/has_key.hpp +++ b/3party/boost/boost/fusion/include/has_key.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_HAS_KEY) #define FUSION_INCLUDE_HAS_KEY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/ignore.hpp b/3party/boost/boost/fusion/include/ignore.hpp index 8adbc4c0bc..400e9803e0 100644 --- a/3party/boost/boost/fusion/include/ignore.hpp +++ b/3party/boost/boost/fusion/include/ignore.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_GENERATION) #define FUSION_INCLUDE_GENERATION +#include #include #include diff --git a/3party/boost/boost/fusion/include/in.hpp b/3party/boost/boost/fusion/include/in.hpp index ca285c0e58..4ceb928c99 100644 --- a/3party/boost/boost/fusion/include/in.hpp +++ b/3party/boost/boost/fusion/include/in.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_IN) #define FUSION_INCLUDE_IN +#include #include #endif diff --git a/3party/boost/boost/fusion/include/insert.hpp b/3party/boost/boost/fusion/include/insert.hpp index 53c0b05ea6..389333d400 100644 --- a/3party/boost/boost/fusion/include/insert.hpp +++ b/3party/boost/boost/fusion/include/insert.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_INSERT) #define FUSION_INCLUDE_INSERT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/insert_range.hpp b/3party/boost/boost/fusion/include/insert_range.hpp index f7093ed994..9f280e4e7f 100644 --- a/3party/boost/boost/fusion/include/insert_range.hpp +++ b/3party/boost/boost/fusion/include/insert_range.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_INSERT_RANGE) #define FUSION_INCLUDE_INSERT_RANGE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/intrinsic.hpp b/3party/boost/boost/fusion/include/intrinsic.hpp index c9d787117b..dcceea544d 100644 --- a/3party/boost/boost/fusion/include/intrinsic.hpp +++ b/3party/boost/boost/fusion/include/intrinsic.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_INTRINSIC) #define FUSION_INCLUDE_INTRINSIC +#include #include #endif diff --git a/3party/boost/boost/fusion/include/invocation.hpp b/3party/boost/boost/fusion/include/invocation.hpp index 2a6f12a37f..fbb4061ffe 100644 --- a/3party/boost/boost/fusion/include/invocation.hpp +++ b/3party/boost/boost/fusion/include/invocation.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_INVOCATION) #define FUSION_INCLUDE_INVOCATION +#include #include #endif diff --git a/3party/boost/boost/fusion/include/invoke.hpp b/3party/boost/boost/fusion/include/invoke.hpp index 452264259b..2565f1fa73 100644 --- a/3party/boost/boost/fusion/include/invoke.hpp +++ b/3party/boost/boost/fusion/include/invoke.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_INVOKE) #define FUSION_INCLUDE_INVOKE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/invoke_function_object.hpp b/3party/boost/boost/fusion/include/invoke_function_object.hpp index 4ffeb24dd8..f0ca0a98fe 100644 --- a/3party/boost/boost/fusion/include/invoke_function_object.hpp +++ b/3party/boost/boost/fusion/include/invoke_function_object.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_INVOKE_FUNCTION_OBJECT) #define FUSION_INCLUDE_INVOKE_FUNCTION_OBJECT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/invoke_procedure.hpp b/3party/boost/boost/fusion/include/invoke_procedure.hpp index afd46259b9..28bd35d3cb 100644 --- a/3party/boost/boost/fusion/include/invoke_procedure.hpp +++ b/3party/boost/boost/fusion/include/invoke_procedure.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_INVOKE_PROCEDURE) #define FUSION_INCLUDE_INVOKE_PROCEDURE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/io.hpp b/3party/boost/boost/fusion/include/io.hpp index d84fdf3511..992e0be291 100644 --- a/3party/boost/boost/fusion/include/io.hpp +++ b/3party/boost/boost/fusion/include/io.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_IO) #define FUSION_INCLUDE_IO +#include #include #endif diff --git a/3party/boost/boost/fusion/include/is_iterator.hpp b/3party/boost/boost/fusion/include/is_iterator.hpp index 31348eb788..83dc1484d6 100644 --- a/3party/boost/boost/fusion/include/is_iterator.hpp +++ b/3party/boost/boost/fusion/include/is_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_IS_ITERATOR) #define FUSION_INCLUDE_IS_ITERATOR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/is_segmented.hpp b/3party/boost/boost/fusion/include/is_segmented.hpp index 28fa434651..b13be3f00c 100644 --- a/3party/boost/boost/fusion/include/is_segmented.hpp +++ b/3party/boost/boost/fusion/include/is_segmented.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_INCLUDE_IS_SEGMENTED) #define BOOST_FUSION_INCLUDE_IS_SEGMENTED +#include #include #endif diff --git a/3party/boost/boost/fusion/include/is_sequence.hpp b/3party/boost/boost/fusion/include/is_sequence.hpp index a7f2b4d88d..d3d820fcd7 100644 --- a/3party/boost/boost/fusion/include/is_sequence.hpp +++ b/3party/boost/boost/fusion/include/is_sequence.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_IS_SEQUENCE) #define FUSION_INCLUDE_IS_SEQUENCE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/is_view.hpp b/3party/boost/boost/fusion/include/is_view.hpp index 5ebc34732d..1f886f4dc8 100644 --- a/3party/boost/boost/fusion/include/is_view.hpp +++ b/3party/boost/boost/fusion/include/is_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_IS_VIEW) #define FUSION_INCLUDE_IS_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/iter_fold.hpp b/3party/boost/boost/fusion/include/iter_fold.hpp index ba6f9b7e70..e39651bd11 100644 --- a/3party/boost/boost/fusion/include/iter_fold.hpp +++ b/3party/boost/boost/fusion/include/iter_fold.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_ITER_FOLD_HPP #define BOOST_FUSION_INCLUDE_ITER_FOLD_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/iteration.hpp b/3party/boost/boost/fusion/include/iteration.hpp index 372aa726a2..612f00c45f 100644 --- a/3party/boost/boost/fusion/include/iteration.hpp +++ b/3party/boost/boost/fusion/include/iteration.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ITERATION) #define FUSION_INCLUDE_ITERATION +#include #include #endif diff --git a/3party/boost/boost/fusion/include/iterator.hpp b/3party/boost/boost/fusion/include/iterator.hpp index 2ed8e8381f..a69be64081 100644 --- a/3party/boost/boost/fusion/include/iterator.hpp +++ b/3party/boost/boost/fusion/include/iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ITERATOR) #define FUSION_INCLUDE_ITERATOR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/iterator_adapter.hpp b/3party/boost/boost/fusion/include/iterator_adapter.hpp index 4ecdf2b2b4..95de7cfba1 100644 --- a/3party/boost/boost/fusion/include/iterator_adapter.hpp +++ b/3party/boost/boost/fusion/include/iterator_adapter.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ITERATOR_ADAPTER) #define FUSION_INCLUDE_ITERATOR_ADAPTER +#include #include #endif diff --git a/3party/boost/boost/fusion/include/iterator_base.hpp b/3party/boost/boost/fusion/include/iterator_base.hpp index bbd353217e..41223c58f8 100644 --- a/3party/boost/boost/fusion/include/iterator_base.hpp +++ b/3party/boost/boost/fusion/include/iterator_base.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ITERATOR_BASE) #define FUSION_INCLUDE_ITERATOR_BASE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/iterator_facade.hpp b/3party/boost/boost/fusion/include/iterator_facade.hpp index a36f8b162f..a137414bab 100644 --- a/3party/boost/boost/fusion/include/iterator_facade.hpp +++ b/3party/boost/boost/fusion/include/iterator_facade.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ITERATOR_FACADE) #define FUSION_INCLUDE_ITERATOR_FACADE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/iterator_range.hpp b/3party/boost/boost/fusion/include/iterator_range.hpp index 54eba6dd2a..1f5d1ed6a7 100644 --- a/3party/boost/boost/fusion/include/iterator_range.hpp +++ b/3party/boost/boost/fusion/include/iterator_range.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ITERATOR_RANGE) #define FUSION_INCLUDE_ITERATOR_RANGE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/join.hpp b/3party/boost/boost/fusion/include/join.hpp index 5f701ad305..419caabf10 100644 --- a/3party/boost/boost/fusion/include/join.hpp +++ b/3party/boost/boost/fusion/include/join.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_JOIN) #define FUSION_INCLUDE_JOIN +#include #include #endif diff --git a/3party/boost/boost/fusion/include/joint_view.hpp b/3party/boost/boost/fusion/include/joint_view.hpp index e3d1e20485..94b2d07160 100644 --- a/3party/boost/boost/fusion/include/joint_view.hpp +++ b/3party/boost/boost/fusion/include/joint_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_JOINT_VIEW) #define FUSION_INCLUDE_JOINT_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/key_of.hpp b/3party/boost/boost/fusion/include/key_of.hpp index cb29f571ad..4e79a0efbe 100644 --- a/3party/boost/boost/fusion/include/key_of.hpp +++ b/3party/boost/boost/fusion/include/key_of.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_KEY_OF_HPP #define BOOST_FUSION_INCLUDE_KEY_OF_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/less.hpp b/3party/boost/boost/fusion/include/less.hpp index bd4d27714e..463b91a65b 100644 --- a/3party/boost/boost/fusion/include/less.hpp +++ b/3party/boost/boost/fusion/include/less.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_LESS) #define FUSION_INCLUDE_LESS +#include #include #endif diff --git a/3party/boost/boost/fusion/include/less_equal.hpp b/3party/boost/boost/fusion/include/less_equal.hpp index 2ac1b72ba7..48de2a373b 100644 --- a/3party/boost/boost/fusion/include/less_equal.hpp +++ b/3party/boost/boost/fusion/include/less_equal.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_LESS_EQUAL) #define FUSION_INCLUDE_LESS_EQUAL +#include #include #endif diff --git a/3party/boost/boost/fusion/include/list.hpp b/3party/boost/boost/fusion/include/list.hpp index 0a3a1a63f6..9d8e33c13b 100644 --- a/3party/boost/boost/fusion/include/list.hpp +++ b/3party/boost/boost/fusion/include/list.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_LIST) #define FUSION_INCLUDE_LIST +#include #include #endif diff --git a/3party/boost/boost/fusion/include/list_fwd.hpp b/3party/boost/boost/fusion/include/list_fwd.hpp index 08823bf673..8f7216d14a 100644 --- a/3party/boost/boost/fusion/include/list_fwd.hpp +++ b/3party/boost/boost/fusion/include/list_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_LIST_FWD) #define FUSION_INCLUDE_LIST_FWD +#include #include #endif diff --git a/3party/boost/boost/fusion/include/list_tie.hpp b/3party/boost/boost/fusion/include/list_tie.hpp index 8adbc4c0bc..400e9803e0 100644 --- a/3party/boost/boost/fusion/include/list_tie.hpp +++ b/3party/boost/boost/fusion/include/list_tie.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_GENERATION) #define FUSION_INCLUDE_GENERATION +#include #include #include diff --git a/3party/boost/boost/fusion/include/make_cons.hpp b/3party/boost/boost/fusion/include/make_cons.hpp index 76c4caa530..89d3a26bd9 100644 --- a/3party/boost/boost/fusion/include/make_cons.hpp +++ b/3party/boost/boost/fusion/include/make_cons.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_CONS) #define FUSION_INCLUDE_MAKE_CONS +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_deque.hpp b/3party/boost/boost/fusion/include/make_deque.hpp index 35520e8d2b..d16b3785b0 100644 --- a/3party/boost/boost/fusion/include/make_deque.hpp +++ b/3party/boost/boost/fusion/include/make_deque.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_DEQUE) #define FUSION_INCLUDE_MAKE_DEQUE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_fused.hpp b/3party/boost/boost/fusion/include/make_fused.hpp index 6ed860ef54..82b7ed7edf 100644 --- a/3party/boost/boost/fusion/include/make_fused.hpp +++ b/3party/boost/boost/fusion/include/make_fused.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_FUSED) #define FUSION_INCLUDE_MAKE_FUSED +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_fused_function_object.hpp b/3party/boost/boost/fusion/include/make_fused_function_object.hpp index dfc1295b10..68667c777e 100644 --- a/3party/boost/boost/fusion/include/make_fused_function_object.hpp +++ b/3party/boost/boost/fusion/include/make_fused_function_object.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_FUSED_FUNCTION_OBJECT) #define FUSION_INCLUDE_MAKE_FUSED_FUNCTION_OBJECT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_fused_procedure.hpp b/3party/boost/boost/fusion/include/make_fused_procedure.hpp index 94e44717aa..b6ac333983 100644 --- a/3party/boost/boost/fusion/include/make_fused_procedure.hpp +++ b/3party/boost/boost/fusion/include/make_fused_procedure.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_FUSED_PROCEDURE) #define FUSION_INCLUDE_MAKE_FUSED_PROCEDURE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_list.hpp b/3party/boost/boost/fusion/include/make_list.hpp index 7adb350718..affee72153 100644 --- a/3party/boost/boost/fusion/include/make_list.hpp +++ b/3party/boost/boost/fusion/include/make_list.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_LIST) #define FUSION_INCLUDE_MAKE_LIST +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_map.hpp b/3party/boost/boost/fusion/include/make_map.hpp index 90d599216a..9492eaefd9 100644 --- a/3party/boost/boost/fusion/include/make_map.hpp +++ b/3party/boost/boost/fusion/include/make_map.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_MAP) #define FUSION_INCLUDE_MAKE_MAP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_set.hpp b/3party/boost/boost/fusion/include/make_set.hpp index 19f344f670..c87b3998a4 100644 --- a/3party/boost/boost/fusion/include/make_set.hpp +++ b/3party/boost/boost/fusion/include/make_set.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_SET) #define FUSION_INCLUDE_MAKE_SET +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_tuple.hpp b/3party/boost/boost/fusion/include/make_tuple.hpp index 8cfbdc8e5f..82f3447d69 100644 --- a/3party/boost/boost/fusion/include/make_tuple.hpp +++ b/3party/boost/boost/fusion/include/make_tuple.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_TUPLE) #define FUSION_INCLUDE_MAKE_TUPLE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_unfused.hpp b/3party/boost/boost/fusion/include/make_unfused.hpp index ae3b667928..db3ad80c70 100644 --- a/3party/boost/boost/fusion/include/make_unfused.hpp +++ b/3party/boost/boost/fusion/include/make_unfused.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_MAKE_UNFUSED_HPP #define BOOST_FUSION_INCLUDE_MAKE_UNFUSED_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/make_vector.hpp b/3party/boost/boost/fusion/include/make_vector.hpp index b165ba3ed5..9d9a70a329 100644 --- a/3party/boost/boost/fusion/include/make_vector.hpp +++ b/3party/boost/boost/fusion/include/make_vector.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAKE_VECTOR) #define FUSION_INCLUDE_MAKE_VECTOR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/map.hpp b/3party/boost/boost/fusion/include/map.hpp index 07441b4a08..17c4e762d3 100644 --- a/3party/boost/boost/fusion/include/map.hpp +++ b/3party/boost/boost/fusion/include/map.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAP) #define FUSION_INCLUDE_MAP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/map_fwd.hpp b/3party/boost/boost/fusion/include/map_fwd.hpp index 970c413270..86fa7cafa1 100644 --- a/3party/boost/boost/fusion/include/map_fwd.hpp +++ b/3party/boost/boost/fusion/include/map_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAP_FWD) #define FUSION_INCLUDE_MAP_FWD +#include #include #endif diff --git a/3party/boost/boost/fusion/include/map_tie.hpp b/3party/boost/boost/fusion/include/map_tie.hpp index 89aeb71617..58afafbada 100644 --- a/3party/boost/boost/fusion/include/map_tie.hpp +++ b/3party/boost/boost/fusion/include/map_tie.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MAP_TIE) #define FUSION_INCLUDE_MAP_TIE +#include #include #endif diff --git a/3party/boost/boost/spirit/home/phoenix/container.hpp b/3party/boost/boost/fusion/include/move.hpp similarity index 58% rename from 3party/boost/boost/spirit/home/phoenix/container.hpp rename to 3party/boost/boost/fusion/include/move.hpp index fb6ec3f9f9..8042db48e1 100644 --- a/3party/boost/boost/spirit/home/phoenix/container.hpp +++ b/3party/boost/boost/fusion/include/move.hpp @@ -1,12 +1,13 @@ /*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2001-2013 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#ifndef PHOENIX_CONTAINER_HPP -#define PHOENIX_CONTAINER_HPP +#if !defined(FUSION_INCLUDE_MOVE) +#define FUSION_INCLUDE_MOVE -#include +#include +#include #endif diff --git a/3party/boost/boost/fusion/include/mpl.hpp b/3party/boost/boost/fusion/include/mpl.hpp index 8a1cbfd025..cf7fff2f59 100644 --- a/3party/boost/boost/fusion/include/mpl.hpp +++ b/3party/boost/boost/fusion/include/mpl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_MPL) #define FUSION_INCLUDE_MPL +#include #include #include diff --git a/3party/boost/boost/fusion/include/next.hpp b/3party/boost/boost/fusion/include/next.hpp index 6188c65a72..266b6ecb36 100644 --- a/3party/boost/boost/fusion/include/next.hpp +++ b/3party/boost/boost/fusion/include/next.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_NEXT) #define FUSION_INCLUDE_NEXT +#include #include #endif diff --git a/3party/boost/boost/spirit/home/phoenix/fusion.hpp b/3party/boost/boost/fusion/include/nil.hpp similarity index 63% rename from 3party/boost/boost/spirit/home/phoenix/fusion.hpp rename to 3party/boost/boost/fusion/include/nil.hpp index 2d0d699672..3efde4e99d 100644 --- a/3party/boost/boost/spirit/home/phoenix/fusion.hpp +++ b/3party/boost/boost/fusion/include/nil.hpp @@ -1,12 +1,13 @@ /*============================================================================= - Copyright (c) 2007 Joel de Guzman + Copyright (c) 2014 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#ifndef PHOENIX_FUSION_HPP -#define PHOENIX_FUSION_HPP +#if !defined(FUSION_INCLUDE_NIL) +#define FUSION_INCLUDE_NIL -#include +#include +#include #endif diff --git a/3party/boost/boost/fusion/include/none.hpp b/3party/boost/boost/fusion/include/none.hpp index 19720ef8cc..3870b39802 100644 --- a/3party/boost/boost/fusion/include/none.hpp +++ b/3party/boost/boost/fusion/include/none.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_NONE) #define FUSION_INCLUDE_NONE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/not_equal_to.hpp b/3party/boost/boost/fusion/include/not_equal_to.hpp index 9e23b899da..e11f2d6aec 100644 --- a/3party/boost/boost/fusion/include/not_equal_to.hpp +++ b/3party/boost/boost/fusion/include/not_equal_to.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_NOT_EQUAL_TO) #define FUSION_INCLUDE_NOT_EQUAL_TO +#include #include #include diff --git a/3party/boost/boost/fusion/include/nview.hpp b/3party/boost/boost/fusion/include/nview.hpp index 215329d02b..f1309ca51f 100644 --- a/3party/boost/boost/fusion/include/nview.hpp +++ b/3party/boost/boost/fusion/include/nview.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_NVIEW) #define FUSION_INCLUDE_NVIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/out.hpp b/3party/boost/boost/fusion/include/out.hpp index 9ecef3e713..85d26dda10 100644 --- a/3party/boost/boost/fusion/include/out.hpp +++ b/3party/boost/boost/fusion/include/out.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_OUT) #define FUSION_INCLUDE_OUT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/pair.hpp b/3party/boost/boost/fusion/include/pair.hpp index 97ebfcd8bd..bf0897d0f9 100644 --- a/3party/boost/boost/fusion/include/pair.hpp +++ b/3party/boost/boost/fusion/include/pair.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_PAIR) #define FUSION_INCLUDE_PAIR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/pair_tie.hpp b/3party/boost/boost/fusion/include/pair_tie.hpp index ac192cada1..3a783f33c1 100644 --- a/3party/boost/boost/fusion/include/pair_tie.hpp +++ b/3party/boost/boost/fusion/include/pair_tie.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_PAIR_TIE) #define FUSION_INCLUDE_PAIR_TIE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/pop_back.hpp b/3party/boost/boost/fusion/include/pop_back.hpp index b5a808cd5e..213fb3b271 100644 --- a/3party/boost/boost/fusion/include/pop_back.hpp +++ b/3party/boost/boost/fusion/include/pop_back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_POP_BACK) #define FUSION_INCLUDE_POP_BACK +#include #include #endif diff --git a/3party/boost/boost/fusion/include/pop_front.hpp b/3party/boost/boost/fusion/include/pop_front.hpp index 7df977e0d6..d52d61226e 100644 --- a/3party/boost/boost/fusion/include/pop_front.hpp +++ b/3party/boost/boost/fusion/include/pop_front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_POP_FRONT) #define FUSION_INCLUDE_POP_FRONT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/prior.hpp b/3party/boost/boost/fusion/include/prior.hpp index b18a55a394..605b3b398a 100644 --- a/3party/boost/boost/fusion/include/prior.hpp +++ b/3party/boost/boost/fusion/include/prior.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_PRIOR) #define FUSION_INCLUDE_PRIOR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/proxy_type.hpp b/3party/boost/boost/fusion/include/proxy_type.hpp index 31e8dce010..a73c234481 100644 --- a/3party/boost/boost/fusion/include/proxy_type.hpp +++ b/3party/boost/boost/fusion/include/proxy_type.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_PROXY_TYPE_HPP #define BOOST_FUSION_INCLUDE_PROXY_TYPE_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/push_back.hpp b/3party/boost/boost/fusion/include/push_back.hpp index 4908e87c63..6e74b3fa8a 100644 --- a/3party/boost/boost/fusion/include/push_back.hpp +++ b/3party/boost/boost/fusion/include/push_back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_PUSH_BACK) #define FUSION_INCLUDE_PUSH_BACK +#include #include #endif diff --git a/3party/boost/boost/fusion/include/push_front.hpp b/3party/boost/boost/fusion/include/push_front.hpp index 5a9cfa5ec2..8c4b0357ef 100644 --- a/3party/boost/boost/fusion/include/push_front.hpp +++ b/3party/boost/boost/fusion/include/push_front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_PUSH_FRONT) #define FUSION_INCLUDE_PUSH_FRONT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/query.hpp b/3party/boost/boost/fusion/include/query.hpp index 6e5144b57d..edfbd1e296 100644 --- a/3party/boost/boost/fusion/include/query.hpp +++ b/3party/boost/boost/fusion/include/query.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_QUERY) #define FUSION_INCLUDE_QUERY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/remove.hpp b/3party/boost/boost/fusion/include/remove.hpp index 9f11d69617..269d86f221 100644 --- a/3party/boost/boost/fusion/include/remove.hpp +++ b/3party/boost/boost/fusion/include/remove.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_REMOVE) #define FUSION_INCLUDE_REMOVE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/remove_if.hpp b/3party/boost/boost/fusion/include/remove_if.hpp index 7f0b4657da..6e6266d302 100644 --- a/3party/boost/boost/fusion/include/remove_if.hpp +++ b/3party/boost/boost/fusion/include/remove_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_REMOVE_IF) #define FUSION_INCLUDE_REMOVE_IF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/repetitive_view.hpp b/3party/boost/boost/fusion/include/repetitive_view.hpp index f56bca8821..b57c997dda 100644 --- a/3party/boost/boost/fusion/include/repetitive_view.hpp +++ b/3party/boost/boost/fusion/include/repetitive_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_REPETETIVE_VIEW) #define FUSION_INCLUDE_REPETETIVE_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/replace.hpp b/3party/boost/boost/fusion/include/replace.hpp index 4d0b3af829..3ff05a67e0 100644 --- a/3party/boost/boost/fusion/include/replace.hpp +++ b/3party/boost/boost/fusion/include/replace.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_REPLACE) #define FUSION_INCLUDE_REPLACE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/replace_if.hpp b/3party/boost/boost/fusion/include/replace_if.hpp index 354e13abd0..9bc9931d52 100644 --- a/3party/boost/boost/fusion/include/replace_if.hpp +++ b/3party/boost/boost/fusion/include/replace_if.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_REPLACE_IF) #define FUSION_INCLUDE_REPLACE_IF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/reverse.hpp b/3party/boost/boost/fusion/include/reverse.hpp index 3f9fd7824d..4f147b9882 100644 --- a/3party/boost/boost/fusion/include/reverse.hpp +++ b/3party/boost/boost/fusion/include/reverse.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_REVERSE) #define FUSION_INCLUDE_REVERSE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/reverse_fold.hpp b/3party/boost/boost/fusion/include/reverse_fold.hpp index f2379e6779..4b3e61c2b5 100644 --- a/3party/boost/boost/fusion/include/reverse_fold.hpp +++ b/3party/boost/boost/fusion/include/reverse_fold.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_REVERSE_FOLD_HPP #define BOOST_FUSION_INCLUDE_REVERSE_FOLD_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/reverse_iter_fold.hpp b/3party/boost/boost/fusion/include/reverse_iter_fold.hpp index ba92d5fea1..bbd1ea40c8 100644 --- a/3party/boost/boost/fusion/include/reverse_iter_fold.hpp +++ b/3party/boost/boost/fusion/include/reverse_iter_fold.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_REVERSE_ITER_FOLD_HPP #define BOOST_FUSION_INCLUDE_REVERSE_ITER_FOLD_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/reverse_view.hpp b/3party/boost/boost/fusion/include/reverse_view.hpp index 844532d62d..6652d0607c 100644 --- a/3party/boost/boost/fusion/include/reverse_view.hpp +++ b/3party/boost/boost/fusion/include/reverse_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_REVERSE_VIEW) #define FUSION_INCLUDE_REVERSE_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/segmented_fold_until.hpp b/3party/boost/boost/fusion/include/segmented_fold_until.hpp index d7fe06af57..7a5cc62d35 100644 --- a/3party/boost/boost/fusion/include/segmented_fold_until.hpp +++ b/3party/boost/boost/fusion/include/segmented_fold_until.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_INCLUDE_SEGMENTED_FOLD_UNTIL) #define BOOST_FUSION_INCLUDE_SEGMENTED_FOLD_UNTIL +#include #include #endif diff --git a/3party/boost/boost/fusion/include/segmented_iterator.hpp b/3party/boost/boost/fusion/include/segmented_iterator.hpp index 6e8a4964b2..18d0a65ee4 100644 --- a/3party/boost/boost/fusion/include/segmented_iterator.hpp +++ b/3party/boost/boost/fusion/include/segmented_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_INCLUDE_SEGMENTED_ITERATOR) #define BOOST_FUSION_INCLUDE_SEGMENTED_ITERATOR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/segments.hpp b/3party/boost/boost/fusion/include/segments.hpp index 7bc7b2bf02..c0a4c50c4a 100644 --- a/3party/boost/boost/fusion/include/segments.hpp +++ b/3party/boost/boost/fusion/include/segments.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_INCLUDE_SEGMENTS) #define BOOST_FUSION_INCLUDE_SEGMENTS +#include #include #endif diff --git a/3party/boost/boost/fusion/include/sequence.hpp b/3party/boost/boost/fusion/include/sequence.hpp index 09cded778e..ff36266b60 100644 --- a/3party/boost/boost/fusion/include/sequence.hpp +++ b/3party/boost/boost/fusion/include/sequence.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SEQUENCE) #define FUSION_INCLUDE_SEQUENCE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/sequence_base.hpp b/3party/boost/boost/fusion/include/sequence_base.hpp index 7e50a23704..fc68090e9a 100644 --- a/3party/boost/boost/fusion/include/sequence_base.hpp +++ b/3party/boost/boost/fusion/include/sequence_base.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SEQUENCE_BASE) #define FUSION_INCLUDE_SEQUENCE_BASE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/sequence_facade.hpp b/3party/boost/boost/fusion/include/sequence_facade.hpp index b8773e28af..ef989b4c71 100644 --- a/3party/boost/boost/fusion/include/sequence_facade.hpp +++ b/3party/boost/boost/fusion/include/sequence_facade.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SEQUENCE_FACADE) #define FUSION_INCLUDE_SEQUENCE_FACADE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/set.hpp b/3party/boost/boost/fusion/include/set.hpp index 90dd5004be..370ae65587 100644 --- a/3party/boost/boost/fusion/include/set.hpp +++ b/3party/boost/boost/fusion/include/set.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SET) #define FUSION_INCLUDE_SET +#include #include #endif diff --git a/3party/boost/boost/fusion/include/set_fwd.hpp b/3party/boost/boost/fusion/include/set_fwd.hpp index 9bc45ad5cf..3c21cd67bd 100644 --- a/3party/boost/boost/fusion/include/set_fwd.hpp +++ b/3party/boost/boost/fusion/include/set_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SET_FWD) #define FUSION_INCLUDE_SET_FWD +#include #include #endif diff --git a/3party/boost/boost/fusion/include/single_view.hpp b/3party/boost/boost/fusion/include/single_view.hpp index a95d04a80d..306fac6c50 100644 --- a/3party/boost/boost/fusion/include/single_view.hpp +++ b/3party/boost/boost/fusion/include/single_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SINGLE_VIEW) #define FUSION_INCLUDE_SINGLE_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/size.hpp b/3party/boost/boost/fusion/include/size.hpp index 02d2a00fcb..5131116da0 100644 --- a/3party/boost/boost/fusion/include/size.hpp +++ b/3party/boost/boost/fusion/include/size.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SIZE) #define FUSION_INCLUDE_SIZE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/std_pair.hpp b/3party/boost/boost/fusion/include/std_pair.hpp index 98f37c8672..7a882a97ad 100644 --- a/3party/boost/boost/fusion/include/std_pair.hpp +++ b/3party/boost/boost/fusion/include/std_pair.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_STD_PAIR) #define FUSION_INCLUDE_STD_PAIR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/struct.hpp b/3party/boost/boost/fusion/include/struct.hpp index f0886aab86..fc4366fdb1 100644 --- a/3party/boost/boost/fusion/include/struct.hpp +++ b/3party/boost/boost/fusion/include/struct.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_STRUCT) #define FUSION_INCLUDE_STRUCT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/support.hpp b/3party/boost/boost/fusion/include/support.hpp index d57eafeb87..8762517f70 100644 --- a/3party/boost/boost/fusion/include/support.hpp +++ b/3party/boost/boost/fusion/include/support.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SUPPORT) #define FUSION_INCLUDE_SUPPORT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/swap.hpp b/3party/boost/boost/fusion/include/swap.hpp index 1f428aa175..c25d557f12 100644 --- a/3party/boost/boost/fusion/include/swap.hpp +++ b/3party/boost/boost/fusion/include/swap.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_SWAP) #define FUSION_INCLUDE_SWAP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/tag_of.hpp b/3party/boost/boost/fusion/include/tag_of.hpp index f15b41b54a..dc583eeb59 100644 --- a/3party/boost/boost/fusion/include/tag_of.hpp +++ b/3party/boost/boost/fusion/include/tag_of.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_TAG_OF) #define FUSION_INCLUDE_TAG_OF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/tag_of_fwd.hpp b/3party/boost/boost/fusion/include/tag_of_fwd.hpp index fbc7ebe752..287dc33893 100644 --- a/3party/boost/boost/fusion/include/tag_of_fwd.hpp +++ b/3party/boost/boost/fusion/include/tag_of_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_TAG_OF_FWD) #define FUSION_INCLUDE_TAG_OF_FWD +#include #include #endif diff --git a/3party/boost/boost/fusion/include/transform.hpp b/3party/boost/boost/fusion/include/transform.hpp index 2b66c4f736..04fdc38477 100644 --- a/3party/boost/boost/fusion/include/transform.hpp +++ b/3party/boost/boost/fusion/include/transform.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_TRANSFORM) #define FUSION_INCLUDE_TRANSFORM +#include #include #endif diff --git a/3party/boost/boost/fusion/include/transform_view.hpp b/3party/boost/boost/fusion/include/transform_view.hpp index 3aceaaee9f..b07a797936 100644 --- a/3party/boost/boost/fusion/include/transform_view.hpp +++ b/3party/boost/boost/fusion/include/transform_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_TRANSFORM_VIEW) #define FUSION_INCLUDE_TRANSFORM_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/transformation.hpp b/3party/boost/boost/fusion/include/transformation.hpp index f14ab70c75..195b3eb2e8 100644 --- a/3party/boost/boost/fusion/include/transformation.hpp +++ b/3party/boost/boost/fusion/include/transformation.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_TRANSFORMATION) #define FUSION_INCLUDE_TRANSFORMATION +#include #include #endif diff --git a/3party/boost/boost/fusion/include/tuple.hpp b/3party/boost/boost/fusion/include/tuple.hpp index 52e53fb594..5d167f4f9d 100644 --- a/3party/boost/boost/fusion/include/tuple.hpp +++ b/3party/boost/boost/fusion/include/tuple.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_TUPLE) #define FUSION_INCLUDE_TUPLE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/tuple_fwd.hpp b/3party/boost/boost/fusion/include/tuple_fwd.hpp index a66653a3b0..d95ce2be71 100644 --- a/3party/boost/boost/fusion/include/tuple_fwd.hpp +++ b/3party/boost/boost/fusion/include/tuple_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_TUPLE_FWD) #define FUSION_INCLUDE_TUPLE_FWD +#include #include #endif diff --git a/3party/boost/boost/fusion/include/tuple_tie.hpp b/3party/boost/boost/fusion/include/tuple_tie.hpp index 677976a65f..c61451a0b8 100644 --- a/3party/boost/boost/fusion/include/tuple_tie.hpp +++ b/3party/boost/boost/fusion/include/tuple_tie.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_TUPLE_TIE) #define FUSION_INCLUDE_TUPLE_TIE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/unfused.hpp b/3party/boost/boost/fusion/include/unfused.hpp index e386ce5a7b..192d23b296 100644 --- a/3party/boost/boost/fusion/include/unfused.hpp +++ b/3party/boost/boost/fusion/include/unfused.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_UNFUSED_HPP #define BOOST_FUSION_INCLUDE_UNFUSED_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/unfused_typed.hpp b/3party/boost/boost/fusion/include/unfused_typed.hpp index a118b306c2..c14c515355 100644 --- a/3party/boost/boost/fusion/include/unfused_typed.hpp +++ b/3party/boost/boost/fusion/include/unfused_typed.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_UNFUSED_TYPED) #define FUSION_INCLUDE_UNFUSED_TYPED +#include #include #endif diff --git a/3party/boost/boost/fusion/include/unused.hpp b/3party/boost/boost/fusion/include/unused.hpp index f91ea8fe69..6114f282cf 100644 --- a/3party/boost/boost/fusion/include/unused.hpp +++ b/3party/boost/boost/fusion/include/unused.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_UNUSED) #define FUSION_INCLUDE_UNUSED +#include #include #endif diff --git a/3party/boost/boost/fusion/include/value_at.hpp b/3party/boost/boost/fusion/include/value_at.hpp index da5745d9b8..d40a9f08b0 100644 --- a/3party/boost/boost/fusion/include/value_at.hpp +++ b/3party/boost/boost/fusion/include/value_at.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VALUE_AT) #define FUSION_INCLUDE_VALUE_AT +#include #include #endif diff --git a/3party/boost/boost/fusion/include/value_at_key.hpp b/3party/boost/boost/fusion/include/value_at_key.hpp index 4ab3dc1422..229210096a 100644 --- a/3party/boost/boost/fusion/include/value_at_key.hpp +++ b/3party/boost/boost/fusion/include/value_at_key.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VALUE_AT_KEY) #define FUSION_INCLUDE_VALUE_AT_KEY +#include #include #endif diff --git a/3party/boost/boost/fusion/include/value_of.hpp b/3party/boost/boost/fusion/include/value_of.hpp index 4f2bef9599..33e49d8fd7 100644 --- a/3party/boost/boost/fusion/include/value_of.hpp +++ b/3party/boost/boost/fusion/include/value_of.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VALUE_OF) #define FUSION_INCLUDE_VALUE_OF +#include #include #endif diff --git a/3party/boost/boost/fusion/include/value_of_data.hpp b/3party/boost/boost/fusion/include/value_of_data.hpp index 6884185fd0..afa9863f8a 100644 --- a/3party/boost/boost/fusion/include/value_of_data.hpp +++ b/3party/boost/boost/fusion/include/value_of_data.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_INCLUDE_VALUE_OF_DATA_HPP #define BOOST_FUSION_INCLUDE_VALUE_OF_DATA_HPP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/vector.hpp b/3party/boost/boost/fusion/include/vector.hpp index 689c2f8827..83aa74446c 100644 --- a/3party/boost/boost/fusion/include/vector.hpp +++ b/3party/boost/boost/fusion/include/vector.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VECTOR) #define FUSION_INCLUDE_VECTOR +#include #include #endif diff --git a/3party/boost/boost/fusion/include/vector10.hpp b/3party/boost/boost/fusion/include/vector10.hpp index d3e10ddc60..50e5f18259 100644 --- a/3party/boost/boost/fusion/include/vector10.hpp +++ b/3party/boost/boost/fusion/include/vector10.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VECTOR10) #define FUSION_INCLUDE_VECTOR10 +#include #include #endif diff --git a/3party/boost/boost/fusion/include/vector20.hpp b/3party/boost/boost/fusion/include/vector20.hpp index accda290d7..5d1f1fe629 100644 --- a/3party/boost/boost/fusion/include/vector20.hpp +++ b/3party/boost/boost/fusion/include/vector20.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VECTOR20) #define FUSION_INCLUDE_VECTOR20 +#include #include #endif diff --git a/3party/boost/boost/fusion/include/vector30.hpp b/3party/boost/boost/fusion/include/vector30.hpp index 72a72a25b6..243f2bb9a1 100644 --- a/3party/boost/boost/fusion/include/vector30.hpp +++ b/3party/boost/boost/fusion/include/vector30.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VECTOR30) #define FUSION_INCLUDE_VECTOR30 +#include #include #endif diff --git a/3party/boost/boost/fusion/include/vector40.hpp b/3party/boost/boost/fusion/include/vector40.hpp index 427c531918..8dd800a8cf 100644 --- a/3party/boost/boost/fusion/include/vector40.hpp +++ b/3party/boost/boost/fusion/include/vector40.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VECTOR40) #define FUSION_INCLUDE_VECTOR40 +#include #include #endif diff --git a/3party/boost/boost/fusion/include/vector50.hpp b/3party/boost/boost/fusion/include/vector50.hpp index 5980373b94..d3e8996889 100644 --- a/3party/boost/boost/fusion/include/vector50.hpp +++ b/3party/boost/boost/fusion/include/vector50.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VECTOR50) #define FUSION_INCLUDE_VECTOR50 +#include #include #endif diff --git a/3party/boost/boost/fusion/include/vector_fwd.hpp b/3party/boost/boost/fusion/include/vector_fwd.hpp index 578754fbc9..f9c71a6f74 100644 --- a/3party/boost/boost/fusion/include/vector_fwd.hpp +++ b/3party/boost/boost/fusion/include/vector_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VECTOR_FWD) #define FUSION_INCLUDE_VECTOR_FWD +#include #include #endif diff --git a/3party/boost/boost/fusion/include/vector_tie.hpp b/3party/boost/boost/fusion/include/vector_tie.hpp index 3a0431c1ed..390e3bfedc 100644 --- a/3party/boost/boost/fusion/include/vector_tie.hpp +++ b/3party/boost/boost/fusion/include/vector_tie.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VECTOR_TIE) #define FUSION_INCLUDE_VECTOR_TIE +#include #include #endif diff --git a/3party/boost/boost/fusion/include/view.hpp b/3party/boost/boost/fusion/include/view.hpp index 48405df849..66ffa74ea9 100644 --- a/3party/boost/boost/fusion/include/view.hpp +++ b/3party/boost/boost/fusion/include/view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VIEW) #define FUSION_INCLUDE_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/include/void.hpp b/3party/boost/boost/fusion/include/void.hpp index b3e9cf2785..ee358fb137 100644 --- a/3party/boost/boost/fusion/include/void.hpp +++ b/3party/boost/boost/fusion/include/void.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_VOID) #define FUSION_INCLUDE_VOID +#include #include #endif diff --git a/3party/boost/boost/fusion/include/zip.hpp b/3party/boost/boost/fusion/include/zip.hpp index 8a5656102e..87b04bc3f7 100644 --- a/3party/boost/boost/fusion/include/zip.hpp +++ b/3party/boost/boost/fusion/include/zip.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ZIP) #define FUSION_INCLUDE_ZIP +#include #include #endif diff --git a/3party/boost/boost/fusion/include/zip_view.hpp b/3party/boost/boost/fusion/include/zip_view.hpp index 1aecfd4dc1..bf0e9cfb9a 100644 --- a/3party/boost/boost/fusion/include/zip_view.hpp +++ b/3party/boost/boost/fusion/include/zip_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INCLUDE_ZIP_VIEW) #define FUSION_INCLUDE_ZIP_VIEW +#include #include #endif diff --git a/3party/boost/boost/fusion/iterator.hpp b/3party/boost/boost/fusion/iterator.hpp index f8d5958a75..8aa15a39d9 100644 --- a/3party/boost/boost/fusion/iterator.hpp +++ b/3party/boost/boost/fusion/iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ITERATOR_10022005_0559) #define FUSION_ITERATOR_10022005_0559 +#include #include #include #include diff --git a/3party/boost/boost/fusion/iterator/advance.hpp b/3party/boost/boost/fusion/iterator/advance.hpp index bfd8af4b64..69b464274b 100644 --- a/3party/boost/boost/fusion/iterator/advance.hpp +++ b/3party/boost/boost/fusion/iterator/advance.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ADVANCE_09172005_1146) #define FUSION_ADVANCE_09172005_1146 +#include #include #include @@ -74,6 +75,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::advance_c::type const advance_c(Iterator const& i) { @@ -81,6 +83,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::advance::type const advance(Iterator const& i) { diff --git a/3party/boost/boost/fusion/iterator/basic_iterator.hpp b/3party/boost/boost/fusion/iterator/basic_iterator.hpp index 4327a8cef5..bab6a4a6a8 100644 --- a/3party/boost/boost/fusion/iterator/basic_iterator.hpp +++ b/3party/boost/boost/fusion/iterator/basic_iterator.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ITERATOR_BASIC_ITERATOR_HPP #define BOOST_FUSION_ITERATOR_BASIC_ITERATOR_HPP +#include #include #include @@ -39,7 +40,7 @@ namespace boost { namespace fusion template struct basic_iterator - : iterator_facade, Category> + : iterator_facade, Category> { typedef mpl::int_ index; typedef Seq seq_type; @@ -76,6 +77,7 @@ namespace boost { namespace fusion basic_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { @@ -98,6 +100,7 @@ namespace boost { namespace fusion { typedef mpl::minus type; + BOOST_FUSION_GPU_ENABLED static type call(It1 const&, It2 const&) @@ -118,15 +121,18 @@ namespace boost { namespace fusion {}; template + BOOST_FUSION_GPU_ENABLED basic_iterator(basic_iterator const& it) : seq(it.seq) {} + BOOST_FUSION_GPU_ENABLED basic_iterator(Seq& in_seq, int) : seq(&in_seq) {} template + BOOST_FUSION_GPU_ENABLED basic_iterator& operator=(basic_iterator const& it) { diff --git a/3party/boost/boost/fusion/iterator/deref.hpp b/3party/boost/boost/fusion/iterator/deref.hpp index 5b01e65728..a608b0a0a1 100644 --- a/3party/boost/boost/fusion/iterator/deref.hpp +++ b/3party/boost/boost/fusion/iterator/deref.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_05042005_1019) #define FUSION_DEREF_05042005_1019 +#include #include #include @@ -54,6 +55,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::deref::type deref(Iterator const& i) { @@ -62,6 +64,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::deref::type operator*(iterator_base const& i) { diff --git a/3party/boost/boost/fusion/iterator/deref_data.hpp b/3party/boost/boost/fusion/iterator/deref_data.hpp index 09ba439214..0dff0309c7 100644 --- a/3party/boost/boost/fusion/iterator/deref_data.hpp +++ b/3party/boost/boost/fusion/iterator/deref_data.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ITERATOR_DEREF_DATA_HPP #define BOOST_FUSION_ITERATOR_DEREF_DATA_HPP +#include #include namespace boost { namespace fusion @@ -39,6 +40,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::deref_data::type deref_data(It const& it) { diff --git a/3party/boost/boost/fusion/iterator/detail/adapt_deref_traits.hpp b/3party/boost/boost/fusion/iterator/detail/adapt_deref_traits.hpp index 197dfc10bf..ef6005569b 100644 --- a/3party/boost/boost/fusion/iterator/detail/adapt_deref_traits.hpp +++ b/3party/boost/boost/fusion/iterator/detail/adapt_deref_traits.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ADAPT_DEREF_TRAITS_05062005_0900) #define FUSION_ADAPT_DEREF_TRAITS_05062005_0900 +#include #include namespace boost { namespace fusion { namespace detail @@ -20,6 +21,7 @@ namespace boost { namespace fusion { namespace detail result_of::deref::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/iterator/detail/adapt_value_traits.hpp b/3party/boost/boost/fusion/iterator/detail/adapt_value_traits.hpp index 6649ade145..e27a2f90fd 100644 --- a/3party/boost/boost/fusion/iterator/detail/adapt_value_traits.hpp +++ b/3party/boost/boost/fusion/iterator/detail/adapt_value_traits.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ADAPT_VALUE_TRAITS_05062005_0859) #define FUSION_ADAPT_VALUE_TRAITS_05062005_0859 +#include #include namespace boost { namespace fusion { namespace detail diff --git a/3party/boost/boost/fusion/iterator/detail/advance.hpp b/3party/boost/boost/fusion/iterator/detail/advance.hpp index 56dfab9c94..ace4ed4989 100644 --- a/3party/boost/boost/fusion/iterator/detail/advance.hpp +++ b/3party/boost/boost/fusion/iterator/detail/advance.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ADVANCE_09172005_1149) #define FUSION_ADVANCE_09172005_1149 +#include #include #include #include @@ -44,6 +45,7 @@ namespace boost { namespace fusion { namespace advance_detail >::type type; + BOOST_FUSION_GPU_ENABLED static type const& call(type const& i) { @@ -51,6 +53,7 @@ namespace boost { namespace fusion { namespace advance_detail } template + BOOST_FUSION_GPU_ENABLED static type call(I const& i) { @@ -83,6 +86,7 @@ namespace boost { namespace fusion { namespace advance_detail >::type type; + BOOST_FUSION_GPU_ENABLED static type const& call(type const& i) { @@ -90,6 +94,7 @@ namespace boost { namespace fusion { namespace advance_detail } template + BOOST_FUSION_GPU_ENABLED static type call(I const& i) { diff --git a/3party/boost/boost/fusion/iterator/detail/distance.hpp b/3party/boost/boost/fusion/iterator/detail/distance.hpp index 3994cb3064..c037995210 100644 --- a/3party/boost/boost/fusion/iterator/detail/distance.hpp +++ b/3party/boost/boost/fusion/iterator/detail/distance.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DISTANCE_09172005_0730) #define FUSION_DISTANCE_09172005_0730 +#include #include #include #include @@ -52,6 +53,7 @@ namespace boost { namespace fusion { namespace distance_detail >::type type; + BOOST_FUSION_GPU_ENABLED static type call(First const&, Last const&) { diff --git a/3party/boost/boost/fusion/iterator/detail/segment_sequence.hpp b/3party/boost/boost/fusion/iterator/detail/segment_sequence.hpp index c372a83630..90db25ea7d 100644 --- a/3party/boost/boost/fusion/iterator/detail/segment_sequence.hpp +++ b/3party/boost/boost/fusion/iterator/detail/segment_sequence.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_SEQUENCE_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_SEQUENCE_HPP_INCLUDED +#include #include #include #include @@ -29,7 +30,7 @@ namespace boost { namespace fusion { namespace detail typedef Sequence sequence_type; sequence_type sequence; - explicit segment_sequence(Sequence const & seq) + BOOST_FUSION_GPU_ENABLED explicit segment_sequence(Sequence const & seq) : sequence(seq) {} }; @@ -60,6 +61,7 @@ namespace extension { typedef typename Sequence::sequence_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence & seq) { return seq.sequence; diff --git a/3party/boost/boost/fusion/iterator/detail/segmented_equal_to.hpp b/3party/boost/boost/fusion/iterator/detail/segmented_equal_to.hpp index 1e4ad268ae..77a080f2b2 100644 --- a/3party/boost/boost/fusion/iterator/detail/segmented_equal_to.hpp +++ b/3party/boost/boost/fusion/iterator/detail/segmented_equal_to.hpp @@ -7,13 +7,14 @@ #if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_EQUAL_TO_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_ITERATOR_EQUAL_TO_HPP_INCLUDED +#include #include #include #include namespace boost { namespace fusion { - struct nil; + struct nil_; namespace detail { @@ -32,7 +33,7 @@ namespace boost { namespace fusion {}; template <> - struct segmented_equal_to + struct segmented_equal_to : mpl::true_ {}; } diff --git a/3party/boost/boost/fusion/iterator/detail/segmented_iterator.hpp b/3party/boost/boost/fusion/iterator/detail/segmented_iterator.hpp index ccd45fbf9f..1d4f62d3a7 100644 --- a/3party/boost/boost/fusion/iterator/detail/segmented_iterator.hpp +++ b/3party/boost/boost/fusion/iterator/detail/segmented_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_SEGMENTED_ITERATOR_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_ITERATOR_SEGMENTED_ITERATOR_HPP_INCLUDED +#include #include #include #include @@ -19,7 +20,7 @@ namespace boost { namespace fusion { - struct nil; + struct nil_; namespace detail { @@ -34,7 +35,7 @@ namespace boost { namespace fusion struct segmented_iterator : iterator_facade, forward_traversal_tag> { - explicit segmented_iterator(Context const& ctx) + BOOST_FUSION_GPU_ENABLED explicit segmented_iterator(Context const& ctx) : context(ctx) {} @@ -51,6 +52,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { return *it.context.car.first; @@ -70,6 +72,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { return fusion::deref_data(it.context.car.first); @@ -129,6 +132,7 @@ namespace boost { namespace fusion typedef detail::segmented_next_impl impl; typedef segmented_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { return type(impl::call(it.context)); diff --git a/3party/boost/boost/fusion/iterator/detail/segmented_next_impl.hpp b/3party/boost/boost/fusion/iterator/detail/segmented_next_impl.hpp index 2a7f6f6c86..a2b75d710a 100644 --- a/3party/boost/boost/fusion/iterator/detail/segmented_next_impl.hpp +++ b/3party/boost/boost/fusion/iterator/detail/segmented_next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_NEXT_IMPL_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_ITERATOR_NEXT_IMPL_HPP_INCLUDED +#include #include #include #include @@ -64,6 +65,7 @@ namespace boost { namespace fusion cons type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return type( @@ -83,7 +85,7 @@ namespace boost { namespace fusion //auto segmented_next_impl_recurse3(stack) //{ // if (size(stack) == 1) - // return cons(iterator_range(end(car(stack)), end(car(stack))), nil); + // return cons(iterator_range(end(car(stack)), end(car(stack))), nil_); // else // return segmented_next_impl_recurse(stack.cdr); //} @@ -96,6 +98,7 @@ namespace boost { namespace fusion typedef segmented_next_impl_recurse impl; typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return impl::call(stack.cdr); @@ -109,6 +112,7 @@ namespace boost { namespace fusion typedef iterator_range range_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return type(range_type(stack.car.last, stack.car.last)); @@ -143,6 +147,7 @@ namespace boost { namespace fusion typedef segmented_next_impl_recurse3 impl; typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return impl::call(stack); @@ -154,6 +159,7 @@ namespace boost { namespace fusion { typedef Result type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return segmented_begin_impl::call(*stack.car.first, stack); @@ -179,6 +185,7 @@ namespace boost { namespace fusion typename segmented_next_impl_recurse::type type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { return segmented_next_impl_recurse::call(stack.cdr); @@ -190,6 +197,7 @@ namespace boost { namespace fusion { typedef Next type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return pop_front_car::call(stack); @@ -202,6 +210,7 @@ namespace boost { namespace fusion typedef segmented_next_impl_recurse2 impl; typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return impl::call(pop_front_car::call(stack)); @@ -227,6 +236,7 @@ namespace boost { namespace fusion typedef segmented_next_impl_recurse impl; typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return impl::call(stack.cdr); @@ -238,6 +248,7 @@ namespace boost { namespace fusion { typedef Next type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const & stack) { return pop_front_car::call(stack); diff --git a/3party/boost/boost/fusion/iterator/distance.hpp b/3party/boost/boost/fusion/iterator/distance.hpp index 74d2d3ef2f..afca6a363e 100644 --- a/3party/boost/boost/fusion/iterator/distance.hpp +++ b/3party/boost/boost/fusion/iterator/distance.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DISTANCE_09172005_0721) #define FUSION_DISTANCE_09172005_0721 +#include #include #include @@ -68,6 +69,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::distance::type distance(First const& a, Last const& b) { diff --git a/3party/boost/boost/fusion/iterator/equal_to.hpp b/3party/boost/boost/fusion/iterator/equal_to.hpp index 334783770e..1927ce7e96 100644 --- a/3party/boost/boost/fusion/iterator/equal_to.hpp +++ b/3party/boost/boost/fusion/iterator/equal_to.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_EQUAL_TO_05052005_1208) #define FUSION_EQUAL_TO_05052005_1208 +#include #include #include #include @@ -73,6 +74,7 @@ namespace boost { namespace fusion namespace iterator_operators { template + BOOST_FUSION_GPU_ENABLED inline typename boost::enable_if< mpl::and_, is_fusion_iterator > @@ -84,6 +86,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename boost::enable_if< mpl::and_, is_fusion_iterator > diff --git a/3party/boost/boost/fusion/iterator/iterator_adapter.hpp b/3party/boost/boost/fusion/iterator/iterator_adapter.hpp index 9077f8fa00..af6978b20e 100644 --- a/3party/boost/boost/fusion/iterator/iterator_adapter.hpp +++ b/3party/boost/boost/fusion/iterator/iterator_adapter.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ITERATOR_ADAPTER_08112011_0942) #define FUSION_ITERATOR_ADAPTER_08112011_0942 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion iterator_base_type; iterator_base_type iterator_base; + BOOST_FUSION_GPU_ENABLED iterator_adapter(iterator_base_type const& iterator_base_) : iterator_base(iterator_base_) {} @@ -45,6 +47,7 @@ namespace boost { namespace fusion >::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& it) { @@ -79,6 +82,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& it) { @@ -96,6 +100,7 @@ namespace boost { namespace fusion >::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -113,6 +118,7 @@ namespace boost { namespace fusion >::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/iterator/iterator_facade.hpp b/3party/boost/boost/fusion/iterator/iterator_facade.hpp index abd6607d67..415e841c00 100644 --- a/3party/boost/boost/fusion/iterator/iterator_facade.hpp +++ b/3party/boost/boost/fusion/iterator/iterator_facade.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ITERATOR_FACADE_09252006_1011) #define FUSION_ITERATOR_FACADE_09252006_1011 +#include #include #include #include diff --git a/3party/boost/boost/fusion/iterator/key_of.hpp b/3party/boost/boost/fusion/iterator/key_of.hpp index 64c2f86aa7..3459ab58e5 100644 --- a/3party/boost/boost/fusion/iterator/key_of.hpp +++ b/3party/boost/boost/fusion/iterator/key_of.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ITERATOR_KEY_OF_HPP #define BOOST_FUSION_ITERATOR_KEY_OF_HPP +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/iterator/mpl.hpp b/3party/boost/boost/fusion/iterator/mpl.hpp index a5274a49f6..fdaf749c08 100644 --- a/3party/boost/boost/fusion/iterator/mpl.hpp +++ b/3party/boost/boost/fusion/iterator/mpl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ITERATOR_MPL_10022005_0557) #define FUSION_ITERATOR_MPL_10022005_0557 +#include #include #include diff --git a/3party/boost/boost/fusion/iterator/mpl/convert_iterator.hpp b/3party/boost/boost/fusion/iterator/mpl/convert_iterator.hpp index dd52d4c587..54c9ef690f 100644 --- a/3party/boost/boost/fusion/iterator/mpl/convert_iterator.hpp +++ b/3party/boost/boost/fusion/iterator/mpl/convert_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CONVERT_ITERATOR_05062005_1218) #define FUSION_CONVERT_ITERATOR_05062005_1218 +#include #include #include #include @@ -30,18 +31,21 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static T const& call(T const& x, mpl::true_) { return x; } + BOOST_FUSION_GPU_ENABLED static mpl_iterator call(T const& /*x*/, mpl::false_) { return mpl_iterator(); } + BOOST_FUSION_GPU_ENABLED static typename mpl::if_< is_fusion_iterator diff --git a/3party/boost/boost/fusion/iterator/mpl/fusion_iterator.hpp b/3party/boost/boost/fusion/iterator/mpl/fusion_iterator.hpp index 82889e0806..f8feacf671 100644 --- a/3party/boost/boost/fusion/iterator/mpl/fusion_iterator.hpp +++ b/3party/boost/boost/fusion/iterator/mpl/fusion_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_FUSION_ITERATOR_10012005_1551) #define FUSION_FUSION_ITERATOR_10012005_1551 +#include #include #include #include diff --git a/3party/boost/boost/fusion/iterator/next.hpp b/3party/boost/boost/fusion/iterator/next.hpp index 5cc9c80771..bd76eac152 100644 --- a/3party/boost/boost/fusion/iterator/next.hpp +++ b/3party/boost/boost/fusion/iterator/next.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_05042005_1101) #define FUSION_NEXT_05042005_1101 +#include #include namespace boost { namespace fusion @@ -53,6 +54,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::next::type const next(Iterator const& i) { diff --git a/3party/boost/boost/fusion/iterator/prior.hpp b/3party/boost/boost/fusion/iterator/prior.hpp index 818851b1b7..78d8390b3c 100644 --- a/3party/boost/boost/fusion/iterator/prior.hpp +++ b/3party/boost/boost/fusion/iterator/prior.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_PRIOR_05042005_1144) #define FUSION_PRIOR_05042005_1144 +#include #include namespace boost { namespace fusion @@ -53,6 +54,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::prior::type const prior(Iterator const& i) { diff --git a/3party/boost/boost/fusion/iterator/segmented_iterator.hpp b/3party/boost/boost/fusion/iterator/segmented_iterator.hpp index 21095e78c3..b9aac07c6c 100644 --- a/3party/boost/boost/fusion/iterator/segmented_iterator.hpp +++ b/3party/boost/boost/fusion/iterator/segmented_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_ITERATOR_HPP_INCLUDED +#include #include #include #include diff --git a/3party/boost/boost/fusion/iterator/value_of.hpp b/3party/boost/boost/fusion/iterator/value_of.hpp index fe0cd56811..1408dc7a55 100644 --- a/3party/boost/boost/fusion/iterator/value_of.hpp +++ b/3party/boost/boost/fusion/iterator/value_of.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_OF_05052005_1126) #define FUSION_VALUE_OF_05052005_1126 +#include #include #include diff --git a/3party/boost/boost/fusion/iterator/value_of_data.hpp b/3party/boost/boost/fusion/iterator/value_of_data.hpp index 4a8316deb7..341fe882a9 100644 --- a/3party/boost/boost/fusion/iterator/value_of_data.hpp +++ b/3party/boost/boost/fusion/iterator/value_of_data.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_ITERATOR_VALUE_OF_DATA_HPP #define BOOST_FUSION_ITERATOR_VALUE_OF_DATA_HPP +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/mpl/at.hpp b/3party/boost/boost/fusion/mpl/at.hpp index 27e95edb5d..ec4b257d7c 100644 --- a/3party/boost/boost/fusion/mpl/at.hpp +++ b/3party/boost/boost/fusion/mpl/at.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_AT_10022005_1616) #define FUSION_AT_10022005_1616 +#include #include #include diff --git a/3party/boost/boost/fusion/mpl/back.hpp b/3party/boost/boost/fusion/mpl/back.hpp index a516fa738e..631b4ea653 100644 --- a/3party/boost/boost/fusion/mpl/back.hpp +++ b/3party/boost/boost/fusion/mpl/back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BACK_10022005_1620) #define FUSION_BACK_10022005_1620 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/begin.hpp b/3party/boost/boost/fusion/mpl/begin.hpp index c9f92f85e5..f97e82ceb1 100644 --- a/3party/boost/boost/fusion/mpl/begin.hpp +++ b/3party/boost/boost/fusion/mpl/begin.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BEGIN_10022005_1620) #define FUSION_BEGIN_10022005_1620 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/clear.hpp b/3party/boost/boost/fusion/mpl/clear.hpp index 28d0e5b1dc..745ca0f9c0 100644 --- a/3party/boost/boost/fusion/mpl/clear.hpp +++ b/3party/boost/boost/fusion/mpl/clear.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CLEAR_10022005_1817) #define FUSION_CLEAR_10022005_1817 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/detail/clear.hpp b/3party/boost/boost/fusion/mpl/detail/clear.hpp index e6e83f610b..9e640daad6 100644 --- a/3party/boost/boost/fusion/mpl/detail/clear.hpp +++ b/3party/boost/boost/fusion/mpl/detail/clear.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CLEAR_10022005_1442) #define FUSION_CLEAR_10022005_1442 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/empty.hpp b/3party/boost/boost/fusion/mpl/empty.hpp index 56d0924348..b058ae9503 100644 --- a/3party/boost/boost/fusion/mpl/empty.hpp +++ b/3party/boost/boost/fusion/mpl/empty.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_EMPTY_10022005_1619) #define FUSION_EMPTY_10022005_1619 +#include #include #include diff --git a/3party/boost/boost/fusion/mpl/end.hpp b/3party/boost/boost/fusion/mpl/end.hpp index 3de5e18881..e5aa8b96c4 100644 --- a/3party/boost/boost/fusion/mpl/end.hpp +++ b/3party/boost/boost/fusion/mpl/end.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_END_10022005_1619) #define FUSION_END_10022005_1619 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/erase.hpp b/3party/boost/boost/fusion/mpl/erase.hpp index 7566866a98..82d4260fba 100644 --- a/3party/boost/boost/fusion/mpl/erase.hpp +++ b/3party/boost/boost/fusion/mpl/erase.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ERASE_10022005_1835) #define FUSION_ERASE_10022005_1835 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/erase_key.hpp b/3party/boost/boost/fusion/mpl/erase_key.hpp index 9d1df693a9..4dabf04255 100644 --- a/3party/boost/boost/fusion/mpl/erase_key.hpp +++ b/3party/boost/boost/fusion/mpl/erase_key.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ERASE_KEY_10022005_1907) #define FUSION_ERASE_KEY_10022005_1907 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/front.hpp b/3party/boost/boost/fusion/mpl/front.hpp index 43bbd42f28..45672a6dcb 100644 --- a/3party/boost/boost/fusion/mpl/front.hpp +++ b/3party/boost/boost/fusion/mpl/front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_FRONT_10022005_1618) #define FUSION_FRONT_10022005_1618 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/has_key.hpp b/3party/boost/boost/fusion/mpl/has_key.hpp index 6ab5ea157f..f1e3359f50 100644 --- a/3party/boost/boost/fusion/mpl/has_key.hpp +++ b/3party/boost/boost/fusion/mpl/has_key.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_HAS_KEY_10022005_1617) #define FUSION_HAS_KEY_10022005_1617 +#include #include #include diff --git a/3party/boost/boost/fusion/mpl/insert.hpp b/3party/boost/boost/fusion/mpl/insert.hpp index d59e54b942..45b5d87d78 100644 --- a/3party/boost/boost/fusion/mpl/insert.hpp +++ b/3party/boost/boost/fusion/mpl/insert.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INSERT_10022005_1837) #define FUSION_INSERT_10022005_1837 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/insert_range.hpp b/3party/boost/boost/fusion/mpl/insert_range.hpp index e8b5b8e6f7..31389ffc44 100644 --- a/3party/boost/boost/fusion/mpl/insert_range.hpp +++ b/3party/boost/boost/fusion/mpl/insert_range.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_INSERT_RANGE_10022005_1838) #define FUSION_INSERT_RANGE_10022005_1838 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/pop_back.hpp b/3party/boost/boost/fusion/mpl/pop_back.hpp index 505daea01d..d91ca8aac4 100644 --- a/3party/boost/boost/fusion/mpl/pop_back.hpp +++ b/3party/boost/boost/fusion/mpl/pop_back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_POP_BACK_10022005_1801) #define FUSION_POP_BACK_10022005_1801 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/pop_front.hpp b/3party/boost/boost/fusion/mpl/pop_front.hpp index d51cf705ad..5f6533bc32 100644 --- a/3party/boost/boost/fusion/mpl/pop_front.hpp +++ b/3party/boost/boost/fusion/mpl/pop_front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_POP_FRONT_10022005_1800) #define FUSION_POP_FRONT_10022005_1800 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/push_back.hpp b/3party/boost/boost/fusion/mpl/push_back.hpp index a2348c55b3..8af5456ba6 100644 --- a/3party/boost/boost/fusion/mpl/push_back.hpp +++ b/3party/boost/boost/fusion/mpl/push_back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_PUSH_BACK_10022005_1647) #define FUSION_PUSH_BACK_10022005_1647 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/push_front.hpp b/3party/boost/boost/fusion/mpl/push_front.hpp index 5bcf9bbd0b..5978fd6e21 100644 --- a/3party/boost/boost/fusion/mpl/push_front.hpp +++ b/3party/boost/boost/fusion/mpl/push_front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_PUSH_FRONT_10022005_1720) #define FUSION_PUSH_FRONT_10022005_1720 +#include #include #include #include diff --git a/3party/boost/boost/fusion/mpl/size.hpp b/3party/boost/boost/fusion/mpl/size.hpp index 1e7f351011..c77e55fbd5 100644 --- a/3party/boost/boost/fusion/mpl/size.hpp +++ b/3party/boost/boost/fusion/mpl/size.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SIZE_10022005_1617) #define FUSION_SIZE_10022005_1617 +#include #include #include diff --git a/3party/boost/boost/fusion/sequence.hpp b/3party/boost/boost/fusion/sequence.hpp index 11c95a64ba..4d5d8a2b11 100644 --- a/3party/boost/boost/fusion/sequence.hpp +++ b/3party/boost/boost/fusion/sequence.hpp @@ -5,8 +5,9 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_SEQUENCE_10022005_0559) -#define FUSION_ITERATOR_10022005_0559 +#define FUSION_SEQUENCE_10022005_0559 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/comparison.hpp b/3party/boost/boost/fusion/sequence/comparison.hpp index 52fd1384c8..d319f9e07f 100644 --- a/3party/boost/boost/fusion/sequence/comparison.hpp +++ b/3party/boost/boost/fusion/sequence/comparison.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_COMPARISON_10022005_0615) #define FUSION_SEQUENCE_COMPARISON_10022005_0615 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/comparison/detail/equal_to.hpp b/3party/boost/boost/fusion/sequence/comparison/detail/equal_to.hpp index 56cfe1b247..577023db6a 100644 --- a/3party/boost/boost/fusion/sequence/comparison/detail/equal_to.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/detail/equal_to.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_EQUAL_TO_05052005_1142) #define FUSION_EQUAL_TO_05052005_1142 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { namespace detail typedef typename result_of::end::type end2_type; template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const&, I2 const&, mpl::true_) { @@ -30,6 +32,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b, mpl::false_) { @@ -38,6 +41,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b) { @@ -50,6 +54,7 @@ namespace boost { namespace fusion { namespace detail struct sequence_equal_to { template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& /*a*/, I2 const& /*b*/) { diff --git a/3party/boost/boost/fusion/sequence/comparison/detail/greater.hpp b/3party/boost/boost/fusion/sequence/comparison/detail/greater.hpp index e61287765f..d875f16b2b 100644 --- a/3party/boost/boost/fusion/sequence/comparison/detail/greater.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/detail/greater.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_GREATER_05052005_1142) #define FUSION_GREATER_05052005_1142 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { namespace detail typedef typename result_of::end::type end2_type; template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const&, I2 const&, mpl::true_) { @@ -30,6 +32,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b, mpl::false_) { @@ -39,6 +42,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b) { diff --git a/3party/boost/boost/fusion/sequence/comparison/detail/greater_equal.hpp b/3party/boost/boost/fusion/sequence/comparison/detail/greater_equal.hpp index 6d91e27bbd..e0aa530e18 100644 --- a/3party/boost/boost/fusion/sequence/comparison/detail/greater_equal.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/detail/greater_equal.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_GREATER_EQUAL_05052005_1142) #define FUSION_GREATER_EQUAL_05052005_1142 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { namespace detail typedef typename result_of::end::type end2_type; template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const&, I2 const&, mpl::true_) { @@ -30,6 +32,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b, mpl::false_) { @@ -39,6 +42,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b) { diff --git a/3party/boost/boost/fusion/sequence/comparison/detail/less.hpp b/3party/boost/boost/fusion/sequence/comparison/detail/less.hpp index 1342bb1427..8964ca7d13 100644 --- a/3party/boost/boost/fusion/sequence/comparison/detail/less.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/detail/less.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_LESS_05052005_1141) #define FUSION_LESS_05052005_1141 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { namespace detail typedef typename result_of::end::type end2_type; template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const&, I2 const&, mpl::true_) { @@ -30,6 +32,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b, mpl::false_) { @@ -39,6 +42,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b) { diff --git a/3party/boost/boost/fusion/sequence/comparison/detail/less_equal.hpp b/3party/boost/boost/fusion/sequence/comparison/detail/less_equal.hpp index 5683849a2c..10bcb76791 100644 --- a/3party/boost/boost/fusion/sequence/comparison/detail/less_equal.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/detail/less_equal.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_LESS_EQUAL_05052005_1141) #define FUSION_LESS_EQUAL_05052005_1141 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { namespace detail typedef typename result_of::end::type end2_type; template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const&, I2 const&, mpl::true_) { @@ -30,6 +32,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b, mpl::false_) { @@ -39,6 +42,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b) { diff --git a/3party/boost/boost/fusion/sequence/comparison/detail/not_equal_to.hpp b/3party/boost/boost/fusion/sequence/comparison/detail/not_equal_to.hpp index 77c235089f..b230ac1fba 100644 --- a/3party/boost/boost/fusion/sequence/comparison/detail/not_equal_to.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/detail/not_equal_to.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_NOT_EQUAL_TO_05052005_1141) #define FUSION_NOT_EQUAL_TO_05052005_1141 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { namespace detail typedef typename result_of::end::type end2_type; template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const&, I2 const&, mpl::true_) { @@ -30,6 +32,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b, mpl::false_) { @@ -38,6 +41,7 @@ namespace boost { namespace fusion { namespace detail } template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b) { @@ -50,6 +54,7 @@ namespace boost { namespace fusion { namespace detail struct sequence_not_equal_to { template + BOOST_FUSION_GPU_ENABLED static bool call(I1 const& a, I2 const& b) { diff --git a/3party/boost/boost/fusion/sequence/comparison/enable_comparison.hpp b/3party/boost/boost/fusion/sequence/comparison/enable_comparison.hpp index bd55ac302e..1279417714 100644 --- a/3party/boost/boost/fusion/sequence/comparison/enable_comparison.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/enable_comparison.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ENABLE_COMPARISON_09232005_1958) #define FUSION_ENABLE_COMPARISON_09232005_1958 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/comparison/equal_to.hpp b/3party/boost/boost/fusion/sequence/comparison/equal_to.hpp index 9c4e043558..485df0bac2 100644 --- a/3party/boost/boost/fusion/sequence/comparison/equal_to.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/equal_to.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_EQUAL_TO_05052005_0431) #define FUSION_EQUAL_TO_05052005_0431 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline bool equal_to(Seq1 const& a, Seq2 const& b) { @@ -36,6 +38,7 @@ namespace boost { namespace fusion namespace operators { template + BOOST_FUSION_GPU_ENABLED inline typename boost::enable_if< traits::enable_equality diff --git a/3party/boost/boost/fusion/sequence/comparison/greater.hpp b/3party/boost/boost/fusion/sequence/comparison/greater.hpp index 077138d80d..5ad7ef74b9 100644 --- a/3party/boost/boost/fusion/sequence/comparison/greater.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/greater.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_GREATER_05052005_0432) #define FUSION_GREATER_05052005_0432 +#include #include #include #include @@ -22,6 +23,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline bool greater(Seq1 const& a, Seq2 const& b) { @@ -36,6 +38,7 @@ namespace boost { namespace fusion namespace operators { template + BOOST_FUSION_GPU_ENABLED inline typename boost::enable_if< traits::enable_comparison diff --git a/3party/boost/boost/fusion/sequence/comparison/greater_equal.hpp b/3party/boost/boost/fusion/sequence/comparison/greater_equal.hpp index 90175bc7d2..65904f8339 100644 --- a/3party/boost/boost/fusion/sequence/comparison/greater_equal.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/greater_equal.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_GREATER_EQUAL_05052005_0432) #define FUSION_GREATER_EQUAL_05052005_0432 +#include #include #include #include @@ -22,6 +23,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline bool greater_equal(Seq1 const& a, Seq2 const& b) { @@ -36,6 +38,7 @@ namespace boost { namespace fusion namespace operators { template + BOOST_FUSION_GPU_ENABLED inline typename boost::enable_if< traits::enable_comparison diff --git a/3party/boost/boost/fusion/sequence/comparison/less.hpp b/3party/boost/boost/fusion/sequence/comparison/less.hpp index 944cdcf69e..28762b7394 100644 --- a/3party/boost/boost/fusion/sequence/comparison/less.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/less.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_LESS_05052005_0432) #define FUSION_LESS_05052005_0432 +#include #include #include #include @@ -17,6 +18,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline bool less(Seq1 const& a, Seq2 const& b) { @@ -27,6 +29,7 @@ namespace boost { namespace fusion namespace operators { template + BOOST_FUSION_GPU_ENABLED inline typename boost::enable_if< traits::enable_comparison diff --git a/3party/boost/boost/fusion/sequence/comparison/less_equal.hpp b/3party/boost/boost/fusion/sequence/comparison/less_equal.hpp index 0e5d23a5eb..d0668208f0 100644 --- a/3party/boost/boost/fusion/sequence/comparison/less_equal.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/less_equal.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_LESS_EQUAL_05052005_0432) #define FUSION_LESS_EQUAL_05052005_0432 +#include #include #include #include @@ -23,6 +24,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline bool less_equal(Seq1 const& a, Seq2 const& b) { @@ -39,6 +41,7 @@ namespace boost { namespace fusion #if defined(BOOST_MSVC) && (BOOST_MSVC <= 1400) // Workaround for VC8.0 and VC7.1 template + BOOST_FUSION_GPU_ENABLED inline bool operator<=(sequence_base const& a, sequence_base const& b) { @@ -46,6 +49,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename disable_if, bool>::type operator<=(sequence_base const& a, Seq2 const& b) { @@ -53,6 +57,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename disable_if, bool>::type operator<=(Seq1 const& a, sequence_base const& b) { @@ -64,6 +69,7 @@ namespace boost { namespace fusion // but barfs somewhere else. template + BOOST_FUSION_GPU_ENABLED inline typename boost::enable_if< traits::enable_comparison diff --git a/3party/boost/boost/fusion/sequence/comparison/not_equal_to.hpp b/3party/boost/boost/fusion/sequence/comparison/not_equal_to.hpp index 14ef25df7f..4cd94f9e53 100644 --- a/3party/boost/boost/fusion/sequence/comparison/not_equal_to.hpp +++ b/3party/boost/boost/fusion/sequence/comparison/not_equal_to.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_NOT_EQUAL_TO_05052005_0431) #define FUSION_NOT_EQUAL_TO_05052005_0431 +#include #include #include #include @@ -22,6 +23,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline bool not_equal_to(Seq1 const& a, Seq2 const& b) { @@ -39,6 +41,7 @@ namespace boost { namespace fusion namespace operators { template + BOOST_FUSION_GPU_ENABLED inline typename boost::enable_if< traits::enable_equality diff --git a/3party/boost/boost/fusion/sequence/convert.hpp b/3party/boost/boost/fusion/sequence/convert.hpp index 5264810102..461b92120d 100644 --- a/3party/boost/boost/fusion/sequence/convert.hpp +++ b/3party/boost/boost/fusion/sequence/convert.hpp @@ -20,15 +20,16 @@ namespace boost { namespace fusion template struct convert { - typedef typename extension::convert_impl gen; - typedef typename - gen::template apply::type - type; + extension::convert_impl::template apply + gen; + + typedef typename gen::type type; }; } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::convert::type convert(Sequence& seq) { @@ -37,6 +38,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::convert::type convert(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic.hpp b/3party/boost/boost/fusion/sequence/intrinsic.hpp index 7da2cf03d5..4583807406 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_INTRINSIC_10022005_0618) #define FUSION_SEQUENCE_INTRINSIC_10022005_0618 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/intrinsic/at.hpp b/3party/boost/boost/fusion/sequence/intrinsic/at.hpp index 92da7bbd2c..aa0d97445d 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/at.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/at.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_AT_05042005_0722) #define FUSION_AT_05042005_0722 +#include #include #include #include @@ -71,6 +72,7 @@ namespace boost { namespace fusion template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -82,6 +84,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at::type at(Sequence const& seq) { @@ -89,6 +92,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -100,6 +104,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at_c::type at_c(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/at_c.hpp b/3party/boost/boost/fusion/sequence/intrinsic/at_c.hpp index 449e3f4149..327798c0ce 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/at_c.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/at_c.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_AT_C_08252008_0308) #define FUSION_AT_C_08252008_0308 +#include #include #endif diff --git a/3party/boost/boost/fusion/sequence/intrinsic/at_key.hpp b/3party/boost/boost/fusion/sequence/intrinsic/at_key.hpp index 24c2fffa65..844de840e4 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/at_key.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/at_key.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_AT_KEY_20060304_1755) #define BOOST_FUSION_AT_KEY_20060304_1755 +#include #include #include #include @@ -37,6 +38,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { @@ -72,6 +74,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -83,6 +86,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at_key::type at_key(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/back.hpp b/3party/boost/boost/fusion/sequence/intrinsic/back.hpp index 0a4d482053..f934355381 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/back.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/back.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BACK_09162005_0350) #define FUSION_BACK_09162005_0350 +#include #include #include #include @@ -26,6 +27,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::back::type back(Sequence& seq) { @@ -33,6 +35,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::back::type back(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/begin.hpp b/3party/boost/boost/fusion/sequence/intrinsic/begin.hpp index 7a7ecf6afd..af4e31225d 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/begin.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/begin.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BEGIN_04052005_1132) #define FUSION_BEGIN_04052005_1132 +#include #include #include #include @@ -70,6 +71,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< traits::is_sequence @@ -81,6 +83,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< traits::is_sequence diff --git a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp index 968718eb2a..81d09660b1 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_BEGIN_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_BEGIN_HPP_INCLUDED +#include #include #include #include @@ -19,22 +20,23 @@ namespace boost { namespace fusion { namespace detail { //auto segmented_begin( seq ) //{ - // return make_segmented_iterator( segmented_begin_impl( seq, nil ) ); + // return make_segmented_iterator( segmented_begin_impl( seq, nil_ ) ); //} - template + template struct segmented_begin { typedef segmented_iterator< - typename segmented_begin_impl::type + typename segmented_begin_impl::type > type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { return type( - segmented_begin_impl::call(seq, Nil())); + segmented_begin_impl::call(seq, Nil_())); } }; diff --git a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp index 5069432761..2ab462702d 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_BEGIN_IMPL_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_BEGIN_IMPL_HPP_INCLUDED +#include #include #include #include @@ -37,6 +38,7 @@ namespace boost { namespace fusion { namespace detail typedef cons type; typedef mpl::false_ continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, State const&, Context const& context, segmented_begin_fun) { return type(range_type(fusion::begin(seq), fusion::end(seq)), context); @@ -62,6 +64,7 @@ namespace boost { namespace fusion { namespace detail typedef typename fold_impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, Stack const& stack) { return fold_impl::call(seq, end_impl::call(seq, stack), stack, segmented_begin_fun()); @@ -76,6 +79,7 @@ namespace boost { namespace fusion { namespace detail typedef iterator_range pair_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, Stack stack) { return type(pair_type(fusion::begin(seq), fusion::end(seq)), stack); diff --git a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp index 469862ac3b..c26865a671 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_END_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_END_HPP_INCLUDED +#include #include #include #include @@ -18,19 +19,20 @@ namespace boost { namespace fusion { namespace detail // return make_segmented_iterator( segmented_end_impl( seq ) ); //} - template + template struct segmented_end { typedef segmented_iterator< - typename segmented_end_impl::type + typename segmented_end_impl::type > type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence & seq) { return type( - segmented_end_impl::call(seq, Nil())); + segmented_end_impl::call(seq, Nil_())); } }; diff --git a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp index 149027bc2d..9be150433a 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_END_IMPL_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_END_IMPL_HPP_INCLUDED +#include #include #include #include @@ -47,6 +48,7 @@ namespace boost { namespace fusion { namespace detail typedef iterator_range pair_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence & seq, Stack stack) { end_type end = fusion::end(fusion::segments(seq)); diff --git a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_size.hpp b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_size.hpp index 03cef28fa5..4defcedde1 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_size.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/detail/segmented_size.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_SIZE_08112006_1141) #define BOOST_FUSION_SEGMENTED_SIZE_08112006_1141 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/intrinsic/empty.hpp b/3party/boost/boost/fusion/sequence/intrinsic/empty.hpp index a9928ab1a1..3c8666abd4 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/empty.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/empty.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_EMPTY_09162005_0335) #define FUSION_EMPTY_09162005_0335 +#include #include #include #include @@ -50,6 +51,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::empty::type empty(Sequence const&) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/end.hpp b/3party/boost/boost/fusion/sequence/intrinsic/end.hpp index 995ed7a083..3e69518efa 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/end.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/end.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_END_04052005_1141) #define FUSION_END_04052005_1141 +#include #include #include #include @@ -70,6 +71,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< traits::is_sequence @@ -81,6 +83,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_enable_if< traits::is_sequence diff --git a/3party/boost/boost/fusion/sequence/intrinsic/front.hpp b/3party/boost/boost/fusion/sequence/intrinsic/front.hpp index 0e50e3ca75..6d939da3d3 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/front.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/front.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_FRONT_09162005_0343) #define FUSION_FRONT_09162005_0343 +#include #include #include #include @@ -25,6 +26,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::front::type front(Sequence& seq) { @@ -32,6 +34,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::front::type front(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/has_key.hpp b/3party/boost/boost/fusion/sequence/intrinsic/has_key.hpp index 9e0969a97b..bba2c695b3 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/has_key.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/has_key.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_HAS_KEY_09232005_1454) #define FUSION_HAS_KEY_09232005_1454 +#include #include #include #include @@ -67,6 +68,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::has_key::type has_key(Sequence const&) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/segments.hpp b/3party/boost/boost/fusion/sequence/intrinsic/segments.hpp index afd5d400eb..a1bbacaf06 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/segments.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/segments.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTS_04052005_1141) #define BOOST_FUSION_SEGMENTS_04052005_1141 +#include #include #include #include @@ -53,6 +54,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -65,6 +67,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::segments::type segments(Sequence const& seq) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/size.hpp b/3party/boost/boost/fusion/sequence/intrinsic/size.hpp index 0a1c1659b2..51e613f693 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/size.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/size.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SIZE_05052005_0214) #define FUSION_SIZE_05052005_0214 +#include #include #include #include @@ -77,6 +78,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::size::type size(Sequence const&) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/swap.hpp b/3party/boost/boost/fusion/sequence/intrinsic/swap.hpp index 329f812484..05ce9b44b1 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/swap.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/swap.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SWAP_20070501_1956) #define BOOST_FUSION_SWAP_20070501_1956 +#include #include #include @@ -39,6 +40,7 @@ namespace boost { namespace fusion { }; template + BOOST_FUSION_GPU_ENABLED void operator()(Elem const& e) const { using std::swap; @@ -48,6 +50,7 @@ namespace boost { namespace fusion { } template + BOOST_FUSION_GPU_ENABLED typename enable_if, traits::is_sequence >, void>::type swap(Seq1& lhs, Seq2& rhs) { diff --git a/3party/boost/boost/fusion/sequence/intrinsic/value_at.hpp b/3party/boost/boost/fusion/sequence/intrinsic/value_at.hpp index ce314a8362..362669b521 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/value_at.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/value_at.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_AT_05052005_0229) #define FUSION_VALUE_AT_05052005_0229 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/intrinsic/value_at_key.hpp b/3party/boost/boost/fusion/sequence/intrinsic/value_at_key.hpp index 23d34ee6bc..6d8be3fbcd 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic/value_at_key.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic/value_at_key.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_VALUE_AT_KEY_05052005_0229) #define FUSION_VALUE_AT_KEY_05052005_0229 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/intrinsic_fwd.hpp b/3party/boost/boost/fusion/sequence/intrinsic_fwd.hpp index 57409a3917..3b248a04bb 100644 --- a/3party/boost/boost/fusion/sequence/intrinsic_fwd.hpp +++ b/3party/boost/boost/fusion/sequence/intrinsic_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEQUENCE_INTRINSIC_FWD_HPP_INCLUDED) #define BOOST_FUSION_SEQUENCE_INTRINSIC_FWD_HPP_INCLUDED +#include #include #include #include @@ -92,6 +93,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename lazy_disable_if< is_const @@ -100,10 +102,12 @@ namespace boost { namespace fusion at(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::at::type at(Sequence const& seq); template + BOOST_FUSION_GPU_ENABLED typename lazy_disable_if< is_const @@ -112,18 +116,22 @@ namespace boost { namespace fusion at_c(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::at_c::type at_c(Sequence const& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::back::type back(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::back::type back(Sequence const& seq); template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence @@ -132,6 +140,7 @@ namespace boost { namespace fusion begin(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence @@ -140,10 +149,12 @@ namespace boost { namespace fusion begin(Sequence const& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::empty::type empty(Sequence const&); template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence @@ -152,6 +163,7 @@ namespace boost { namespace fusion end(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence @@ -160,18 +172,22 @@ namespace boost { namespace fusion end(Sequence const& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::front::type front(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::front::type front(Sequence const& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::has_key::type has_key(Sequence const& seq); template + BOOST_FUSION_GPU_ENABLED typename lazy_disable_if< is_const @@ -180,14 +196,17 @@ namespace boost { namespace fusion segments(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::segments::type segments(Sequence const& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::size::type size(Sequence const&); template + BOOST_FUSION_GPU_ENABLED typename lazy_disable_if< is_const @@ -196,6 +215,7 @@ namespace boost { namespace fusion at_key(Sequence& seq); template + BOOST_FUSION_GPU_ENABLED typename result_of::at_key::type at_key(Sequence const& seq); }} diff --git a/3party/boost/boost/fusion/sequence/io.hpp b/3party/boost/boost/fusion/sequence/io.hpp index 1c5925de17..b0baf426c5 100644 --- a/3party/boost/boost/fusion/sequence/io.hpp +++ b/3party/boost/boost/fusion/sequence/io.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_IO_10032005_0836) #define FUSION_SEQUENCE_IO_10032005_0836 +#include #include #include diff --git a/3party/boost/boost/fusion/sequence/io/detail/in.hpp b/3party/boost/boost/fusion/sequence/io/detail/in.hpp index 38c4dd5fa5..d0a8dc4964 100644 --- a/3party/boost/boost/fusion/sequence/io/detail/in.hpp +++ b/3party/boost/boost/fusion/sequence/io/detail/in.hpp @@ -9,6 +9,7 @@ #if !defined(FUSION_IN_05052005_0121) #define FUSION_IN_05052005_0121 +#include #include #include diff --git a/3party/boost/boost/fusion/sequence/io/detail/manip.hpp b/3party/boost/boost/fusion/sequence/io/detail/manip.hpp index 371d0d29f7..8d8c296d3b 100644 --- a/3party/boost/boost/fusion/sequence/io/detail/manip.hpp +++ b/3party/boost/boost/fusion/sequence/io/detail/manip.hpp @@ -9,6 +9,7 @@ #if !defined(FUSION_MANIP_05052005_1200) #define FUSION_MANIP_05052005_1200 +#include #include #include #include @@ -19,15 +20,11 @@ #define FUSION_GET_CHAR_TYPE(T) typename T::char_type #define FUSION_GET_TRAITS_TYPE(T) typename T::traits_type -#if defined (BOOST_NO_TEMPLATED_STREAMS) -#define FUSION_STRING_OF_STREAM(Stream) std::string -#else #define FUSION_STRING_OF_STREAM(Stream) \ std::basic_string< \ FUSION_GET_CHAR_TYPE(Stream) \ , FUSION_GET_TRAITS_TYPE(Stream) \ > -#endif //$$$ these should be part of the public API$$$ //$$$ rename tuple_open, tuple_close and tuple_delimiter to @@ -154,55 +151,6 @@ namespace boost { namespace fusion } // detail -#if defined (BOOST_NO_TEMPLATED_STREAMS) - -#define STD_TUPLE_DEFINE_MANIPULATOR(name) \ - namespace detail \ - { \ - struct name##_tag; \ - \ - struct name##_type \ - { \ - typedef std::string string_type; \ - string_type data; \ - name##_type(const string_type& d): data(d) {} \ - }; \ - \ - template \ - Stream& operator>>(Stream& s, const name##_type& m) \ - { \ - string_ios_manip(s).set(m.data); \ - return s; \ - } \ - \ - template \ - Stream& operator<<(Stream& s, const name##_type& m) \ - { \ - string_ios_manip(s).set(m.data); \ - return s; \ - } \ - } - -#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \ - inline detail::name##_type \ - name(const std::string& s) \ - { \ - return detail::name##_type(s); \ - } \ - \ - inline detail::name##_type \ - name(const char* s) \ - { \ - return detail::name##_type(std::string(s)); \ - } \ - \ - inline detail::name##_type \ - name(char c) \ - { \ - return detail::name##_type(std::string(1, c)); \ - } - -#else // defined(BOOST_NO_TEMPLATED_STREAMS) #if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) @@ -299,7 +247,6 @@ namespace boost { namespace fusion } \ } \ -#endif // defined(BOOST_NO_TEMPLATED_STREAMS) STD_TUPLE_DEFINE_MANIPULATOR(tuple_open) STD_TUPLE_DEFINE_MANIPULATOR(tuple_close) diff --git a/3party/boost/boost/fusion/sequence/io/detail/out.hpp b/3party/boost/boost/fusion/sequence/io/detail/out.hpp index 52caf00d7d..7da87a53a4 100644 --- a/3party/boost/boost/fusion/sequence/io/detail/out.hpp +++ b/3party/boost/boost/fusion/sequence/io/detail/out.hpp @@ -9,6 +9,7 @@ #if !defined(FUSION_OUT_05052005_0121) #define FUSION_OUT_05052005_0121 +#include #include #include diff --git a/3party/boost/boost/fusion/sequence/io/in.hpp b/3party/boost/boost/fusion/sequence/io/in.hpp index 73a1fffbff..288c247331 100644 --- a/3party/boost/boost/fusion/sequence/io/in.hpp +++ b/3party/boost/boost/fusion/sequence/io/in.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_IN_05042005_0120) #define BOOST_IN_05042005_0120 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/io/out.hpp b/3party/boost/boost/fusion/sequence/io/out.hpp index 988a39856a..5c4637d57b 100644 --- a/3party/boost/boost/fusion/sequence/io/out.hpp +++ b/3party/boost/boost/fusion/sequence/io/out.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_OUT_05042005_0120) #define BOOST_OUT_05042005_0120 +#include #include #include #include diff --git a/3party/boost/boost/fusion/sequence/sequence_facade.hpp b/3party/boost/boost/fusion/sequence/sequence_facade.hpp index fd6b095eab..ff578a00c5 100644 --- a/3party/boost/boost/fusion/sequence/sequence_facade.hpp +++ b/3party/boost/boost/fusion/sequence/sequence_facade.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_FACADE_09252006_1044) #define FUSION_SEQUENCE_FACADE_09252006_1044 +#include #include #include diff --git a/3party/boost/boost/fusion/support.hpp b/3party/boost/boost/fusion/support.hpp index 50bf924f9a..11e17eb565 100644 --- a/3party/boost/boost/fusion/support.hpp +++ b/3party/boost/boost/fusion/support.hpp @@ -1,12 +1,13 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_SUPPORT_10022005_0545) #define FUSION_SUPPORT_10022005_0545 +#include #include #include #include diff --git a/3party/boost/boost/fusion/support/as_const.hpp b/3party/boost/boost/fusion/support/as_const.hpp index bb2a96a65d..ed535970c3 100644 --- a/3party/boost/boost/fusion/support/as_const.hpp +++ b/3party/boost/boost/fusion/support/as_const.hpp @@ -16,6 +16,7 @@ namespace boost { namespace fusion { namespace extension // such contexts with calls to this function. Users can // specialize this function for their own wrappers. template + BOOST_FUSION_GPU_ENABLED const T& as_const(const T& obj) { return obj; diff --git a/3party/boost/boost/fusion/support/category_of.hpp b/3party/boost/boost/fusion/support/category_of.hpp index 805d895ba2..6bdf6d0291 100644 --- a/3party/boost/boost/fusion/support/category_of.hpp +++ b/3party/boost/boost/fusion/support/category_of.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_CATEGORY_OF_07202005_0308) #define FUSION_CATEGORY_OF_07202005_0308 +#include #include #include #include diff --git a/3party/boost/boost/spirit/home/phoenix/function.hpp b/3party/boost/boost/fusion/support/config.hpp similarity index 56% rename from 3party/boost/boost/spirit/home/phoenix/function.hpp rename to 3party/boost/boost/fusion/support/config.hpp index 5309d9af3f..16e38f9587 100644 --- a/3party/boost/boost/spirit/home/phoenix/function.hpp +++ b/3party/boost/boost/fusion/support/config.hpp @@ -1,13 +1,16 @@ /*============================================================================= - Copyright (c) 2001-2007 Joel de Guzman + Copyright (c) 2014 Eric Niebler Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#ifndef PHOENIX_FUNCTION_HPP -#define PHOENIX_FUNCTION_HPP +#if !defined(FUSION_SUPPORT_CONFIG_01092014_1718) +#define FUSION_SUPPORT_CONFIG_01092014_1718 -#include -#include +#include + +#ifndef BOOST_FUSION_GPU_ENABLED +#define BOOST_FUSION_GPU_ENABLED BOOST_GPU_ENABLED +#endif #endif diff --git a/3party/boost/boost/fusion/support/deduce.hpp b/3party/boost/boost/fusion/support/deduce.hpp index 3a7231bdf1..8d53115ffc 100644 --- a/3party/boost/boost/fusion/support/deduce.hpp +++ b/3party/boost/boost/fusion/support/deduce.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_SUPPORT_DEDUCE_HPP_INCLUDED) #define BOOST_FUSION_SUPPORT_DEDUCE_HPP_INCLUDED +#include #include namespace boost { namespace fusion { namespace traits diff --git a/3party/boost/boost/fusion/support/deduce_sequence.hpp b/3party/boost/boost/fusion/support/deduce_sequence.hpp index ce02a3cd0d..24f4e2d821 100644 --- a/3party/boost/boost/fusion/support/deduce_sequence.hpp +++ b/3party/boost/boost/fusion/support/deduce_sequence.hpp @@ -9,6 +9,7 @@ #if !defined(BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED) #define BOOST_FUSION_SUPPORT_DEDUCE_SEQUENCE_HPP_INCLUDED +#include #include #include #include @@ -32,8 +33,9 @@ namespace boost { namespace fusion { namespace traits { }; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template + BOOST_FUSION_GPU_ENABLED typename result< deducer(T) >::type operator()(T&&) const; #endif diff --git a/3party/boost/boost/fusion/support/detail/access.hpp b/3party/boost/boost/fusion/support/detail/access.hpp index ced7cea18b..ab88538314 100644 --- a/3party/boost/boost/fusion/support/detail/access.hpp +++ b/3party/boost/boost/fusion/support/detail/access.hpp @@ -1,12 +1,13 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman - Distributed under the Boost Software License, Version 1.0. (See accompanying + Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #if !defined(FUSION_ACCESS_04182005_0737) #define FUSION_ACCESS_04182005_0737 +#include #include #include @@ -21,10 +22,10 @@ namespace boost { namespace fusion { namespace detail template struct cref_result { - typedef typename + typedef typename add_reference< typename add_const::type - >::type + >::type type; }; @@ -35,7 +36,7 @@ namespace boost { namespace fusion { namespace detail }; template - struct call_param + struct call_param { typedef T& type; }; diff --git a/3party/boost/boost/fusion/support/detail/as_fusion_element.hpp b/3party/boost/boost/fusion/support/detail/as_fusion_element.hpp index 96cf2d004e..628dca4d16 100644 --- a/3party/boost/boost/fusion/support/detail/as_fusion_element.hpp +++ b/3party/boost/boost/fusion/support/detail/as_fusion_element.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_AS_FUSION_ELEMENT_05052005_0338) #define FUSION_AS_FUSION_ELEMENT_05052005_0338 +#include #include namespace boost { namespace fusion { namespace detail diff --git a/3party/boost/boost/fusion/support/detail/is_mpl_sequence.hpp b/3party/boost/boost/fusion/support/detail/is_mpl_sequence.hpp index 376afc281c..1c485f91c5 100644 --- a/3party/boost/boost/fusion/support/detail/is_mpl_sequence.hpp +++ b/3party/boost/boost/fusion/support/detail/is_mpl_sequence.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105) #define FUSION_DETAIL_IS_MPL_SEQUENCE_29122006_1105 +#include #include #include #include diff --git a/3party/boost/boost/fusion/support/detail/pp_round.hpp b/3party/boost/boost/fusion/support/detail/pp_round.hpp index e1a6161166..6c43b66f11 100644 --- a/3party/boost/boost/fusion/support/detail/pp_round.hpp +++ b/3party/boost/boost/fusion/support/detail/pp_round.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_BOOST_FUSION_SUPPORT_PP_ROUND_HPP #define BOOST_BOOST_FUSION_SUPPORT_PP_ROUND_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/support/detail/segmented_fold_until_impl.hpp b/3party/boost/boost/fusion/support/detail/segmented_fold_until_impl.hpp index 08096c16ae..514e8d950b 100644 --- a/3party/boost/boost/fusion/support/detail/segmented_fold_until_impl.hpp +++ b/3party/boost/boost/fusion/support/detail/segmented_fold_until_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_FOLD_UNTIL_IMPL_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_FOLD_UNTIL_IMPL_HPP_INCLUDED +#include #include #include #include @@ -65,6 +66,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result_of::make_segmented_iterator::type make_segmented_iterator(Cur const& cur, Context const& context) { @@ -119,6 +121,7 @@ namespace boost { namespace fusion typedef iterator_range range_type; typedef cons type; + BOOST_FUSION_GPU_ENABLED static type call(Cur const& cur, End const& end, Context const& context) { return cons(range_type(cur, end), context); @@ -167,6 +170,7 @@ namespace boost { namespace fusion typedef typename impl::type type; typedef typename impl::continue_type continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, State const& state, Context const& context, Fun const& fun) { return impl::call(fusion::segments(seq), state, context, fun); @@ -188,6 +192,7 @@ namespace boost { namespace fusion typedef typename apply_type::type type; typedef typename apply_type::continue_type continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq, State const& state, Context const& context, Fun const& fun) { return apply_type::call(seq, state, context, fun); @@ -269,12 +274,14 @@ namespace boost { namespace fusion >::type continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Begin const& beg, End const& end, State const& state , Context const& context, Fun const& fun) { return call(beg, end, state, context, fun, typename fold_recurse_impl::continue_type()); } + BOOST_FUSION_GPU_ENABLED static type call(Begin const& beg, End const& end, State const& state , Context const& context, Fun const& fun, mpl::true_) // continue { @@ -290,6 +297,7 @@ namespace boost { namespace fusion , fun); } + BOOST_FUSION_GPU_ENABLED static type call(Begin const& beg, End const& end, State const& state , Context const& context, Fun const& fun, mpl::false_) // break { @@ -317,6 +325,7 @@ namespace boost { namespace fusion typedef typename impl::type type; typedef typename impl::continue_type continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Begin const& beg, End const& end, State const& state , Context const& context, Fun const& fun) { @@ -342,6 +351,7 @@ namespace boost { namespace fusion typedef typename impl::type type; typedef typename impl::continue_type continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Begin const& beg, End const& end, State const& state , Context const& context, Fun const& fun) { @@ -355,6 +365,7 @@ namespace boost { namespace fusion typedef State type; typedef mpl::true_ continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Begin const&, End const&, State const& state , Context const&, Fun const&) { @@ -378,6 +389,7 @@ namespace boost { namespace fusion typedef typename impl::type type; typedef typename impl::continue_type continue_type; + BOOST_FUSION_GPU_ENABLED static type call(Segments& segs, State const& state, Context const& context, Fun const& fun) { return impl::call(fusion::begin(segs), fusion::end(segs), state, context, fun); diff --git a/3party/boost/boost/fusion/support/is_iterator.hpp b/3party/boost/boost/fusion/support/is_iterator.hpp index f0272d05a9..b48aab8c3f 100644 --- a/3party/boost/boost/fusion/support/is_iterator.hpp +++ b/3party/boost/boost/fusion/support/is_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_IS_ITERATOR_05062005_1219) #define FUSION_IS_ITERATOR_05062005_1219 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/support/is_segmented.hpp b/3party/boost/boost/fusion/support/is_segmented.hpp index 6e62eac430..1326feb346 100644 --- a/3party/boost/boost/fusion/support/is_segmented.hpp +++ b/3party/boost/boost/fusion/support/is_segmented.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_IS_SEGMENTED_03202006_0015) #define FUSION_IS_SEGMENTED_03202006_0015 +#include #include #include diff --git a/3party/boost/boost/fusion/support/is_sequence.hpp b/3party/boost/boost/fusion/support/is_sequence.hpp index 184bbbb6dc..8b5821042f 100644 --- a/3party/boost/boost/fusion/support/is_sequence.hpp +++ b/3party/boost/boost/fusion/support/is_sequence.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_IS_SEQUENCE_05052005_1002) #define FUSION_IS_SEQUENCE_05052005_1002 +#include #include #include #include @@ -61,7 +62,7 @@ namespace boost { namespace fusion struct is_sequence : mpl::bool_< (bool)extension::is_sequence_impl< - typename fusion::detail::tag_of::type + typename fusion::detail::tag_of::type >::template apply::type::value > {}; diff --git a/3party/boost/boost/fusion/support/is_view.hpp b/3party/boost/boost/fusion/support/is_view.hpp index 4ec9e06528..c54e60e19b 100644 --- a/3party/boost/boost/fusion/support/is_view.hpp +++ b/3party/boost/boost/fusion/support/is_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_IS_VIEW_03202006_0015) #define FUSION_IS_VIEW_03202006_0015 +#include #include #include #include diff --git a/3party/boost/boost/fusion/support/iterator_base.hpp b/3party/boost/boost/fusion/support/iterator_base.hpp index ad24d93f6f..d23d05c62e 100644 --- a/3party/boost/boost/fusion/support/iterator_base.hpp +++ b/3party/boost/boost/fusion/support/iterator_base.hpp @@ -7,6 +7,8 @@ #if !defined(FUSION_ITERATOR_BASE_05042005_1008) #define FUSION_ITERATOR_BASE_05042005_1008 +#include + namespace boost { namespace fusion { struct iterator_root {}; @@ -14,12 +16,14 @@ namespace boost { namespace fusion template struct iterator_base : iterator_root { + BOOST_FUSION_GPU_ENABLED Iterator const& cast() const { return static_cast(*this); } + BOOST_FUSION_GPU_ENABLED Iterator& cast() { diff --git a/3party/boost/boost/fusion/support/pair.hpp b/3party/boost/boost/fusion/support/pair.hpp index 11ad1ffe7e..c547926e9b 100644 --- a/3party/boost/boost/fusion/support/pair.hpp +++ b/3party/boost/boost/fusion/support/pair.hpp @@ -8,11 +8,14 @@ #if !defined(FUSION_PAIR_07222005_1203) #define FUSION_PAIR_07222005_1203 +#include #include #include #include #include +#include +#include #if defined (BOOST_MSVC) # pragma warning(push) @@ -25,23 +28,63 @@ namespace boost { namespace fusion template struct pair { + BOOST_FUSION_GPU_ENABLED pair() : second() {} + BOOST_FUSION_GPU_ENABLED + pair(pair const& rhs) + : second(rhs.second) {} + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED + pair(pair&& rhs) + : second(std::forward(rhs.second)) {} +#endif + + BOOST_FUSION_GPU_ENABLED pair(typename detail::call_param::type val) : second(val) {} +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + template + BOOST_FUSION_GPU_ENABLED + pair(Second2&& val + , typename boost::enable_if >::type* /*dummy*/ = 0 + ) : second(std::forward(val)) {} + +#endif + + template + BOOST_FUSION_GPU_ENABLED pair(pair const& rhs) : second(rhs.second) {} template + BOOST_FUSION_GPU_ENABLED pair& operator=(pair const& rhs) { second = rhs.second; return *this; } + BOOST_FUSION_GPU_ENABLED + pair& operator=(pair const& rhs) + { + second = rhs.second; + return *this; + } + +#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) + BOOST_FUSION_GPU_ENABLED + pair& operator=(pair&& rhs) + { + second = std::forward(rhs.second); + return *this; + } +#endif + typedef First first_type; typedef Second second_type; Second second; @@ -70,6 +113,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::make_pair::type make_pair(Second const& val) { @@ -93,6 +137,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline bool operator==(pair const& l, pair const& r) { @@ -100,11 +145,20 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline bool operator!=(pair const& l, pair const& r) { return l.second != r.second; } + + template + BOOST_FUSION_GPU_ENABLED + inline bool + operator<(pair const& l, pair const& r) + { + return l.second < r.second; + } }} #if defined (BOOST_MSVC) diff --git a/3party/boost/boost/fusion/support/segmented_fold_until.hpp b/3party/boost/boost/fusion/support/segmented_fold_until.hpp index 6ea58ac611..8d3ea68219 100644 --- a/3party/boost/boost/fusion/support/segmented_fold_until.hpp +++ b/3party/boost/boost/fusion/support/segmented_fold_until.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_FOLD_UNTIL_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_FOLD_UNTIL_HPP_INCLUDED +#include #include #include #include @@ -20,7 +21,7 @@ namespace boost { namespace fusion { //auto segmented_fold_until(seq, state, fun) //{ - // return first(segmented_fold_until_impl(seq, state, nil, fun)); + // return first(segmented_fold_until_impl(seq, state, nil_, fun)); //} namespace result_of @@ -32,7 +33,7 @@ namespace boost { namespace fusion detail::segmented_fold_until_impl< Sequence , State - , fusion::nil + , fusion::nil_ , Fun > filter; @@ -44,6 +45,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename lazy_disable_if< is_const @@ -55,10 +57,11 @@ namespace boost { namespace fusion typename result_of::segmented_fold_until::filter filter; - return filter::call(seq, state, fusion::nil(), fun); + return filter::call(seq, state, fusion::nil_(), fun); } template + BOOST_FUSION_GPU_ENABLED typename result_of::segmented_fold_until::type segmented_fold_until(Sequence const& seq, State const& state, Fun const& fun) { @@ -66,7 +69,7 @@ namespace boost { namespace fusion typename result_of::segmented_fold_until::filter filter; - return filter::call(seq, state, fusion::nil(), fun); + return filter::call(seq, state, fusion::nil_(), fun); } }} diff --git a/3party/boost/boost/fusion/support/sequence_base.hpp b/3party/boost/boost/fusion/support/sequence_base.hpp index 89affab666..b59121c09b 100644 --- a/3party/boost/boost/fusion/support/sequence_base.hpp +++ b/3party/boost/boost/fusion/support/sequence_base.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_SEQUENCE_BASE_04182005_0737) #define FUSION_SEQUENCE_BASE_04182005_0737 +#include #include namespace boost { namespace fusion @@ -21,18 +22,21 @@ namespace boost { namespace fusion template struct sequence_base { + BOOST_FUSION_GPU_ENABLED Sequence const& derived() const { return static_cast(*this); } + BOOST_FUSION_GPU_ENABLED Sequence& derived() { return static_cast(*this); } + BOOST_FUSION_GPU_ENABLED operator detail::from_sequence_convertible_type()const { return detail::from_sequence_convertible_type(); diff --git a/3party/boost/boost/fusion/support/tag_of.hpp b/3party/boost/boost/fusion/support/tag_of.hpp index a3fef3ba20..61cb3b19ae 100644 --- a/3party/boost/boost/fusion/support/tag_of.hpp +++ b/3party/boost/boost/fusion/support/tag_of.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_TAG_OF_09232005_0845) #define FUSION_TAG_OF_09232005_0845 +#include #include #include #include diff --git a/3party/boost/boost/fusion/support/unused.hpp b/3party/boost/boost/fusion/support/unused.hpp index 8e0d5f2753..b3eec5ce13 100644 --- a/3party/boost/boost/fusion/support/unused.hpp +++ b/3party/boost/boost/fusion/support/unused.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SUPPORT_UNUSED_20070305_1038) #define BOOST_FUSION_SUPPORT_UNUSED_20070305_1038 +#include #include #include @@ -21,16 +22,19 @@ namespace boost { namespace fusion { struct unused_type { + BOOST_FUSION_GPU_ENABLED unused_type() { } template + BOOST_FUSION_GPU_ENABLED unused_type(T const&) { } template + BOOST_FUSION_GPU_ENABLED unused_type const& operator=(T const&) const { @@ -38,18 +42,21 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED unused_type& operator=(T const&) { return *this; } + BOOST_FUSION_GPU_ENABLED unused_type const& operator=(unused_type const&) const { return *this; } + BOOST_FUSION_GPU_ENABLED unused_type& operator=(unused_type const&) { @@ -63,6 +70,7 @@ namespace boost { namespace fusion { struct unused_only { + BOOST_FUSION_GPU_ENABLED unused_only(unused_type const&) {} }; } diff --git a/3party/boost/boost/fusion/tuple.hpp b/3party/boost/boost/fusion/tuple.hpp index 3a4e7d01d4..49dac1d745 100644 --- a/3party/boost/boost/fusion/tuple.hpp +++ b/3party/boost/boost/fusion/tuple.hpp @@ -7,9 +7,11 @@ #if !defined(FUSION_TUPLE_10032005_0806) #define FUSION_TUPLE_10032005_0806 +#include #include #include #include #include #endif + diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp index 679af2f607..6f3c826e2b 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple10.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple::type> make_tuple(T0 const& _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp index 6a3a733c4f..89f23ccb59 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple20.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple::type> make_tuple(T0 const& _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -79,6 +89,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -86,6 +97,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -93,6 +105,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -100,6 +113,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -107,6 +121,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -114,6 +129,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -121,6 +137,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -128,6 +145,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -135,6 +153,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -142,6 +161,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp index 358ed8094c..7bbd06ca6c 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple30.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple::type> make_tuple(T0 const& _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -79,6 +89,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -86,6 +97,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -93,6 +105,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -100,6 +113,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -107,6 +121,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -114,6 +129,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -121,6 +137,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -128,6 +145,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -135,6 +153,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -142,6 +161,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -149,6 +169,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -156,6 +177,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -163,6 +185,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -170,6 +193,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -177,6 +201,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -184,6 +209,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -191,6 +217,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -198,6 +225,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -205,6 +233,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -212,6 +241,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp index 420c41e465..46280e35df 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple40.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple::type> make_tuple(T0 const& _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -79,6 +89,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -86,6 +97,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -93,6 +105,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -100,6 +113,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -107,6 +121,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -114,6 +129,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -121,6 +137,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -128,6 +145,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -135,6 +153,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -142,6 +161,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -149,6 +169,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -156,6 +177,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -163,6 +185,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -170,6 +193,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -177,6 +201,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -184,6 +209,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -191,6 +217,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -198,6 +225,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -205,6 +233,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -212,6 +241,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -219,6 +249,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -226,6 +257,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -233,6 +265,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -240,6 +273,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -247,6 +281,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -254,6 +289,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -261,6 +297,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -268,6 +305,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -275,6 +313,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -282,6 +321,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp index f387400fa4..748631d9e8 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/make_tuple50.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple::type> make_tuple(T0 const& _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9) { @@ -79,6 +89,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10) { @@ -86,6 +97,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11) { @@ -93,6 +105,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12) { @@ -100,6 +113,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13) { @@ -107,6 +121,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14) { @@ -114,6 +129,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15) { @@ -121,6 +137,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16) { @@ -128,6 +145,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17) { @@ -135,6 +153,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18) { @@ -142,6 +161,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19) { @@ -149,6 +169,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20) { @@ -156,6 +177,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21) { @@ -163,6 +185,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22) { @@ -170,6 +193,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23) { @@ -177,6 +201,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24) { @@ -184,6 +209,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25) { @@ -191,6 +217,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26) { @@ -198,6 +225,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27) { @@ -205,6 +233,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28) { @@ -212,6 +241,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29) { @@ -219,6 +249,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30) { @@ -226,6 +257,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31) { @@ -233,6 +265,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32) { @@ -240,6 +273,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33) { @@ -247,6 +281,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34) { @@ -254,6 +289,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35) { @@ -261,6 +297,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36) { @@ -268,6 +305,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37) { @@ -275,6 +313,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38) { @@ -282,6 +321,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39) { @@ -289,6 +329,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40) { @@ -296,6 +337,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41) { @@ -303,6 +345,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42) { @@ -310,6 +353,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43) { @@ -317,6 +361,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44) { @@ -324,6 +369,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45) { @@ -331,6 +377,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46) { @@ -338,6 +385,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47) { @@ -345,6 +393,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48) { @@ -352,6 +401,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48); } template + BOOST_FUSION_GPU_ENABLED inline tuple::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type , typename detail::as_fusion_element::type> make_tuple(T0 const& _0 , T1 const& _1 , T2 const& _2 , T3 const& _3 , T4 const& _4 , T5 const& _5 , T6 const& _6 , T7 const& _7 , T8 const& _8 , T9 const& _9 , T10 const& _10 , T11 const& _11 , T12 const& _12 , T13 const& _13 , T14 const& _14 , T15 const& _15 , T16 const& _16 , T17 const& _17 , T18 const& _18 , T19 const& _19 , T20 const& _20 , T21 const& _21 , T22 const& _22 , T23 const& _23 , T24 const& _24 , T25 const& _25 , T26 const& _26 , T27 const& _27 , T28 const& _28 , T29 const& _29 , T30 const& _30 , T31 const& _31 , T32 const& _32 , T33 const& _33 , T34 const& _34 , T35 const& _35 , T36 const& _36 , T37 const& _37 , T38 const& _38 , T39 const& _39 , T40 const& _40 , T41 const& _41 , T42 const& _42 , T43 const& _43 , T44 const& _44 , T45 const& _45 , T46 const& _46 , T47 const& _47 , T48 const& _48 , T49 const& _49) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple.hpp index 8f9b94a5cd..3fd0e18bec 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple.hpp @@ -18,4 +18,5 @@ #include #else #error "FUSION_MAX_VECTOR_SIZE out of bounds for preprocessed headers" -#endif \ No newline at end of file +#endif + diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple10.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple10.hpp index dc0b8de69c..87b64e6711 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple10.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple10.hpp @@ -14,136 +14,170 @@ namespace boost { namespace fusion typedef vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> base_type; - tuple() + BOOST_FUSION_GPU_ENABLED tuple() : base_type() {} - tuple(tuple const& rhs) + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple(std::pair const& rhs) : base_type(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit tuple(typename detail::call_param::type _0) : base_type(_0) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1) : base_type(_0 , _1) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : base_type(_0 , _1 , _2) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : base_type(_0 , _1 , _2 , _3) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : base_type(_0 , _1 , _2 , _3 , _4) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : base_type(_0 , _1 , _2 , _3 , _4 , _5) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(T const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(std::pair const& rhs) { base_type::operator=(rhs); @@ -155,6 +189,7 @@ namespace boost { namespace fusion template struct tuple_element : result_of::value_at_c {}; template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -165,6 +200,7 @@ namespace boost { namespace fusion return at_c(tup); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at_c::type get(Tuple const& tup) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple20.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple20.hpp index 7ce38594d0..210a13ad25 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple20.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple20.hpp @@ -14,246 +14,310 @@ namespace boost { namespace fusion typedef vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> base_type; - tuple() + BOOST_FUSION_GPU_ENABLED tuple() : base_type() {} - tuple(tuple const& rhs) + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple(std::pair const& rhs) : base_type(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit tuple(typename detail::call_param::type _0) : base_type(_0) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1) : base_type(_0 , _1) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : base_type(_0 , _1 , _2) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : base_type(_0 , _1 , _2 , _3) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : base_type(_0 , _1 , _2 , _3 , _4) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : base_type(_0 , _1 , _2 , _3 , _4 , _5) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(T const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(std::pair const& rhs) { base_type::operator=(rhs); @@ -265,6 +329,7 @@ namespace boost { namespace fusion template struct tuple_element : result_of::value_at_c {}; template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -275,6 +340,7 @@ namespace boost { namespace fusion return at_c(tup); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at_c::type get(Tuple const& tup) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple30.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple30.hpp index d0652931ed..33a3bee699 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple30.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple30.hpp @@ -14,356 +14,450 @@ namespace boost { namespace fusion typedef vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> base_type; - tuple() + BOOST_FUSION_GPU_ENABLED tuple() : base_type() {} - tuple(tuple const& rhs) + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple(std::pair const& rhs) : base_type(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit tuple(typename detail::call_param::type _0) : base_type(_0) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1) : base_type(_0 , _1) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : base_type(_0 , _1 , _2) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : base_type(_0 , _1 , _2 , _3) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : base_type(_0 , _1 , _2 , _3 , _4) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : base_type(_0 , _1 , _2 , _3 , _4 , _5) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(T const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(std::pair const& rhs) { base_type::operator=(rhs); @@ -375,6 +469,7 @@ namespace boost { namespace fusion template struct tuple_element : result_of::value_at_c {}; template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -385,6 +480,7 @@ namespace boost { namespace fusion return at_c(tup); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at_c::type get(Tuple const& tup) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple40.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple40.hpp index fca8b24f84..4292d3a66c 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple40.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple40.hpp @@ -14,466 +14,590 @@ namespace boost { namespace fusion typedef vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> base_type; - tuple() + BOOST_FUSION_GPU_ENABLED tuple() : base_type() {} - tuple(tuple const& rhs) + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple(std::pair const& rhs) : base_type(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit tuple(typename detail::call_param::type _0) : base_type(_0) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1) : base_type(_0 , _1) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : base_type(_0 , _1 , _2) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : base_type(_0 , _1 , _2 , _3) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : base_type(_0 , _1 , _2 , _3 , _4) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : base_type(_0 , _1 , _2 , _3 , _4 , _5) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(T const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(std::pair const& rhs) { base_type::operator=(rhs); @@ -485,6 +609,7 @@ namespace boost { namespace fusion template struct tuple_element : result_of::value_at_c {}; template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -495,6 +620,7 @@ namespace boost { namespace fusion return at_c(tup); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at_c::type get(Tuple const& tup) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple50.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple50.hpp index 34ba8d4a02..c58682754f 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple50.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple50.hpp @@ -14,576 +14,730 @@ namespace boost { namespace fusion typedef vector< T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> base_type; - tuple() + BOOST_FUSION_GPU_ENABLED tuple() : base_type() {} - tuple(tuple const& rhs) + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple(std::pair const& rhs) : base_type(rhs) {} + BOOST_FUSION_GPU_ENABLED explicit tuple(typename detail::call_param::type _0) : base_type(_0) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1) : base_type(_0 , _1) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2) : base_type(_0 , _1 , _2) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3) : base_type(_0 , _1 , _2 , _3) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4) : base_type(_0 , _1 , _2 , _3 , _4) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5) : base_type(_0 , _1 , _2 , _3 , _4 , _5) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple(typename detail::call_param::type _0 , typename detail::call_param::type _1 , typename detail::call_param::type _2 , typename detail::call_param::type _3 , typename detail::call_param::type _4 , typename detail::call_param::type _5 , typename detail::call_param::type _6 , typename detail::call_param::type _7 , typename detail::call_param::type _8 , typename detail::call_param::type _9 , typename detail::call_param::type _10 , typename detail::call_param::type _11 , typename detail::call_param::type _12 , typename detail::call_param::type _13 , typename detail::call_param::type _14 , typename detail::call_param::type _15 , typename detail::call_param::type _16 , typename detail::call_param::type _17 , typename detail::call_param::type _18 , typename detail::call_param::type _19 , typename detail::call_param::type _20 , typename detail::call_param::type _21 , typename detail::call_param::type _22 , typename detail::call_param::type _23 , typename detail::call_param::type _24 , typename detail::call_param::type _25 , typename detail::call_param::type _26 , typename detail::call_param::type _27 , typename detail::call_param::type _28 , typename detail::call_param::type _29 , typename detail::call_param::type _30 , typename detail::call_param::type _31 , typename detail::call_param::type _32 , typename detail::call_param::type _33 , typename detail::call_param::type _34 , typename detail::call_param::type _35 , typename detail::call_param::type _36 , typename detail::call_param::type _37 , typename detail::call_param::type _38 , typename detail::call_param::type _39 , typename detail::call_param::type _40 , typename detail::call_param::type _41 , typename detail::call_param::type _42 , typename detail::call_param::type _43 , typename detail::call_param::type _44 , typename detail::call_param::type _45 , typename detail::call_param::type _46 , typename detail::call_param::type _47 , typename detail::call_param::type _48 , typename detail::call_param::type _49) : base_type(_0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48 , _49) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(T const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); return *this; } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(std::pair const& rhs) { base_type::operator=(rhs); @@ -595,6 +749,7 @@ namespace boost { namespace fusion template struct tuple_element : result_of::value_at_c {}; template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -605,6 +760,7 @@ namespace boost { namespace fusion return at_c(tup); } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at_c::type get(Tuple const& tup) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp index be8c547871..e5d27a7e66 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie10.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp index f14060ec75..5e668a3120 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie20.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -79,6 +89,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -86,6 +97,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -93,6 +105,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -100,6 +113,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -107,6 +121,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -114,6 +129,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -121,6 +137,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -128,6 +145,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -135,6 +153,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -142,6 +161,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp index 513c78069d..23e602312d 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie30.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -79,6 +89,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -86,6 +97,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -93,6 +105,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -100,6 +113,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -107,6 +121,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -114,6 +129,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -121,6 +137,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -128,6 +145,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -135,6 +153,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -142,6 +161,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -149,6 +169,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -156,6 +177,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -163,6 +185,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -170,6 +193,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -177,6 +201,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -184,6 +209,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -191,6 +217,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -198,6 +225,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -205,6 +233,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -212,6 +241,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp index be56add684..2d020ec0cf 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie40.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -79,6 +89,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -86,6 +97,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -93,6 +105,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -100,6 +113,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -107,6 +121,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -114,6 +129,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -121,6 +137,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -128,6 +145,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -135,6 +153,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -142,6 +161,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -149,6 +169,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -156,6 +177,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -163,6 +185,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -170,6 +193,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -177,6 +201,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -184,6 +209,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -191,6 +217,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -198,6 +225,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -205,6 +233,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -212,6 +241,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { @@ -219,6 +249,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30) { @@ -226,6 +257,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31) { @@ -233,6 +265,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32) { @@ -240,6 +273,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33) { @@ -247,6 +281,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34) { @@ -254,6 +289,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35) { @@ -261,6 +297,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36) { @@ -268,6 +305,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37) { @@ -275,6 +313,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38) { @@ -282,6 +321,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39) { diff --git a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp index 164db79761..e30de17c6c 100644 --- a/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp +++ b/3party/boost/boost/fusion/tuple/detail/preprocessed/tuple_tie50.hpp @@ -9,6 +9,7 @@ namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0) { @@ -16,6 +17,7 @@ namespace boost { namespace fusion _0); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1) { @@ -23,6 +25,7 @@ namespace boost { namespace fusion _0 , _1); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2) { @@ -30,6 +33,7 @@ namespace boost { namespace fusion _0 , _1 , _2); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3) { @@ -37,6 +41,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4) { @@ -44,6 +49,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5) { @@ -51,6 +57,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6) { @@ -58,6 +65,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7) { @@ -65,6 +73,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8) { @@ -72,6 +81,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9) { @@ -79,6 +89,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10) { @@ -86,6 +97,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11) { @@ -93,6 +105,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12) { @@ -100,6 +113,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13) { @@ -107,6 +121,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14) { @@ -114,6 +129,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15) { @@ -121,6 +137,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16) { @@ -128,6 +145,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17) { @@ -135,6 +153,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18) { @@ -142,6 +161,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19) { @@ -149,6 +169,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20) { @@ -156,6 +177,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21) { @@ -163,6 +185,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22) { @@ -170,6 +193,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23) { @@ -177,6 +201,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24) { @@ -184,6 +209,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25) { @@ -191,6 +217,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26) { @@ -198,6 +225,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27) { @@ -205,6 +233,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28) { @@ -212,6 +241,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29) { @@ -219,6 +249,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30) { @@ -226,6 +257,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31) { @@ -233,6 +265,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32) { @@ -240,6 +273,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33) { @@ -247,6 +281,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34) { @@ -254,6 +289,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35) { @@ -261,6 +297,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36) { @@ -268,6 +305,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37) { @@ -275,6 +313,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38) { @@ -282,6 +321,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39) { @@ -289,6 +329,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40) { @@ -296,6 +337,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41) { @@ -303,6 +345,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42) { @@ -310,6 +353,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43) { @@ -317,6 +361,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44) { @@ -324,6 +369,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45) { @@ -331,6 +377,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46) { @@ -338,6 +385,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47) { @@ -345,6 +393,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48) { @@ -352,6 +401,7 @@ namespace boost { namespace fusion _0 , _1 , _2 , _3 , _4 , _5 , _6 , _7 , _8 , _9 , _10 , _11 , _12 , _13 , _14 , _15 , _16 , _17 , _18 , _19 , _20 , _21 , _22 , _23 , _24 , _25 , _26 , _27 , _28 , _29 , _30 , _31 , _32 , _33 , _34 , _35 , _36 , _37 , _38 , _39 , _40 , _41 , _42 , _43 , _44 , _45 , _46 , _47 , _48); } template + BOOST_FUSION_GPU_ENABLED inline tuple tie(T0 & _0 , T1 & _1 , T2 & _2 , T3 & _3 , T4 & _4 , T5 & _5 , T6 & _6 , T7 & _7 , T8 & _8 , T9 & _9 , T10 & _10 , T11 & _11 , T12 & _12 , T13 & _13 , T14 & _14 , T15 & _15 , T16 & _16 , T17 & _17 , T18 & _18 , T19 & _19 , T20 & _20 , T21 & _21 , T22 & _22 , T23 & _23 , T24 & _24 , T25 & _25 , T26 & _26 , T27 & _27 , T28 & _28 , T29 & _29 , T30 & _30 , T31 & _31 , T32 & _32 , T33 & _33 , T34 & _34 , T35 & _35 , T36 & _36 , T37 & _37 , T38 & _38 , T39 & _39 , T40 & _40 , T41 & _41 , T42 & _42 , T43 & _43 , T44 & _44 , T45 & _45 , T46 & _46 , T47 & _47 , T48 & _48 , T49 & _49) { diff --git a/3party/boost/boost/fusion/tuple/detail/tuple_expand.hpp b/3party/boost/boost/fusion/tuple/detail/tuple_expand.hpp index e23c2e4fe0..026ab8f492 100644 --- a/3party/boost/boost/fusion/tuple/detail/tuple_expand.hpp +++ b/3party/boost/boost/fusion/tuple/detail/tuple_expand.hpp @@ -27,6 +27,7 @@ #define N BOOST_PP_ITERATION() + BOOST_FUSION_GPU_ENABLED #if N == 1 explicit #endif @@ -35,10 +36,12 @@ : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {} template + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); diff --git a/3party/boost/boost/fusion/tuple/make_tuple.hpp b/3party/boost/boost/fusion/tuple/make_tuple.hpp index b2defa27bf..9c3bb45ed9 100644 --- a/3party/boost/boost/fusion/tuple/make_tuple.hpp +++ b/3party/boost/boost/fusion/tuple/make_tuple.hpp @@ -16,7 +16,7 @@ namespace boost { namespace fusion { - inline tuple<> + BOOST_FUSION_GPU_ENABLED inline tuple<> make_tuple() { return tuple<>(); @@ -73,6 +73,7 @@ namespace boost { namespace fusion #define N BOOST_PP_ITERATION() template + BOOST_FUSION_GPU_ENABLED inline tuple make_tuple(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _)) { diff --git a/3party/boost/boost/fusion/tuple/tuple.hpp b/3party/boost/boost/fusion/tuple/tuple.hpp index 62350721a0..953f2b6664 100644 --- a/3party/boost/boost/fusion/tuple/tuple.hpp +++ b/3party/boost/boost/fusion/tuple/tuple.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_TUPLE_10032005_0810) #define FUSION_TUPLE_10032005_0810 +#include #include #include #include @@ -47,25 +48,28 @@ namespace boost { namespace fusion BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> base_type; - tuple() + BOOST_FUSION_GPU_ENABLED tuple() : base_type() {} - tuple(tuple const& rhs) + BOOST_FUSION_GPU_ENABLED tuple(tuple const& rhs) : base_type(rhs) {} template + BOOST_FUSION_GPU_ENABLED tuple(std::pair const& rhs) : base_type(rhs) {} #include template + BOOST_FUSION_GPU_ENABLED tuple& operator=(T const& rhs) { base_type::operator=(rhs); return *this; } + BOOST_FUSION_GPU_ENABLED tuple& operator=(tuple const& rhs) { base_type::operator=(rhs); @@ -73,6 +77,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED tuple& operator=(std::pair const& rhs) { base_type::operator=(rhs); @@ -87,6 +92,7 @@ namespace boost { namespace fusion struct tuple_element : result_of::value_at_c {}; template + BOOST_FUSION_GPU_ENABLED inline typename lazy_disable_if< is_const @@ -98,6 +104,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED inline typename result_of::at_c::type get(Tuple const& tup) { @@ -112,3 +119,4 @@ namespace boost { namespace fusion #endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES #endif + diff --git a/3party/boost/boost/fusion/tuple/tuple_fwd.hpp b/3party/boost/boost/fusion/tuple/tuple_fwd.hpp index e4dbbd2802..68969183d1 100644 --- a/3party/boost/boost/fusion/tuple/tuple_fwd.hpp +++ b/3party/boost/boost/fusion/tuple/tuple_fwd.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_TUPLE_FORWARD_10032005_0956) #define FUSION_TUPLE_FORWARD_10032005_0956 +#include #include #include @@ -48,3 +49,4 @@ namespace boost { namespace fusion #endif // BOOST_FUSION_DONT_USE_PREPROCESSED_FILES #endif + diff --git a/3party/boost/boost/fusion/tuple/tuple_tie.hpp b/3party/boost/boost/fusion/tuple/tuple_tie.hpp index 726a5528a5..eeb0c15888 100644 --- a/3party/boost/boost/fusion/tuple/tuple_tie.hpp +++ b/3party/boost/boost/fusion/tuple/tuple_tie.hpp @@ -63,6 +63,7 @@ namespace boost { namespace fusion #define N BOOST_PP_ITERATION() template + BOOST_FUSION_GPU_ENABLED inline tuple tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _)) { diff --git a/3party/boost/boost/fusion/view.hpp b/3party/boost/boost/fusion/view.hpp index 36ecf1cd1f..4cb49122d2 100644 --- a/3party/boost/boost/fusion/view.hpp +++ b/3party/boost/boost/fusion/view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_10022005_0620) #define FUSION_SEQUENCE_VIEW_10022005_0620 +#include #include #include #include @@ -15,5 +16,6 @@ #include #include #include +#include #endif diff --git a/3party/boost/boost/fusion/view/detail/strictest_traversal.hpp b/3party/boost/boost/fusion/view/detail/strictest_traversal.hpp index 7b7c976048..4092ea4da6 100644 --- a/3party/boost/boost/fusion/view/detail/strictest_traversal.hpp +++ b/3party/boost/boost/fusion/view/detail/strictest_traversal.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_STRICTEST_TRAVERSAL_20060123_2101) #define FUSION_STRICTEST_TRAVERSAL_20060123_2101 +#include #include #include #include @@ -56,8 +57,9 @@ namespace boost { namespace fusion }; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(StrictestSoFar&&, Next&&) const; #endif diff --git a/3party/boost/boost/fusion/view/filter_view.hpp b/3party/boost/boost/fusion/view/filter_view.hpp index 3986d7d9b1..2226026b6b 100644 --- a/3party/boost/boost/fusion/view/filter_view.hpp +++ b/3party/boost/boost/fusion/view/filter_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608) #define FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608 +#include #include #include diff --git a/3party/boost/boost/fusion/view/filter_view/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/begin_impl.hpp index cb1a08c687..89f67d02ad 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/begin_impl.hpp @@ -31,6 +31,7 @@ namespace boost { namespace fusion typedef typename Sequence::category category; typedef filter_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/filter_view/detail/deref_data_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/deref_data_impl.hpp index bf721b5a5a..ba8631f501 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/deref_data_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/deref_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_DEREF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_DEREF_DATA_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension @@ -25,6 +26,7 @@ namespace boost { namespace fusion { namespace extension result_of::deref_data::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/view/filter_view/detail/deref_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/deref_impl.hpp index c535b7f272..d122dc5378 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_05062005_0905) #define FUSION_DEREF_IMPL_05062005_0905 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/filter_view/detail/end_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/end_impl.hpp index 195cb0a40b..fee9f6d459 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/end_impl.hpp @@ -30,6 +30,7 @@ namespace boost { namespace fusion typedef typename Sequence::category category; typedef filter_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/filter_view/detail/key_of_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/key_of_impl.hpp index 09d9112b1f..4ab69a6950 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/key_of_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/key_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_KEY_OF_IMPL_HPP #define BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_KEY_OF_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/view/filter_view/detail/next_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/next_impl.hpp index ae1e0f0dae..0091e897ea 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_06052005_0900) #define FUSION_NEXT_IMPL_06052005_0900 +#include #include #include #include @@ -62,6 +63,7 @@ namespace boost { namespace fusion category, typename filter::type, last_type, pred_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/filter_view/detail/size_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/size_impl.hpp index 158ee01363..f6cf17cb32 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/size_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/size_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SIZE_IMPL_09232005_1058) #define FUSION_SIZE_IMPL_09232005_1058 +#include #include #include #include diff --git a/3party/boost/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp index 38d1bdc063..a845ac2a5c 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/view/filter_view/detail/value_of_impl.hpp b/3party/boost/boost/fusion/view/filter_view/detail/value_of_impl.hpp index ad4ba611bc..b460a48bc1 100644 --- a/3party/boost/boost/fusion/view/filter_view/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/view/filter_view/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_05062005_0857) #define FUSION_VALUE_OF_IMPL_05062005_0857 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/filter_view/filter_view.hpp b/3party/boost/boost/fusion/view/filter_view/filter_view.hpp index 6b6ad4b718..dd710fabd1 100644 --- a/3party/boost/boost/fusion/view/filter_view/filter_view.hpp +++ b/3party/boost/boost/fusion/view/filter_view/filter_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_FILTER_VIEW_HPP) #define FUSION_SEQUENCE_FILTER_VIEW_HPP +#include #include #include #include @@ -45,11 +46,14 @@ namespace boost { namespace fusion typedef typename result_of::end::type last_type; typedef Pred pred_type; + BOOST_FUSION_GPU_ENABLED filter_view(Sequence& in_seq) : seq(in_seq) {} + BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq); } + BOOST_FUSION_GPU_ENABLED last_type last() const { return fusion::end(seq); } typename mpl::if_, Sequence, Sequence&>::type seq; diff --git a/3party/boost/boost/fusion/view/filter_view/filter_view_iterator.hpp b/3party/boost/boost/fusion/view/filter_view/filter_view_iterator.hpp index 66975bd5a1..14aaa46005 100644 --- a/3party/boost/boost/fusion/view/filter_view/filter_view_iterator.hpp +++ b/3party/boost/boost/fusion/view/filter_view/filter_view_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_FILTER_VIEW_ITERATOR_05062005_0849) #define FUSION_FILTER_VIEW_ITERATOR_05062005_0849 +#include #include #include #include @@ -54,6 +55,7 @@ namespace boost { namespace fusion typedef last_iter last_type; typedef Pred pred_type; + BOOST_FUSION_GPU_ENABLED filter_iterator(First const& in_first) : first(filter::iter_call(first_converter::call(in_first))) {} diff --git a/3party/boost/boost/fusion/view/flatten_view.hpp b/3party/boost/boost/fusion/view/flatten_view.hpp new file mode 100644 index 0000000000..dcef08dec7 --- /dev/null +++ b/3party/boost/boost/fusion/view/flatten_view.hpp @@ -0,0 +1,15 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2013 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef BOOST_FUSION_SEQUENCE_FLATTEN_VIEW_HPP_INCLUDED +#define BOOST_FUSION_SEQUENCE_FLATTEN_VIEW_HPP_INCLUDED + + +#include +#include + + +#endif diff --git a/3party/boost/boost/fusion/view/flatten_view/flatten_view.hpp b/3party/boost/boost/fusion/view/flatten_view/flatten_view.hpp new file mode 100644 index 0000000000..aa47240771 --- /dev/null +++ b/3party/boost/boost/fusion/view/flatten_view/flatten_view.hpp @@ -0,0 +1,127 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2013 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef BOOST_FUSION_FLATTEN_VIEW_HPP_INCLUDED +#define BOOST_FUSION_FLATTEN_VIEW_HPP_INCLUDED + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace boost { namespace fusion +{ + struct forward_traversal_tag; + struct flatten_view_tag; + + template + struct flatten_view + : sequence_base > + { + typedef flatten_view_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + typedef forward_traversal_tag category; + + typedef Sequence sequence_type; + typedef typename result_of::begin::type first_type; + typedef typename result_of::end::type last_type; + + explicit flatten_view(Sequence& seq) + : seq(seq) + {} + + first_type first() const { return fusion::begin(seq); } + last_type last() const { return fusion::end(seq); } + + typename mpl::if_, Sequence, Sequence&>::type seq; + }; +}} + +namespace boost { namespace fusion { namespace extension +{ + template<> + struct begin_impl + { + template + struct apply + { + typedef typename Sequence::first_type first_type; + + typedef typename + result_of::begin< + mpl::single_view< + typename Sequence::sequence_type> >::type + root_iterator; + + typedef + detail::seek_descent + seek_descent; + + typedef typename seek_descent::type type; + + static inline + type call(Sequence& seq) + { + return seek_descent::apply(root_iterator(), seq.first()); + } + }; + }; + + template<> + struct end_impl + { + template + struct apply + { + typedef typename Sequence::last_type last_type; + + typedef typename + result_of::end< + mpl::single_view< + typename Sequence::sequence_type> >::type + type; + + static inline + type call(Sequence&) + { + return type(); + } + }; + }; + + template<> + struct size_impl + { + template + struct apply + : result_of::distance + < + typename result_of::begin::type + , typename result_of::end::type + > + {}; + }; + + template<> + struct empty_impl + { + template + struct apply + : result_of::empty + {}; + }; +}}} + + +#endif diff --git a/3party/boost/boost/fusion/view/flatten_view/flatten_view_iterator.hpp b/3party/boost/boost/fusion/view/flatten_view/flatten_view_iterator.hpp new file mode 100644 index 0000000000..dfe613ac84 --- /dev/null +++ b/3party/boost/boost/fusion/view/flatten_view/flatten_view_iterator.hpp @@ -0,0 +1,199 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2013 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef BOOST_FUSION_FLATTEN_VIEW_ITERATOR_HPP_INCLUDED +#define BOOST_FUSION_FLATTEN_VIEW_ITERATOR_HPP_INCLUDED + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +namespace boost { namespace fusion +{ + struct forward_traversal_tag; + struct flatten_view_iterator_tag; + + template + struct flatten_view_iterator + : iterator_base > + { + typedef flatten_view_iterator_tag fusion_tag; + typedef forward_traversal_tag category; + + typedef convert_iterator first_converter; + typedef typename first_converter::type first_type; + typedef Base base_type; + + flatten_view_iterator(First const& first, Base const& base) + : first(first), base(base) + {} + + first_type first; + base_type base; + }; +}} + +namespace boost { namespace fusion { namespace detail +{ + template + struct make_descent_cons + { + typedef cons type; + + static inline type apply(Iterator const& it) + { + return type(it); + } + }; + + template + struct make_descent_cons::type> >::type> + { + // we use 'value_of' above for convenience, assuming the value won't be reference, + // while we must use the regular 'deref' here for const issues... + typedef typename + remove_reference::type>::type + sub_sequence; + + typedef typename + result_of::begin::type + sub_begin; + + typedef cons::type> type; + + static inline type apply(Iterator const& it) + { + return type(it, make_descent_cons::apply( + fusion::begin(*it))); + } + }; + + template + struct build_flatten_view_iterator; + + template + struct build_flatten_view_iterator, Base> + { + typedef flatten_view_iterator type; + + static inline type apply(cons const& cons, Base const& base) + { + return type(cons.car, base); + } + }; + + template + struct build_flatten_view_iterator, Base> + { + typedef flatten_view_iterator next_base; + typedef build_flatten_view_iterator next; + typedef typename next::type type; + + static inline type apply(cons const& cons, Base const& base) + { + return next::apply(cons.cdr, next_base(cons.car, base)); + } + }; + + template + struct seek_descent + { + typedef make_descent_cons make_descent_cons_; + typedef typename make_descent_cons_::type cons_type; + typedef + build_flatten_view_iterator + build_flatten_view_iterator_; + typedef typename build_flatten_view_iterator_::type type; + + static inline type apply(Base const& base, Iterator const& it) + { + return build_flatten_view_iterator_::apply( + make_descent_cons_::apply(it), base); + } + }; + + template + struct seek_descent::type>::type> >::type> + { + typedef typename result_of::next::type type; + + static inline type apply(Base const& base, Iterator const&) + { + return fusion::next(base); + } + }; +}}} + +namespace boost { namespace fusion { namespace extension +{ + template<> + struct next_impl + { + template + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename Iterator::base_type base_type; + typedef typename result_of::next::type next_type; + + typedef detail::seek_descent seek_descent; + typedef typename seek_descent::type type; + + static inline + type call(Iterator const& it) + { + return seek_descent::apply(it.base, fusion::next(it.first)); + } + }; + }; + + template<> + struct deref_impl + { + template + struct apply + { + typedef typename + result_of::deref::type + type; + + static inline + type call(Iterator const& it) + { + return *it.first; + } + }; + }; + + template<> + struct value_of_impl + { + template + struct apply + { + typedef typename + result_of::value_of::type + type; + }; + }; +}}} + + +#endif + diff --git a/3party/boost/boost/fusion/view/iterator_range.hpp b/3party/boost/boost/fusion/view/iterator_range.hpp index 800600704e..78d6ffad9e 100644 --- a/3party/boost/boost/fusion/view/iterator_range.hpp +++ b/3party/boost/boost/fusion/view/iterator_range.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610) #define FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610 +#include #include #endif diff --git a/3party/boost/boost/fusion/view/iterator_range/detail/at_impl.hpp b/3party/boost/boost/fusion/view/iterator_range/detail/at_impl.hpp index 1b425231ec..0626ae2ec5 100644 --- a/3party/boost/boost/fusion/view/iterator_range/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_AT_IMPL_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_AT_IMPL_HPP_INCLUDED +#include #include #include @@ -30,6 +31,7 @@ namespace boost { namespace fusion typedef typename result_of::advance::type pos; typedef typename result_of::deref::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& s) { diff --git a/3party/boost/boost/fusion/view/iterator_range/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/iterator_range/detail/begin_impl.hpp index 2902e73bc1..e34b6ede30 100644 --- a/3party/boost/boost/fusion/view/iterator_range/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/detail/begin_impl.hpp @@ -24,6 +24,7 @@ namespace boost { namespace fusion { typedef typename Sequence::begin_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/iterator_range/detail/end_impl.hpp b/3party/boost/boost/fusion/view/iterator_range/detail/end_impl.hpp index 3147afe107..2428198cb8 100644 --- a/3party/boost/boost/fusion/view/iterator_range/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/detail/end_impl.hpp @@ -24,6 +24,7 @@ namespace boost { namespace fusion { typedef typename Sequence::end_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp b/3party/boost/boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp index 032225dc2b..88f4358bdf 100644 --- a/3party/boost/boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_IS_SEGMENTED_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_IS_SEGMENTED_HPP_INCLUDED +#include #include #include diff --git a/3party/boost/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp b/3party/boost/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp index 9bf459c4ec..7dc4506c79 100644 --- a/3party/boost/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_RANGE_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_ITERATOR_RANGE_HPP_INCLUDED +#include #include #include #include @@ -47,6 +48,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence @@ -55,6 +57,7 @@ namespace boost { namespace fusion push_back(Sequence const& seq, T const& x); template + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence @@ -70,7 +73,7 @@ namespace boost { namespace fusion { namespace detail // switch (size(stack_begin)) // { // case 1: - // return nil; + // return nil_; // case 2: // // car(cdr(stack_begin)) is a range over values. // assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin)))); @@ -149,6 +152,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { //return segment_sequence( @@ -195,6 +199,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { // return iterator_range(begin(car(cdr(stack_begin))), end(front(car(stack_begin)))); @@ -205,8 +210,9 @@ namespace boost { namespace fusion { namespace detail template struct make_segment_sequence_front { - typedef typename Stack::cdr_type type; // nil + typedef typename Stack::cdr_type type; // nil_ + BOOST_FUSION_GPU_ENABLED static type call(Stack const &stack) { return stack.cdr; @@ -218,7 +224,7 @@ namespace boost { namespace fusion { namespace detail // switch (size(stack_end)) // { // case 1: - // return nil; + // return nil_; // case 2: // // car(cdr(stack_back)) is a range over values. // assert(end(front(car(stack_end))) == end(car(cdr(stack_end)))); @@ -292,6 +298,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { // return segment_sequence( @@ -338,6 +345,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { // return iterator_range(begin(front(car(stack_end))), begin(car(cdr(stack_end)))); @@ -348,8 +356,9 @@ namespace boost { namespace fusion { namespace detail template struct make_segment_sequence_back { - typedef typename Stack::cdr_type type; // nil + typedef typename Stack::cdr_type type; // nil_ + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { return stack.cdr; @@ -428,6 +437,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(StackBegin stack_begin, StackEnd stack_end) { //return segment_sequence( @@ -461,6 +471,7 @@ namespace boost { namespace fusion { namespace detail typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(StackBegin stack_begin, StackEnd stack_end) { return impl::call(stack_begin.cdr, stack_end.cdr); @@ -490,6 +501,7 @@ namespace boost { namespace fusion { namespace detail segment_sequence type; + BOOST_FUSION_GPU_ENABLED static type call(StackBegin stack_begin, StackEnd stack_end) { //return segment_sequence( @@ -519,6 +531,7 @@ namespace boost { namespace fusion { namespace detail typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(Begin const& begin, End const& end) { return impl::call( diff --git a/3party/boost/boost/fusion/view/iterator_range/detail/segments_impl.hpp b/3party/boost/boost/fusion/view/iterator_range/detail/segments_impl.hpp index ede49683d0..9d570cf1f0 100644 --- a/3party/boost/boost/fusion/view/iterator_range/detail/segments_impl.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/detail/segments_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_SEGMENTS_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_SEGMENTS_HPP_INCLUDED +#include #include #include #include @@ -40,6 +41,7 @@ namespace boost { namespace fusion typename result_of::segments::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence & seq) { return fusion::segments(impl::call(seq.first, seq.last)); diff --git a/3party/boost/boost/fusion/view/iterator_range/detail/size_impl.hpp b/3party/boost/boost/fusion/view/iterator_range/detail/size_impl.hpp index 90951b2ff9..0678e5dde1 100644 --- a/3party/boost/boost/fusion/view/iterator_range/detail/size_impl.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/detail/size_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_SIZE_IMPL_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_SIZE_IMPL_HPP_INCLUDED +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/iterator_range/detail/value_at_impl.hpp b/3party/boost/boost/fusion/view/iterator_range/detail/value_at_impl.hpp index b6fe888179..652b8da192 100644 --- a/3party/boost/boost/fusion/view/iterator_range/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_VALUE_AT_IMPL_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_VALUE_AT_IMPL_HPP_INCLUDED +#include #include #include diff --git a/3party/boost/boost/fusion/view/iterator_range/iterator_range.hpp b/3party/boost/boost/fusion/view/iterator_range/iterator_range.hpp index 4f517c8d8a..f5aafd4a19 100644 --- a/3party/boost/boost/fusion/view/iterator_range/iterator_range.hpp +++ b/3party/boost/boost/fusion/view/iterator_range/iterator_range.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ITERATOR_RANGE_05062005_1224) #define FUSION_ITERATOR_RANGE_05062005_1224 +#include #include #include #include @@ -43,6 +44,7 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; + BOOST_FUSION_GPU_ENABLED iterator_range(First const& in_first, Last const& in_last) : first(convert_iterator::call(in_first)) , last(convert_iterator::call(in_last)) {} diff --git a/3party/boost/boost/fusion/view/joint_view.hpp b/3party/boost/boost/fusion/view/joint_view.hpp index 457926ad1f..58be4b8620 100644 --- a/3party/boost/boost/fusion/view/joint_view.hpp +++ b/3party/boost/boost/fusion/view/joint_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610) #define FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610 +#include #include #include diff --git a/3party/boost/boost/fusion/view/joint_view/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/joint_view/detail/begin_impl.hpp index a85a7e152e..f58d129042 100644 --- a/3party/boost/boost/fusion/view/joint_view/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/joint_view/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_07162005_0115) #define FUSION_BEGIN_IMPL_07162005_0115 +#include #include #include @@ -42,18 +43,21 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s, mpl::true_) { return s.concat(); } + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s, mpl::false_) { return type(s.first(), s.concat()); } + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/joint_view/detail/deref_data_impl.hpp b/3party/boost/boost/fusion/view/joint_view/detail/deref_data_impl.hpp index a60a125fa9..02780d99d9 100644 --- a/3party/boost/boost/fusion/view/joint_view/detail/deref_data_impl.hpp +++ b/3party/boost/boost/fusion/view/joint_view/detail/deref_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_DEREF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_DEREF_DATA_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension @@ -25,6 +26,7 @@ namespace boost { namespace fusion { namespace extension result_of::deref_data::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/view/joint_view/detail/deref_impl.hpp b/3party/boost/boost/fusion/view/joint_view/detail/deref_impl.hpp index ea4055de8a..0e1e39fffa 100644 --- a/3party/boost/boost/fusion/view/joint_view/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/view/joint_view/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_07162005_0137) #define FUSION_DEREF_IMPL_07162005_0137 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/joint_view/detail/end_impl.hpp b/3party/boost/boost/fusion/view/joint_view/detail/end_impl.hpp index 7b88e56c48..b9e0113815 100644 --- a/3party/boost/boost/fusion/view/joint_view/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/joint_view/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_END_IMPL_07162005_0128) #define FUSION_END_IMPL_07162005_0128 +#include #include #include @@ -27,6 +28,7 @@ namespace boost { namespace fusion { typedef typename Sequence::concat_last_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/joint_view/detail/key_of_impl.hpp b/3party/boost/boost/fusion/view/joint_view/detail/key_of_impl.hpp index e413c3d441..ec682f614d 100644 --- a/3party/boost/boost/fusion/view/joint_view/detail/key_of_impl.hpp +++ b/3party/boost/boost/fusion/view/joint_view/detail/key_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_KEY_OF_IMPL_HPP #define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_KEY_OF_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/view/joint_view/detail/next_impl.hpp b/3party/boost/boost/fusion/view/joint_view/detail/next_impl.hpp index 47b4d486f2..a3c066d1f3 100644 --- a/3party/boost/boost/fusion/view/joint_view/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/view/joint_view/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_07162005_0136) #define FUSION_NEXT_IMPL_07162005_0136 +#include #include #include #include @@ -44,18 +45,21 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i, mpl::true_) { return i.concat; } + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i, mpl::false_) { return type(fusion::next(i.first), i.concat); } + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp b/3party/boost/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp index cc883d7023..f797135b39 100644 --- a/3party/boost/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp +++ b/3party/boost/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/view/joint_view/detail/value_of_impl.hpp b/3party/boost/boost/fusion/view/joint_view/detail/value_of_impl.hpp index 98637e4e5f..f058a60cbc 100644 --- a/3party/boost/boost/fusion/view/joint_view/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/view/joint_view/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_IMPL_07162005_0132) #define FUSION_VALUE_IMPL_07162005_0132 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/joint_view/joint_view.hpp b/3party/boost/boost/fusion/view/joint_view/joint_view.hpp index 11b74f9c26..3ad3191420 100644 --- a/3party/boost/boost/fusion/view/joint_view/joint_view.hpp +++ b/3party/boost/boost/fusion/view/joint_view/joint_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_JOINT_VIEW_07162005_0140) #define FUSION_JOINT_VIEW_07162005_0140 +#include #include #include #include @@ -55,13 +56,17 @@ namespace boost { namespace fusion result_of::size::value + result_of::size::value> size; + BOOST_FUSION_GPU_ENABLED joint_view(Sequence1& in_seq1, Sequence2& in_seq2) : seq1(in_seq1) , seq2(in_seq2) {} + BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq1); } + BOOST_FUSION_GPU_ENABLED concat_type concat() const { return fusion::begin(seq2); } + BOOST_FUSION_GPU_ENABLED concat_last_type concat_last() const { return fusion::end(seq2); } private: diff --git a/3party/boost/boost/fusion/view/joint_view/joint_view_iterator.hpp b/3party/boost/boost/fusion/view/joint_view/joint_view_iterator.hpp index 6f5824851f..9858474078 100644 --- a/3party/boost/boost/fusion/view/joint_view/joint_view_iterator.hpp +++ b/3party/boost/boost/fusion/view/joint_view/joint_view_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_JOINT_VIEW_ITERATOR_07162005_0140) #define FUSION_JOINT_VIEW_ITERATOR_07162005_0140 +#include #include #include #include @@ -40,6 +41,7 @@ namespace boost { namespace fusion typedef Category category; BOOST_STATIC_ASSERT((!result_of::equal_to::value)); + BOOST_FUSION_GPU_ENABLED joint_view_iterator(First const& in_first, Concat const& in_concat) : first(first_converter::call(in_first)) , concat(concat_converter::call(in_concat)) diff --git a/3party/boost/boost/fusion/view/nview.hpp b/3party/boost/boost/fusion/view/nview.hpp index 28d85e0f7d..b8b51cee18 100644 --- a/3party/boost/boost/fusion/view/nview.hpp +++ b/3party/boost/boost/fusion/view/nview.hpp @@ -9,6 +9,7 @@ #if !defined(FUSION_NVIEW_SEP_23_2009_1107PM) #define FUSION_NVIEW_SEP_23_2009_1107PM +#include #include #include diff --git a/3party/boost/boost/fusion/view/nview/detail/advance_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/advance_impl.hpp index 391bebd8b0..ad82983eac 100644 --- a/3party/boost/boost/fusion/view/nview/detail/advance_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_ADVANCE_IMPL_SEP_24_2009_0212PM) #define BOOST_FUSION_NVIEW_ADVANCE_IMPL_SEP_24_2009_0212PM +#include #include #include @@ -35,6 +36,7 @@ namespace boost { namespace fusion typedef nview_iterator::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/nview/detail/at_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/at_impl.hpp index f1f41642ab..45f9faf6f6 100644 --- a/3party/boost/boost/fusion/view/nview/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_AT_IMPL_SEP_24_2009_0225PM) #define BOOST_FUSION_NVIEW_AT_IMPL_SEP_24_2009_0225PM +#include #include namespace boost { namespace fusion @@ -31,6 +32,7 @@ namespace boost { namespace fusion typedef typename result_of::at::type index; typedef typename result_of::at::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/view/nview/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/begin_impl.hpp index 8ba59fc5d8..ca600b9a16 100644 --- a/3party/boost/boost/fusion/view/nview/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_BEGIN_IMPL_SEP_23_2009_1036PM) #define BOOST_FUSION_NVIEW_BEGIN_IMPL_SEP_23_2009_1036PM +#include #include #include @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef nview_iterator::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { return type(s); diff --git a/3party/boost/boost/fusion/view/nview/detail/deref_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/deref_impl.hpp index 075f0b0f18..bbdb982528 100644 --- a/3party/boost/boost/fusion/view/nview/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_DEREF_IMPL_SEP_24_2009_0818AM) #define BOOST_FUSION_NVIEW_DEREF_IMPL_SEP_24_2009_0818AM +#include #include #include @@ -33,6 +34,7 @@ namespace boost { namespace fusion typedef typename result_of::at< typename sequence_type::sequence_type, index>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return at(i.seq.seq); diff --git a/3party/boost/boost/fusion/view/nview/detail/distance_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/distance_impl.hpp index 8b1906f6d2..e3e5a9a086 100644 --- a/3party/boost/boost/fusion/view/nview/detail/distance_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_DISTANCE_IMPL_SEP_23_2009_0328PM) #define BOOST_FUSION_NVIEW_DISTANCE_IMPL_SEP_23_2009_0328PM +#include #include namespace boost { namespace fusion @@ -30,6 +31,7 @@ namespace boost { namespace fusion typename First::first_type, typename Last::first_type >::type type; + BOOST_FUSION_GPU_ENABLED static type call(First const& /*first*/, Last const& /*last*/) { diff --git a/3party/boost/boost/fusion/view/nview/detail/end_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/end_impl.hpp index 7897748b7d..d36260dbb7 100644 --- a/3party/boost/boost/fusion/view/nview/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_END_IMPL_SEP_24_2009_0140PM) #define BOOST_FUSION_NVIEW_END_IMPL_SEP_24_2009_0140PM +#include #include #include @@ -35,6 +36,7 @@ namespace boost { namespace fusion typedef nview_iterator::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { return type(s); diff --git a/3party/boost/boost/fusion/view/nview/detail/equal_to_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/equal_to_impl.hpp index 517204b078..4b04788bb6 100644 --- a/3party/boost/boost/fusion/view/nview/detail/equal_to_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/equal_to_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_ITERATOR_SEP_24_2009_0329PM) #define BOOST_FUSION_NVIEW_ITERATOR_SEP_24_2009_0329PM +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/nview/detail/next_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/next_impl.hpp index 01cccf2b84..5193bfe655 100644 --- a/3party/boost/boost/fusion/view/nview/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_NEXT_IMPL_SEP_24_2009_0116PM) #define BOOST_FUSION_NVIEW_NEXT_IMPL_SEP_24_2009_0116PM +#include #include namespace boost { namespace fusion @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef nview_iterator::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/nview/detail/nview_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/nview_impl.hpp index 555c34eac1..6c7a3e21d1 100644 --- a/3party/boost/boost/fusion/view/nview/detail/nview_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/nview_impl.hpp @@ -63,6 +63,7 @@ namespace boost { namespace fusion { namespace result_of namespace boost { namespace fusion { template + BOOST_FUSION_GPU_ENABLED inline nview > as_nview(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/nview/detail/prior_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/prior_impl.hpp index 079a9ca6c9..374b45f669 100644 --- a/3party/boost/boost/fusion/view/nview/detail/prior_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/prior_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_PRIOR_IMPL_SEP_24_2009_0142PM) #define BOOST_FUSION_NVIEW_PRIOR_IMPL_SEP_24_2009_0142PM +#include #include namespace boost { namespace fusion @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef nview_iterator::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/nview/detail/size_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/size_impl.hpp index e367f89925..57e6765386 100644 --- a/3party/boost/boost/fusion/view/nview/detail/size_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/size_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NVIEW_SIZE_IMPL_OCT_06_2009_0525PM) #define FUSION_NVIEW_SIZE_IMPL_OCT_06_2009_0525PM +#include #include #include #include diff --git a/3party/boost/boost/fusion/view/nview/detail/value_at_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/value_at_impl.hpp index 145bb629bb..2afe9bee61 100644 --- a/3party/boost/boost/fusion/view/nview/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_VALUE_AT_IMPL_SEP_24_2009_0234PM) #define BOOST_FUSION_NVIEW_VALUE_AT_IMPL_SEP_24_2009_0234PM +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/nview/detail/value_of_impl.hpp b/3party/boost/boost/fusion/view/nview/detail/value_of_impl.hpp index 5b0a85ba9a..dc48e61ff6 100644 --- a/3party/boost/boost/fusion/view/nview/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/view/nview/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_VALUE_OF_PRIOR_IMPL_SEP_24_2009_0158PM) #define BOOST_FUSION_VALUE_OF_PRIOR_IMPL_SEP_24_2009_0158PM +#include #include #include diff --git a/3party/boost/boost/fusion/view/nview/nview.hpp b/3party/boost/boost/fusion/view/nview/nview.hpp index 2355b68857..45b7380bdf 100644 --- a/3party/boost/boost/fusion/view/nview/nview.hpp +++ b/3party/boost/boost/fusion/view/nview/nview.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_SEP_23_2009_0948PM) #define BOOST_FUSION_NVIEW_SEP_23_2009_0948PM +#include #include #include #include @@ -37,8 +38,9 @@ namespace boost { namespace fusion template struct result : add_reference {}; -#ifdef BOOST_NO_RVALUE_REFERENCES +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES template + BOOST_FUSION_GPU_ENABLED typename add_reference::type operator()(T& x) const { @@ -46,6 +48,7 @@ namespace boost { namespace fusion } #else template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(T&& x) const { @@ -65,6 +68,7 @@ namespace boost { namespace fusion {}; template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type operator()(T& x) const { @@ -72,6 +76,7 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename add_reference::type>::type operator()(T const& x) const { @@ -103,7 +108,7 @@ namespace boost { namespace fusion typedef typename result_of::as_vector::type sequence_type; - explicit nview(Sequence& val) + BOOST_FUSION_GPU_ENABLED explicit nview(Sequence& val) : seq(sequence_type(transform_view_type(val, transform_type()))) {} diff --git a/3party/boost/boost/fusion/view/nview/nview_iterator.hpp b/3party/boost/boost/fusion/view/nview/nview_iterator.hpp index 3b7ec1f905..c614cbbb92 100644 --- a/3party/boost/boost/fusion/view/nview/nview_iterator.hpp +++ b/3party/boost/boost/fusion/view/nview/nview_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_NVIEW_ITERATOR_SEP_23_2009_0948PM) #define BOOST_FUSION_NVIEW_ITERATOR_SEP_23_2009_0948PM +#include #include #include #include @@ -41,7 +42,7 @@ namespace boost { namespace fusion typedef Sequence sequence_type; typedef mpl_iterator first_type; - explicit nview_iterator(Sequence& in_seq) + BOOST_FUSION_GPU_ENABLED explicit nview_iterator(Sequence& in_seq) : seq(in_seq) {} Sequence& seq; diff --git a/3party/boost/boost/fusion/view/repetitive_view.hpp b/3party/boost/boost/fusion/view/repetitive_view.hpp index fef1462fa2..abc2fda53a 100644 --- a/3party/boost/boost/fusion/view/repetitive_view.hpp +++ b/3party/boost/boost/fusion/view/repetitive_view.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED +#include #include #include diff --git a/3party/boost/boost/fusion/view/repetitive_view/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/repetitive_view/detail/begin_impl.hpp index 321d7b8d8d..3da6b21dbf 100644 --- a/3party/boost/boost/fusion/view/repetitive_view/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/repetitive_view/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_BEGIN_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_BEGIN_IMPL_HPP_INCLUDED +#include #include #include @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef repetitive_view_iterator::type > type; + BOOST_FUSION_GPU_ENABLED static type call(View const& v) { return type(v.seq); diff --git a/3party/boost/boost/fusion/view/repetitive_view/detail/deref_impl.hpp b/3party/boost/boost/fusion/view/repetitive_view/detail/deref_impl.hpp index 2c0caf8022..c54ff38ef8 100644 --- a/3party/boost/boost/fusion/view/repetitive_view/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/view/repetitive_view/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_DEREF_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_DEREF_IMPL_HPP_INCLUDED +#include #include namespace boost { namespace fusion @@ -29,6 +30,7 @@ namespace boost { namespace fusion result_of::deref::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return *i.pos; diff --git a/3party/boost/boost/fusion/view/repetitive_view/detail/end_impl.hpp b/3party/boost/boost/fusion/view/repetitive_view/detail/end_impl.hpp index 52e36da50d..ca1c270f95 100644 --- a/3party/boost/boost/fusion/view/repetitive_view/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/repetitive_view/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_END_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_END_IMPL_HPP_INCLUDED +#include #include #include @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef repetitive_view_iterator::type > type; + BOOST_FUSION_GPU_ENABLED static type call(View const& v) { return type(v.seq,end(v.seq)); diff --git a/3party/boost/boost/fusion/view/repetitive_view/detail/next_impl.hpp b/3party/boost/boost/fusion/view/repetitive_view/detail/next_impl.hpp index b629cb0122..acefd513c0 100644 --- a/3party/boost/boost/fusion/view/repetitive_view/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/view/repetitive_view/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_NEXT_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_NEXT_IMPL_HPP_INCLUDED +#include #include #include @@ -41,6 +42,7 @@ namespace boost { namespace fusion > type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return type(i.seq, next(i.pos)); @@ -57,6 +59,7 @@ namespace boost { namespace fusion > type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return type(i.seq); @@ -77,6 +80,7 @@ namespace boost { namespace fusion typedef Iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return type(i); diff --git a/3party/boost/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp b/3party/boost/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp index bf5f2f0615..234c9fb7f5 100644 --- a/3party/boost/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_VALUE_OF_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_VALUE_OF_IMPL_HPP_INCLUDED +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/repetitive_view/repetitive_view.hpp b/3party/boost/boost/fusion/view/repetitive_view/repetitive_view.hpp index 509db859c1..89678755f4 100644 --- a/3party/boost/boost/fusion/view/repetitive_view/repetitive_view.hpp +++ b/3party/boost/boost/fusion/view/repetitive_view/repetitive_view.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_REPETITIVE_VIEW_VIEW_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP_INCLUDED +#include #include #include @@ -37,6 +38,7 @@ namespace boost { namespace fusion mpl::if_, Sequence, sequence_type&>::type stored_seq_type; + BOOST_FUSION_GPU_ENABLED repetitive_view(Sequence& in_seq) : seq(in_seq) {} diff --git a/3party/boost/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp b/3party/boost/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp index 4dff006e01..7d5d139d66 100644 --- a/3party/boost/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp +++ b/3party/boost/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_ITERATOR_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_HPP_ITERATOR_INCLUDED +#include #include #include #include @@ -35,9 +36,10 @@ namespace boost { namespace fusion typedef typename convert_iterator::type>::type end_type; typedef single_pass_traversal_tag category; - explicit repetitive_view_iterator(Sequence& in_seq) + BOOST_FUSION_GPU_ENABLED explicit repetitive_view_iterator(Sequence& in_seq) : seq(in_seq), pos(begin(in_seq)) {} + BOOST_FUSION_GPU_ENABLED repetitive_view_iterator(Sequence& in_seq, pos_type const& in_pos) : seq(in_seq), pos(in_pos) {} diff --git a/3party/boost/boost/fusion/view/reverse_view.hpp b/3party/boost/boost/fusion/view/reverse_view.hpp index 5ba6773036..c0c1fd7c84 100644 --- a/3party/boost/boost/fusion/view/reverse_view.hpp +++ b/3party/boost/boost/fusion/view/reverse_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612 +#include #include #include diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/advance_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/advance_impl.hpp index cd0a730966..1304d0a9c2 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/advance_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ADVANCE_IMPL_14122005_2015) #define FUSION_ADVANCE_IMPL_14122005_2015 +#include #include #include @@ -34,6 +35,7 @@ namespace boost { namespace fusion { typedef typename result_of::advance::type advanced_type; typedef reverse_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/at_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/at_impl.hpp index 2e842596c4..ebad8f3524 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/at_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_AT_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_AT_IMPL_HPP +#include #include #include #include @@ -29,6 +30,7 @@ namespace boost { namespace fusion { namespace extension result_of::at::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/begin_impl.hpp index 5c83eefb7a..2f20df57a4 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/begin_impl.hpp @@ -27,6 +27,7 @@ namespace boost { namespace fusion { typedef reverse_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence const& s) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp index 2f52bdd898..20d381baba 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_DEREF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_DEREF_DATA_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension @@ -25,6 +26,7 @@ namespace boost { namespace fusion { namespace extension result_of::deref_data::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/deref_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/deref_impl.hpp index 3a82145ea4..530921fe3a 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_07202005_0851) #define FUSION_DEREF_IMPL_07202005_0851 +#include #include #include @@ -33,6 +34,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/distance_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/distance_impl.hpp index 13421d8d01..3a5fdc6114 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/distance_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DISTANCE_IMPL_14122005_2104) #define FUSION_DISTANCE_IMPL_14122005_2104 +#include #include namespace boost { namespace fusion { @@ -32,6 +33,7 @@ namespace boost { namespace fusion { typedef typename Last::first_type last_type; typedef typename result_of::distance::type type; + BOOST_FUSION_GPU_ENABLED static type call(First const& first, Last const& last) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/end_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/end_impl.hpp index bf4ddfb476..1747d64f33 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/end_impl.hpp @@ -27,6 +27,7 @@ namespace boost { namespace fusion { typedef reverse_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence const& s) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/key_of_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/key_of_impl.hpp index 3d760fd272..985e5fa9cd 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/key_of_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/key_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_KEY_OF_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_KEY_OF_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/next_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/next_impl.hpp index 18817280c0..1aaa692023 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_07202005_0856) #define FUSION_NEXT_IMPL_07202005_0856 +#include #include #include @@ -32,6 +33,7 @@ namespace boost { namespace fusion typedef reverse_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/prior_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/prior_impl.hpp index 014267259b..4007ad4d97 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/prior_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/prior_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_PRIOR_IMPL_07202005_0857) #define FUSION_PRIOR_IMPL_07202005_0857 +#include #include #include @@ -32,6 +33,7 @@ namespace boost { namespace fusion typedef reverse_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/value_at_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/value_at_impl.hpp index 90f5129bc9..76465fd74a 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_VALUE_AT_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_VALUE_AT_IMPL_HPP +#include #include #include #include diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp index 69d310ffb1..a96d1ce362 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP +#include #include namespace boost { namespace fusion { namespace extension diff --git a/3party/boost/boost/fusion/view/reverse_view/detail/value_of_impl.hpp b/3party/boost/boost/fusion/view/reverse_view/detail/value_of_impl.hpp index 3cb7258187..ea171ba950 100644 --- a/3party/boost/boost/fusion/view/reverse_view/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_07202005_0900) #define FUSION_VALUE_OF_IMPL_07202005_0900 +#include #include #include diff --git a/3party/boost/boost/fusion/view/reverse_view/reverse_view.hpp b/3party/boost/boost/fusion/view/reverse_view/reverse_view.hpp index e5716a40f0..3b134d5f26 100644 --- a/3party/boost/boost/fusion/view/reverse_view/reverse_view.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/reverse_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REVERSE_VIEW_07202005_0836) #define FUSION_REVERSE_VIEW_07202005_0836 +#include #include #include #include @@ -49,11 +50,14 @@ namespace boost { namespace fusion bidirectional_traversal_tag , typename traits::category_of::type>::value)); + BOOST_FUSION_GPU_ENABLED reverse_view(Sequence& in_seq) : seq(in_seq) {} + BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq); } + BOOST_FUSION_GPU_ENABLED last_type last() const { return fusion::end(seq); } typename mpl::if_, Sequence, Sequence&>::type seq; diff --git a/3party/boost/boost/fusion/view/reverse_view/reverse_view_iterator.hpp b/3party/boost/boost/fusion/view/reverse_view/reverse_view_iterator.hpp index 4c249438fe..9de2169ef1 100644 --- a/3party/boost/boost/fusion/view/reverse_view/reverse_view_iterator.hpp +++ b/3party/boost/boost/fusion/view/reverse_view/reverse_view_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REVERSE_VIEW_ITERATOR_07202005_0835) #define FUSION_REVERSE_VIEW_ITERATOR_07202005_0835 +#include #include #include #include @@ -41,6 +42,7 @@ namespace boost { namespace fusion bidirectional_traversal_tag , category>::value)); + BOOST_FUSION_GPU_ENABLED reverse_view_iterator(First const& in_first) : first(converter::call(in_first)) {} diff --git a/3party/boost/boost/fusion/view/single_view.hpp b/3party/boost/boost/fusion/view/single_view.hpp index 1d9696fe12..a3a3e91852 100644 --- a/3party/boost/boost/fusion/view/single_view.hpp +++ b/3party/boost/boost/fusion/view/single_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SINGLE_VIEW_03192006_2216) #define FUSION_SINGLE_VIEW_03192006_2216 +#include #include #include diff --git a/3party/boost/boost/fusion/view/single_view/detail/advance_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/advance_impl.hpp index d0846ec4e5..9dd9e4d712 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/advance_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_ADVANCE_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_ADVANCE_IMPL_JUL_07_2011_1348PM +#include #include namespace boost { namespace fusion @@ -33,6 +34,7 @@ namespace boost { namespace fusion typename mpl::plus::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/single_view/detail/at_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/at_impl.hpp index 3e0915fce6..b63497c8d2 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM +#include #include #include #include @@ -30,6 +31,7 @@ namespace boost { namespace fusion BOOST_MPL_ASSERT((mpl::equal_to >)); typedef typename Sequence::value_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/view/single_view/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/begin_impl.hpp index eb1a3eee26..63e4292348 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_BEGIN_IMPL_05052005_0305) #define BOOST_FUSION_SINGLE_VIEW_BEGIN_IMPL_05052005_0305 +#include #include namespace boost { namespace fusion @@ -30,6 +31,7 @@ namespace boost { namespace fusion { typedef single_view_iterator > type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/view/single_view/detail/deref_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/deref_impl.hpp index b5b37a6128..ad50a41357 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_DEREF_IMPL_05052005_0258) #define BOOST_FUSION_SINGLE_VIEW_DEREF_IMPL_05052005_0258 +#include #include #include #include @@ -30,6 +31,7 @@ namespace boost { namespace fusion BOOST_MPL_ASSERT((mpl::equal_to >)); typedef typename Iterator::value_type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/single_view/detail/distance_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/distance_impl.hpp index fec204cd02..73231b4152 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/distance_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_DISTANCE_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_DISTANCE_IMPL_JUL_07_2011_1348PM +#include #include namespace boost { namespace fusion @@ -29,6 +30,7 @@ namespace boost { namespace fusion typedef typename mpl::minus::type type; + BOOST_FUSION_GPU_ENABLED static type call(First const& /*first*/, Last const& /*last*/) { diff --git a/3party/boost/boost/fusion/view/single_view/detail/end_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/end_impl.hpp index e069b24d96..50a7c56240 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_END_IMPL_05052005_0332) #define BOOST_FUSION_SINGLE_VIEW_END_IMPL_05052005_0332 +#include #include namespace boost { namespace fusion @@ -30,6 +31,7 @@ namespace boost { namespace fusion { typedef single_view_iterator > type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/3party/boost/boost/fusion/view/single_view/detail/equal_to_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/equal_to_impl.hpp index c9a7ebdeb2..a14b4c5128 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/equal_to_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/equal_to_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_ITERATOR_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_ITERATOR_JUL_07_2011_1348PM +#include #include #include #include diff --git a/3party/boost/boost/fusion/view/single_view/detail/next_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/next_impl.hpp index 1ebc502bfb..d5e0ac8037 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_NEXT_IMPL_05052005_0331) #define BOOST_FUSION_SINGLE_VIEW_NEXT_IMPL_05052005_0331 +#include #include #include @@ -34,6 +35,7 @@ namespace boost { namespace fusion typename mpl::next::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/single_view/detail/prior_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/prior_impl.hpp index ece6795d7a..c34e481a27 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/prior_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/prior_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_PRIOR_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_PRIOR_IMPL_JUL_07_2011_1348PM +#include #include namespace boost { namespace fusion @@ -32,6 +33,7 @@ namespace boost { namespace fusion typename mpl::prior::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/single_view/detail/value_at_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/value_at_impl.hpp index a8c20ad5fa..b5721b84bd 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_VALUE_AT_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_VALUE_AT_IMPL_JUL_07_2011_1348PM +#include #include #include #include diff --git a/3party/boost/boost/fusion/view/single_view/detail/value_of_impl.hpp b/3party/boost/boost/fusion/view/single_view/detail/value_of_impl.hpp index 81e8817962..dfb345c8cd 100644 --- a/3party/boost/boost/fusion/view/single_view/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/view/single_view/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_VALUE_OF_IMPL_05052005_0324) #define BOOST_FUSION_SINGLE_VIEW_VALUE_OF_IMPL_05052005_0324 +#include #include #include #include diff --git a/3party/boost/boost/fusion/view/single_view/single_view.hpp b/3party/boost/boost/fusion/view/single_view/single_view.hpp index 5e7e5ab5cc..36c2c931c0 100644 --- a/3party/boost/boost/fusion/view/single_view/single_view.hpp +++ b/3party/boost/boost/fusion/view/single_view/single_view.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_05052005_0335) #define BOOST_FUSION_SINGLE_VIEW_05052005_0335 +#include #include #include #include @@ -42,16 +43,18 @@ namespace boost { namespace fusion typedef mpl::int_<1> size; typedef T value_type; + BOOST_FUSION_GPU_ENABLED single_view() : val() {} - explicit single_view(typename detail::call_param::type in_val) + BOOST_FUSION_GPU_ENABLED explicit single_view(typename detail::call_param::type in_val) : val(in_val) {} value_type val; }; template + BOOST_FUSION_GPU_ENABLED inline single_view::type> make_single_view(T const& v) { diff --git a/3party/boost/boost/fusion/view/single_view/single_view_iterator.hpp b/3party/boost/boost/fusion/view/single_view/single_view_iterator.hpp index 77b508a0f9..128c1cae66 100644 --- a/3party/boost/boost/fusion/view/single_view/single_view_iterator.hpp +++ b/3party/boost/boost/fusion/view/single_view/single_view_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_ITERATOR_05052005_0340) #define BOOST_FUSION_SINGLE_VIEW_ITERATOR_05052005_0340 +#include #include #include #include @@ -39,7 +40,7 @@ namespace boost { namespace fusion typedef Pos position; typedef SingleView single_view_type; - explicit single_view_iterator(single_view_type& in_view) + BOOST_FUSION_GPU_ENABLED explicit single_view_iterator(single_view_type& in_view) : view(in_view) {} SingleView& view; diff --git a/3party/boost/boost/fusion/view/transform_view.hpp b/3party/boost/boost/fusion/view/transform_view.hpp index b64395e377..57ff612a73 100644 --- a/3party/boost/boost/fusion/view/transform_view.hpp +++ b/3party/boost/boost/fusion/view/transform_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612 +#include #include #include diff --git a/3party/boost/boost/fusion/view/transform_view/detail/advance_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/advance_impl.hpp index 9027226f5b..ae8a84ce63 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/advance_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ADVANCE_IMPL_13122005_1906) #define FUSION_ADVANCE_IMPL_13122005_1906 +#include #include namespace boost { namespace fusion @@ -38,6 +39,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -60,6 +62,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator2 type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/transform_view/detail/apply_transform_result.hpp b/3party/boost/boost/fusion/view/transform_view/detail/apply_transform_result.hpp index 100055c4a5..87c057f231 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/apply_transform_result.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/apply_transform_result.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936) #define BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936 +#include #include namespace boost { namespace fusion diff --git a/3party/boost/boost/fusion/view/transform_view/detail/at_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/at_impl.hpp index 5133de8b07..5c6dd8fb0d 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_20061029_1946) #define BOOST_FUSION_AT_IMPL_20061029_1946 +#include #include #include #include @@ -32,6 +33,7 @@ namespace boost { namespace fusion { typedef typename boost::fusion::result_of::at::type value_type; typedef typename mpl::apply::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { return seq.f(boost::fusion::at(seq.seq)); @@ -51,6 +53,7 @@ namespace boost { namespace fusion { typedef typename boost::fusion::result_of::at::type value2_type; typedef typename mpl::apply::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { return seq.f(boost::fusion::at(seq.seq1), boost::fusion::at(seq.seq2)); diff --git a/3party/boost/boost/fusion/view/transform_view/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/begin_impl.hpp index 09fe8897e5..7c40505ae2 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_07162005_1031) #define FUSION_BEGIN_IMPL_07162005_1031 +#include #include namespace boost { namespace fusion @@ -33,6 +34,7 @@ namespace boost { namespace fusion typedef typename Sequence::transform_type transform_type; typedef transform_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { @@ -53,6 +55,7 @@ namespace boost { namespace fusion typedef typename Sequence::transform_type transform_type; typedef transform_view_iterator2 type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/transform_view/detail/deref_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/deref_impl.hpp index dcdf04eff3..35dacbd1d7 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_07162005_1026) #define FUSION_DEREF_IMPL_07162005_1026 +#include #include #include #include @@ -36,6 +37,7 @@ namespace boost { namespace fusion typedef detail::apply_transform_result transform_type; typedef typename mpl::apply::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -61,6 +63,7 @@ namespace boost { namespace fusion typedef detail::apply_transform_result transform_type; typedef typename mpl::apply::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/transform_view/detail/distance_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/distance_impl.hpp index 12a2d7976b..ecbc8c5dd0 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/distance_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DISTANCE_IMPL_13122005_2139) #define FUSION_DISTANCE_IMPL_13122005_2139 +#include #include namespace boost { namespace fusion { @@ -28,6 +29,7 @@ namespace boost { namespace fusion { struct apply : result_of::distance { + BOOST_FUSION_GPU_ENABLED static typename result_of::distance::type call(First const& first, Last const& last) @@ -45,6 +47,7 @@ namespace boost { namespace fusion { struct apply : result_of::distance { + BOOST_FUSION_GPU_ENABLED static typename result_of::distance::type call(First const& first, Last const& last) diff --git a/3party/boost/boost/fusion/view/transform_view/detail/end_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/end_impl.hpp index 0c19403797..58e161b1f6 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_END_IMPL_07162005_1028) #define FUSION_END_IMPL_07162005_1028 +#include #include namespace boost { namespace fusion @@ -33,6 +34,7 @@ namespace boost { namespace fusion typedef typename Sequence::transform_type transform_type; typedef transform_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { @@ -53,6 +55,7 @@ namespace boost { namespace fusion typedef typename Sequence::transform_type transform_type; typedef transform_view_iterator2 type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/3party/boost/boost/fusion/view/transform_view/detail/equal_to_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/equal_to_impl.hpp index b1f0ae2db7..c4c6815ec7 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/equal_to_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/equal_to_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_TRANSFORM_VIEW_ITERATOR_20070127_0957) #define BOOST_FUSION_TRANSFORM_VIEW_ITERATOR_20070127_0957 +#include #include namespace boost { namespace fusion { diff --git a/3party/boost/boost/fusion/view/transform_view/detail/next_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/next_impl.hpp index 5c61a6055b..cebba59526 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_07162005_1029) #define FUSION_NEXT_IMPL_07162005_1029 +#include #include namespace boost { namespace fusion @@ -37,6 +38,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator2 type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/transform_view/detail/prior_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/prior_impl.hpp index 772b3e5075..19c802c622 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/prior_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/prior_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_PREV_IMPL_13122005_2110) #define FUSION_PREV_IMPL_13122005_2110 +#include #include namespace boost { namespace fusion @@ -38,6 +39,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -60,6 +62,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator2 type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/3party/boost/boost/fusion/view/transform_view/detail/value_at_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/value_at_impl.hpp index 445bbd0b6c..6875cbed08 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_20061101_0745) #define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745 +#include #include #include #include diff --git a/3party/boost/boost/fusion/view/transform_view/detail/value_of_impl.hpp b/3party/boost/boost/fusion/view/transform_view/detail/value_of_impl.hpp index 108586293e..ae20cd4ba1 100644 --- a/3party/boost/boost/fusion/view/transform_view/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/view/transform_view/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_07162005_1030) #define FUSION_VALUE_OF_IMPL_07162005_1030 +#include #include #include #include diff --git a/3party/boost/boost/fusion/view/transform_view/transform_view.hpp b/3party/boost/boost/fusion/view/transform_view/transform_view.hpp index 1049f11e5c..d18f49c61c 100644 --- a/3party/boost/boost/fusion/view/transform_view/transform_view.hpp +++ b/3party/boost/boost/fusion/view/transform_view/transform_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_TRANSFORM_VIEW_07162005_1037) #define FUSION_TRANSFORM_VIEW_07162005_1037 +#include #include #include #include @@ -55,15 +56,20 @@ namespace boost { namespace fusion typedef Sequence2 sequence2_type; typedef F transform_type; + BOOST_FUSION_GPU_ENABLED transform_view(Sequence1& in_seq1, Sequence2& in_seq2, F const& binop) : f(binop) , seq1(in_seq1) , seq2(in_seq2) {} + BOOST_FUSION_GPU_ENABLED first1_type first1() const { return fusion::begin(seq1); } + BOOST_FUSION_GPU_ENABLED first2_type first2() const { return fusion::begin(seq2); } + BOOST_FUSION_GPU_ENABLED last1_type last1() const { return fusion::end(seq1); } + BOOST_FUSION_GPU_ENABLED last2_type last2() const { return fusion::end(seq2); } transform_type f; @@ -94,12 +100,15 @@ namespace boost { namespace fusion typedef Sequence sequence_type; typedef F transform_type; + BOOST_FUSION_GPU_ENABLED transform_view(Sequence& in_seq, F const& in_f) : seq(in_seq) , f(in_f) {} + BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq); } + BOOST_FUSION_GPU_ENABLED last_type last() const { return fusion::end(seq); } typename mpl::if_, Sequence, Sequence&>::type seq; transform_type f; diff --git a/3party/boost/boost/fusion/view/transform_view/transform_view_iterator.hpp b/3party/boost/boost/fusion/view/transform_view/transform_view_iterator.hpp index af9d52be51..0762228fca 100644 --- a/3party/boost/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/3party/boost/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033) #define FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033 +#include #include #include #include @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; typedef F transform_type; + BOOST_FUSION_GPU_ENABLED transform_view_iterator(First const& in_first, F const& in_f) : first(converter::call(in_first)), f(in_f) {} @@ -60,6 +62,7 @@ namespace boost { namespace fusion typedef typename traits::category_of::type category; typedef F transform_type; + BOOST_FUSION_GPU_ENABLED transform_view_iterator2(First1 const& in_first1, First2 const& in_first2, F const& in_f) : first1(converter1::call(in_first1)), first2(converter2::call(in_first2)), f(in_f) {} diff --git a/3party/boost/boost/fusion/view/zip_view.hpp b/3party/boost/boost/fusion/view/zip_view.hpp index 50209a9fb0..5376f99924 100644 --- a/3party/boost/boost/fusion/view/zip_view.hpp +++ b/3party/boost/boost/fusion/view/zip_view.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_23012006_0811) #define FUSION_ZIP_VIEW_23012006_0811 +#include #include #include diff --git a/3party/boost/boost/fusion/view/zip_view/detail/advance_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/advance_impl.hpp index 2e4e1a7895..17012ac8b6 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/advance_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ADVANCE_IMPL_20061024_2021) #define FUSION_ADVANCE_IMPL_20061024_2021 +#include #include #include #include @@ -33,6 +34,7 @@ namespace boost { namespace fusion { }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(const It& it) const { @@ -55,6 +57,7 @@ namespace boost { namespace fusion { typedef zip_view_iterator< typename result_of::transform >::type> type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/view/zip_view/detail/at_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/at_impl.hpp index 89df542f1f..f92c981725 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/at_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_AT_IMPL_20060124_1933) #define FUSION_AT_IMPL_20060124_1933 +#include #include #include #include @@ -43,6 +44,7 @@ namespace boost { namespace fusion }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Seq& seq) const { @@ -50,12 +52,14 @@ namespace boost { namespace fusion } template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Seq const& seq) const { return fusion::at(seq); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -78,6 +82,7 @@ namespace boost { namespace fusion typename result_of::transform< typename Seq::sequences, detail::poly_at >::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/3party/boost/boost/fusion/view/zip_view/detail/begin_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/begin_impl.hpp index 43852d79c6..32be2c7d33 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/begin_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_BEGIN_IMPL_20060123_2147) #define FUSION_BEGIN_IMPL_20060123_2147 +#include #include #include #include @@ -40,6 +41,7 @@ namespace boost { namespace fusion { }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Seq& seq) const { @@ -47,12 +49,14 @@ namespace boost { namespace fusion { } template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Seq const& seq) const { return fusion::begin(seq); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -75,6 +79,7 @@ namespace boost { namespace fusion { typename result_of::transform::type, typename Sequence::category> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& sequence) { diff --git a/3party/boost/boost/fusion/view/zip_view/detail/deref_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/deref_impl.hpp index c24e1452d5..e9f091c3b5 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/deref_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DEREF_IMPL_20061024_1959) #define FUSION_DEREF_IMPL_20061024_1959 +#include #include #include #include @@ -42,12 +43,14 @@ namespace boost { namespace fusion { }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(const It& it) const { return fusion::deref(it); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -69,6 +72,7 @@ namespace boost { namespace fusion { typedef typename result_of::as_vector< typename result_of::transform::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/3party/boost/boost/fusion/view/zip_view/detail/distance_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/distance_impl.hpp index 8c9789330e..8beaccca44 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/distance_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DISTANCE_IMPL_20060124_2033) #define FUSION_DISTANCE_IMPL_20060124_2033 +#include #include #include #include @@ -69,6 +70,7 @@ namespace boost { namespace fusion { struct apply : detail::zip_view_iterator_distance::type { + BOOST_FUSION_GPU_ENABLED static typename detail::zip_view_iterator_distance::type call(It1 const& /*it1*/, It2 const& /*it2*/) { diff --git a/3party/boost/boost/fusion/view/zip_view/detail/end_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/end_impl.hpp index 6423a88f18..d57b08fbd7 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/end_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_END_IMPL_20060123_2208) #define FUSION_END_IMPL_20060123_2208 +#include #include #include #include @@ -54,6 +55,7 @@ namespace boost { namespace fusion { }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Seq& seq) const { @@ -61,12 +63,14 @@ namespace boost { namespace fusion { } template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Seq const& seq) const { return fusion::advance(fusion::begin(seq)); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -89,6 +93,7 @@ namespace boost { namespace fusion { typename result_of::transform >::type, typename Sequence::category> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& sequence) { diff --git a/3party/boost/boost/fusion/view/zip_view/detail/equal_to_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/equal_to_impl.hpp index 0349d814e5..6292a525f0 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/equal_to_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/equal_to_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_EQUAL_TO_IMPL_20060128_1423) #define FUSION_EQUAL_TO_IMPL_20060128_1423 +#include #include #include diff --git a/3party/boost/boost/fusion/view/zip_view/detail/next_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/next_impl.hpp index 56bf853d65..e9236b4200 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/next_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_NEXT_IMPL_20060124_2006) #define FUSION_NEXT_IMPL_20060124_2006 +#include #include #include #include @@ -41,12 +42,14 @@ namespace boost { namespace fusion { }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(const It& it) const { return fusion::next(it); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -69,6 +72,7 @@ namespace boost { namespace fusion { typename result_of::transform::type, typename Iterator::category> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& it) { diff --git a/3party/boost/boost/fusion/view/zip_view/detail/prior_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/prior_impl.hpp index 875e7d2853..aa69229565 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/prior_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/prior_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_PRIOR_IMPL_20060124_2006) #define FUSION_PRIOR_IMPL_20060124_2006 +#include #include #include #include @@ -40,12 +41,14 @@ namespace boost { namespace fusion { }; template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(const It& it) const { return fusion::prior(it); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -68,6 +71,7 @@ namespace boost { namespace fusion { typename result_of::transform::type, typename Iterator::category> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& it) diff --git a/3party/boost/boost/fusion/view/zip_view/detail/value_at_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/value_at_impl.hpp index 13e0274f6d..26d75b469e 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/value_at_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_VALUE_AT_IMPL_20060124_2129) #define FUSION_VALUE_AT_IMPL_20060124_2129 +#include #include #include #include @@ -38,8 +39,9 @@ namespace boost { namespace fusion { {}; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Seq&&) const; #endif diff --git a/3party/boost/boost/fusion/view/zip_view/detail/value_of_impl.hpp b/3party/boost/boost/fusion/view/zip_view/detail/value_of_impl.hpp index 5571155e25..0c06e0e10c 100644 --- a/3party/boost/boost/fusion/view/zip_view/detail/value_of_impl.hpp +++ b/3party/boost/boost/fusion/view/zip_view/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_20060124_2147) #define FUSION_VALUE_OF_IMPL_20060124_2147 +#include #include #include #include @@ -37,8 +38,9 @@ namespace boost { namespace fusion {}; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(It&&) const; #endif diff --git a/3party/boost/boost/fusion/view/zip_view/zip_view.hpp b/3party/boost/boost/fusion/view/zip_view/zip_view.hpp index e9a0222df5..4e807f732b 100644 --- a/3party/boost/boost/fusion/view/zip_view/zip_view.hpp +++ b/3party/boost/boost/fusion/view/zip_view/zip_view.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_23012006_0813) #define FUSION_ZIP_VIEW_23012006_0813 +#include #include #include #include @@ -68,8 +69,9 @@ namespace boost { namespace fusion { }; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Seq&&) const; #endif @@ -89,8 +91,9 @@ namespace boost { namespace fusion { }; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template + BOOST_FUSION_GPU_ENABLED typename result::type operator()(Lhs&&, Rhs&&) const; #endif @@ -119,6 +122,7 @@ namespace boost { namespace fusion { typedef typename fusion::result_of::as_vector::type sequences; typedef typename detail::min_size::type size; + BOOST_FUSION_GPU_ENABLED zip_view( const Sequences& seqs) : sequences_(seqs) diff --git a/3party/boost/boost/fusion/view/zip_view/zip_view_iterator.hpp b/3party/boost/boost/fusion/view/zip_view/zip_view_iterator.hpp index bf0b8a39e5..fec50e6f18 100644 --- a/3party/boost/boost/fusion/view/zip_view/zip_view_iterator.hpp +++ b/3party/boost/boost/fusion/view/zip_view/zip_view_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_ITERATOR_23012006_0814) #define FUSION_ZIP_VIEW_ITERATOR_23012006_0814 +#include #include #include #include @@ -34,6 +35,7 @@ namespace boost { namespace fusion { typedef Traversal category; template + BOOST_FUSION_GPU_ENABLED zip_view_iterator( const InitSeq& iterator_seq) : iterators_(iterator_seq) diff --git a/3party/boost/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp b/3party/boost/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp index d2bfff2388..7f1623090f 100644 --- a/3party/boost/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp +++ b/3party/boost/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_ITERATOR_FWD) #define FUSION_ZIP_VIEW_ITERATOR_FWD +#include #include namespace boost { namespace fusion { diff --git a/3party/boost/boost/geometry/algorithms/append.hpp b/3party/boost/boost/geometry/algorithms/append.hpp index f2d0d366d9..1dafac04b6 100644 --- a/3party/boost/boost/geometry/algorithms/append.hpp +++ b/3party/boost/boost/geometry/algorithms/append.hpp @@ -1,8 +1,13 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. -// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. -// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -105,7 +110,7 @@ struct range_to_polygon typedef typename ring_type::type ring_type; static inline void apply(Polygon& polygon, Range const& range, - int ring_index, int ) + int ring_index, int = 0) { if (ring_index == -1) { @@ -194,8 +199,14 @@ struct append : splitted_dispatch::append_point::type, Geometry, RangeOrPoint> {}; +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +namespace resolve_variant { + template -struct devarianted_append +struct append { template static inline void apply(Geometry& geometry, @@ -204,16 +215,16 @@ struct devarianted_append int multi_index) { concept::check(); - append::apply(geometry, - range_or_point, - ring_index, - multi_index); + dispatch::append::apply(geometry, + range_or_point, + ring_index, + multi_index); } }; template -struct devarianted_append > +struct append > { template struct visitor: boost::static_visitor @@ -221,7 +232,7 @@ struct devarianted_append > RangeOrPoint const& m_range_or_point; int m_ring_index; int m_multi_index; - + visitor(RangeOrPoint const& range_or_point, int ring_index, int multi_index): @@ -229,15 +240,14 @@ struct devarianted_append > m_ring_index(ring_index), m_multi_index(multi_index) {} - + template void operator()(Geometry& geometry) const { - concept::check(); - append::apply(geometry, - m_range_or_point, - m_ring_index, - m_multi_index); + append::apply(geometry, + m_range_or_point, + m_ring_index, + m_multi_index); } }; @@ -258,9 +268,7 @@ struct devarianted_append > } }; - -} // namespace dispatch -#endif // DOXYGEN_NO_DISPATCH +} // namespace resolve_variant; /*! @@ -272,7 +280,7 @@ struct devarianted_append > \param range_or_point The point or range to add \param ring_index The index of the ring in case of a polygon: exterior ring (-1, the default) or interior ring index -\param multi_index Reserved for multi polygons or multi linestrings +\param multi_index The index of the geometry to which the points are appended \qbk{[include reference/algorithms/append.qbk]} } @@ -281,8 +289,8 @@ template inline void append(Geometry& geometry, RangeOrPoint const& range_or_point, int ring_index = -1, int multi_index = 0) { - dispatch::devarianted_append - ::apply(geometry, range_or_point, ring_index, multi_index); + resolve_variant::append + ::apply(geometry, range_or_point, ring_index, multi_index); } diff --git a/3party/boost/boost/geometry/algorithms/area.hpp b/3party/boost/boost/geometry/algorithms/area.hpp index 537a36763b..7377798719 100644 --- a/3party/boost/boost/geometry/algorithms/area.hpp +++ b/3party/boost/boost/geometry/algorithms/area.hpp @@ -26,13 +26,16 @@ #include #include #include +#include #include +#include #include #include #include // #include +#include #include #include @@ -87,7 +90,7 @@ struct ring_area // An open ring has at least three points, // A closed ring has at least four points, // if not, there is no (zero) area - if (int(boost::size(ring)) + if (boost::size(ring) < core_detail::closure::minimum_ring_size::value) { return typename Strategy::return_type(); @@ -176,19 +179,41 @@ struct area : detail::calculate_polygon_sum }; +template +struct area : detail::multi_sum +{ + template + static inline typename Strategy::return_type + apply(MultiGeometry const& multi, Strategy const& strategy) + { + return multi_sum::apply + < + typename Strategy::return_type, + area::type> + >(multi, strategy); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +namespace resolve_variant { + template -struct devarianted_area +struct area { template static inline typename Strategy::return_type apply(Geometry const& geometry, Strategy const& strategy) { - return area::apply(geometry, strategy); + return dispatch::area::apply(geometry, strategy); } }; template -struct devarianted_area > +struct area > { template struct visitor: boost::static_visitor @@ -200,7 +225,7 @@ struct devarianted_area > template typename Strategy::return_type operator()(Geometry const& geometry) const { - return devarianted_area::apply(geometry, m_strategy); + return area::apply(geometry, m_strategy); } }; @@ -213,10 +238,7 @@ struct devarianted_area > } }; - -} // namespace dispatch -#endif // DOXYGEN_NO_DISPATCH - +} // namespace resolve_variant /*! @@ -245,6 +267,8 @@ inline typename default_area_result::type area(Geometry const& geometr { concept::check(); + // TODO put this into a resolve_strategy stage + // (and take the return type from resolve_variant) typedef typename point_type::type point_type; typedef typename strategy::area::services::default_strategy < @@ -253,8 +277,8 @@ inline typename default_area_result::type area(Geometry const& geometr >::type strategy_type; // detail::throw_on_empty_input(geometry); - - return dispatch::devarianted_area::apply(geometry, strategy_type()); + + return resolve_variant::area::apply(geometry, strategy_type()); } /*! @@ -288,8 +312,8 @@ inline typename Strategy::return_type area( concept::check(); // detail::throw_on_empty_input(geometry); - - return dispatch::devarianted_area::apply(geometry, strategy); + + return resolve_variant::area::apply(geometry, strategy); } diff --git a/3party/boost/boost/geometry/algorithms/assign.hpp b/3party/boost/boost/geometry/algorithms/assign.hpp index 97a033d1db..32f095b9ac 100644 --- a/3party/boost/boost/geometry/algorithms/assign.hpp +++ b/3party/boost/boost/geometry/algorithms/assign.hpp @@ -3,6 +3,7 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Samuel Debionne, Grenoble, France. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -40,6 +41,8 @@ #include +#include + namespace boost { namespace geometry { @@ -121,6 +124,229 @@ inline void assign_zero(Geometry& geometry) >::apply(geometry); } +/*! +\brief Assign two coordinates to a geometry (usually a 2D point) +\ingroup assign +\tparam Geometry \tparam_geometry +\tparam Type \tparam_numeric to specify the coordinates +\param geometry \param_geometry +\param c1 \param_x +\param c2 \param_y + +\qbk{distinguish, 2 coordinate values} +\qbk{ +[heading Example] +[assign_2d_point] [assign_2d_point_output] + +[heading See also] +\* [link geometry.reference.algorithms.make.make_2_2_coordinate_values make] +} + */ +template +inline void assign_values(Geometry& geometry, Type const& c1, Type const& c2) +{ + concept::check(); + + dispatch::assign + < + typename tag::type, + Geometry, + geometry::dimension::type::value + >::apply(geometry, c1, c2); +} + +/*! +\brief Assign three values to a geometry (usually a 3D point) +\ingroup assign +\tparam Geometry \tparam_geometry +\tparam Type \tparam_numeric to specify the coordinates +\param geometry \param_geometry +\param c1 \param_x +\param c2 \param_y +\param c3 \param_z + +\qbk{distinguish, 3 coordinate values} +\qbk{ +[heading Example] +[assign_3d_point] [assign_3d_point_output] + +[heading See also] +\* [link geometry.reference.algorithms.make.make_3_3_coordinate_values make] +} + */ +template +inline void assign_values(Geometry& geometry, + Type const& c1, Type const& c2, Type const& c3) +{ + concept::check(); + + dispatch::assign + < + typename tag::type, + Geometry, + geometry::dimension::type::value + >::apply(geometry, c1, c2, c3); +} + +/*! +\brief Assign four values to a geometry (usually a box or segment) +\ingroup assign +\tparam Geometry \tparam_geometry +\tparam Type \tparam_numeric to specify the coordinates +\param geometry \param_geometry +\param c1 First coordinate (usually x1) +\param c2 Second coordinate (usually y1) +\param c3 Third coordinate (usually x2) +\param c4 Fourth coordinate (usually y2) + +\qbk{distinguish, 4 coordinate values} + */ +template +inline void assign_values(Geometry& geometry, + Type const& c1, Type const& c2, Type const& c3, Type const& c4) +{ + concept::check(); + + dispatch::assign + < + typename tag::type, + Geometry, + geometry::dimension::type::value + >::apply(geometry, c1, c2, c3, c4); +} + + + +namespace resolve_variant +{ + +template +struct assign +{ + static inline void + apply( + Geometry1& geometry1, + const Geometry2& geometry2) + { + concept::check(); + concept::check(); + concept::check_concepts_and_equal_dimensions(); + + bool const same_point_order = + point_order::value == point_order::value; + bool const same_closure = + closure::value == closure::value; + + BOOST_MPL_ASSERT_MSG + ( + same_point_order, ASSIGN_IS_NOT_SUPPORTED_FOR_DIFFERENT_POINT_ORDER + , (types) + ); + BOOST_MPL_ASSERT_MSG + ( + same_closure, ASSIGN_IS_NOT_SUPPORTED_FOR_DIFFERENT_CLOSURE + , (types) + ); + + dispatch::convert::apply(geometry2, geometry1); + } +}; + + +template +struct assign, Geometry2> +{ + struct visitor: static_visitor + { + Geometry2 const& m_geometry2; + + visitor(Geometry2 const& geometry2) + : m_geometry2(geometry2) + {} + + template + result_type operator()(Geometry1& geometry1) const + { + return assign + < + Geometry1, + Geometry2 + >::apply + (geometry1, m_geometry2); + } + }; + + static inline void + apply(variant& geometry1, + Geometry2 const& geometry2) + { + return apply_visitor(visitor(geometry2), geometry1); + } +}; + + +template +struct assign > +{ + struct visitor: static_visitor + { + Geometry1& m_geometry1; + + visitor(Geometry1 const& geometry1) + : m_geometry1(geometry1) + {} + + template + result_type operator()(Geometry2 const& geometry2) const + { + return assign + < + Geometry1, + Geometry2 + >::apply + (m_geometry1, geometry2); + } + }; + + static inline void + apply(Geometry1& geometry1, + variant const& geometry2) + { + return apply_visitor(visitor(geometry1), geometry2); + } +}; + + +template +struct assign, variant > +{ + struct visitor: static_visitor + { + template + result_type operator()( + Geometry1& geometry1, + Geometry2 const& geometry2) const + { + return assign + < + Geometry1, + Geometry2 + >::apply + (geometry1, geometry2); + } + }; + + static inline void + apply(variant& geometry1, + variant const& geometry2) + { + return apply_visitor(visitor(), geometry1, geometry2); + } +}; + +} // namespace resolve_variant + + /*! \brief Assigns one geometry to another geometry \details The assign algorithm assigns one geometry, e.g. a BOX, to another @@ -142,25 +368,7 @@ geometry, e.g. a RING. This only works if it is possible and applicable. template inline void assign(Geometry1& geometry1, Geometry2 const& geometry2) { - concept::check_concepts_and_equal_dimensions(); - - bool const same_point_order = - point_order::value == point_order::value; - bool const same_closure = - closure::value == closure::value; - - BOOST_MPL_ASSERT_MSG - ( - same_point_order, ASSIGN_IS_NOT_SUPPORTED_FOR_DIFFERENT_POINT_ORDER - , (types) - ); - BOOST_MPL_ASSERT_MSG - ( - same_closure, ASSIGN_IS_NOT_SUPPORTED_FOR_DIFFERENT_CLOSURE - , (types) - ); - - dispatch::convert::apply(geometry2, geometry1); + resolve_variant::assign::apply(geometry1, geometry2); } diff --git a/3party/boost/boost/geometry/algorithms/buffer.hpp b/3party/boost/boost/geometry/algorithms/buffer.hpp index 29966d8cc8..b8b07ad4d9 100644 --- a/3party/boost/boost/geometry/algorithms/buffer.hpp +++ b/3party/boost/boost/geometry/algorithms/buffer.hpp @@ -17,16 +17,19 @@ #include #include - +#include +#include +#include #include +#include #include -#include #include #include -#include +#include #include +#include namespace boost { namespace geometry { @@ -92,21 +95,71 @@ struct buffer { template static inline void apply(BoxIn const& box_in, Distance const& distance, - Distance const& , BoxIn& box_out) + Distance const& , BoxOut& box_out) { detail::buffer::buffer_box(box_in, distance, box_out); } }; -// Many things to do. Point is easy, other geometries require self intersections -// For point, note that it should output as a polygon (like the rest). Buffers -// of a set of geometries are often lateron combined using a "dissolve" operation. -// Two points close to each other get a combined kidney shaped buffer then. - } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH +namespace resolve_variant { + +template +struct buffer +{ + template + static inline void apply(Geometry const& geometry, + Distance const& distance, + Distance const& chord_length, + GeometryOut& out) + { + dispatch::buffer::apply(geometry, distance, chord_length, out); + } +}; + +template +struct buffer > +{ + template + struct visitor: boost::static_visitor + { + Distance const& m_distance; + Distance const& m_chord_length; + GeometryOut& m_out; + + visitor(Distance const& distance, + Distance const& chord_length, + GeometryOut& out) + : m_distance(distance), + m_chord_length(chord_length), + m_out(out) + {} + + template + void operator()(Geometry const& geometry) const + { + buffer::apply(geometry, m_distance, m_chord_length, m_out); + } + }; + + template + static inline void apply( + boost::variant const& geometry, + Distance const& distance, + Distance const& chord_length, + GeometryOut& out + ) + { + boost::apply_visitor(visitor(distance, chord_length, out), geometry); + } +}; + +} // namespace resolve_variant + + /*! \brief \brief_calc{buffer} \ingroup buffer @@ -118,7 +171,6 @@ struct buffer \param geometry_out \param_geometry \param distance The distance to be used for the buffer \param chord_length (optional) The length of the chord's in the generated arcs around points or bends -\note Currently only implemented for box, the trivial case, but still useful \qbk{[include reference/algorithms/buffer.qbk]} */ @@ -129,11 +181,7 @@ inline void buffer(Input const& geometry_in, Output& geometry_out, concept::check(); concept::check(); - dispatch::buffer - < - Input, - Output - >::apply(geometry_in, distance, chord_length, geometry_out); + resolve_variant::buffer::apply(geometry_in, distance, chord_length, geometry_out); } /*! @@ -146,7 +194,7 @@ inline void buffer(Input const& geometry_in, Output& geometry_out, \param geometry \param_geometry \param distance The distance to be used for the buffer \param chord_length (optional) The length of the chord's in the generated arcs - around points or bends + around points or bends (RESERVED, NOT YET USED) \return \return_calc{buffer} */ template @@ -157,15 +205,78 @@ Output return_buffer(Input const& geometry, Distance const& distance, Distance c Output geometry_out; - dispatch::buffer - < - Input, - Output - >::apply(geometry, distance, chord_length, geometry_out); + resolve_variant::buffer::apply(geometry, distance, chord_length, geometry_out); return geometry_out; } +/*! +\brief \brief_calc{buffer} +\ingroup buffer +\details \details_calc{buffer, \det_buffer}. +\tparam GeometryIn \tparam_geometry +\tparam MultiPolygon \tparam_geometry{MultiPolygon} +\tparam DistanceStrategy A strategy defining distance (or radius) +\tparam SideStrategy A strategy defining creation along sides +\tparam JoinStrategy A strategy defining creation around convex corners +\tparam EndStrategy A strategy defining creation at linestring ends +\tparam PointStrategy A strategy defining creation around points +\param geometry_in \param_geometry +\param geometry_out output multi polygon (or std:: collection of polygons), + will contain a buffered version of the input geometry +\param distance_strategy The distance strategy to be used +\param side_strategy The side strategy to be used +\param join_strategy The join strategy to be used +\param end_strategy The end strategy to be used +\param point_strategy The point strategy to be used + +\qbk{distinguish,with strategies} +\qbk{[include reference/algorithms/buffer_with_strategies.qbk]} + */ +template +< + typename GeometryIn, + typename MultiPolygon, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy +> +inline void buffer(GeometryIn const& geometry_in, + MultiPolygon& geometry_out, + DistanceStrategy const& distance_strategy, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& point_strategy) +{ + typedef typename boost::range_value::type polygon_type; + concept::check(); + concept::check(); + + typedef typename point_type::type point_type; + typedef typename rescale_policy_type::type rescale_policy_type; + + geometry_out.clear(); + + model::box box; + envelope(geometry_in, box); + buffer(box, box, distance_strategy.max_distance(join_strategy, end_strategy)); + + rescale_policy_type rescale_policy + = boost::geometry::get_rescale_policy(box); + + detail::buffer::buffer_inserter(geometry_in, std::back_inserter(geometry_out), + distance_strategy, + side_strategy, + join_strategy, + end_strategy, + point_strategy, + rescale_policy); +} + + }} // namespace boost::geometry #endif // BOOST_GEOMETRY_ALGORITHMS_BUFFER_HPP diff --git a/3party/boost/boost/geometry/algorithms/centroid.hpp b/3party/boost/boost/geometry/algorithms/centroid.hpp index 9be51f4093..2d8a737a18 100644 --- a/3party/boost/boost/geometry/algorithms/centroid.hpp +++ b/3party/boost/boost/geometry/algorithms/centroid.hpp @@ -3,6 +3,7 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -18,7 +19,10 @@ #include #include -#include +#include +#include +#include +#include #include #include @@ -27,18 +31,24 @@ #include #include #include +#include +#include -#include -#include -#include #include + +#include +#include +#include #include #include +#include #include #include #include +#include +#include namespace boost { namespace geometry @@ -63,8 +73,15 @@ class centroid_exception : public geometry::exception { public: + /*! + \brief The default constructor + */ inline centroid_exception() {} + /*! + \brief Returns the explanatory string. + \return Pointer to a null-terminated string with explanatory information. + */ virtual char const* what() const throw() { return "Boost.Geometry Centroid calculation exception"; @@ -90,55 +107,56 @@ struct centroid_point template < - typename Box, + typename Indexed, typename Point, std::size_t Dimension, std::size_t DimensionCount > -struct centroid_box_calculator +struct centroid_indexed_calculator { typedef typename select_coordinate_type < - Box, Point + Indexed, Point >::type coordinate_type; - static inline void apply(Box const& box, Point& centroid) + static inline void apply(Indexed const& indexed, Point& centroid) { - coordinate_type const c1 = get(box); - coordinate_type const c2 = get(box); + coordinate_type const c1 = get(indexed); + coordinate_type const c2 = get(indexed); coordinate_type m = c1 + c2; - m /= 2.0; + coordinate_type const two = 2; + m /= two; set(centroid, m); - centroid_box_calculator + centroid_indexed_calculator < - Box, Point, + Indexed, Point, Dimension + 1, DimensionCount - >::apply(box, centroid); + >::apply(indexed, centroid); } }; -template -struct centroid_box_calculator +template +struct centroid_indexed_calculator { - static inline void apply(Box const& , Point& ) + static inline void apply(Indexed const& , Point& ) { } }; -struct centroid_box +struct centroid_indexed { - template - static inline void apply(Box const& box, Point& centroid, + template + static inline void apply(Indexed const& indexed, Point& centroid, Strategy const&) { - centroid_box_calculator + centroid_indexed_calculator < - Box, Point, - 0, dimension::type::value - >::apply(box, centroid); + Indexed, Point, + 0, dimension::type::value + >::apply(indexed, centroid); } }; @@ -231,9 +249,11 @@ struct centroid_polygon_state per_ring::apply(exterior_ring(poly), strategy, state); - typename interior_return_type::type rings - = interior_rings(poly); - for (BOOST_AUTO_TPL(it, boost::begin(rings)); it != boost::end(rings); ++it) + typename interior_return_type::type + rings = interior_rings(poly); + + for (typename detail::interior_iterator::type + it = boost::begin(rings); it != boost::end(rings); ++it) { per_ring::apply(*it, strategy, state); } @@ -256,6 +276,59 @@ struct centroid_polygon }; +/*! + \brief Building block of a multi-point, to be used as Policy in the + more generec centroid_multi +*/ +struct centroid_multi_point_state +{ + template + static inline void apply(Point const& point, + Strategy const& strategy, typename Strategy::state_type& state) + { + strategy.apply(point, state); + } +}; + + +/*! + \brief Generic implementation which calls a policy to calculate the + centroid of the total of its single-geometries + \details The Policy is, in general, the single-version, with state. So + detail::centroid::centroid_polygon_state is used as a policy for this + detail::centroid::centroid_multi + +*/ +template +struct centroid_multi +{ + template + static inline void apply(Multi const& multi, Point& centroid, + Strategy const& strategy) + { +#if ! defined(BOOST_GEOMETRY_CENTROID_NO_THROW) + // If there is nothing in any of the ranges, it is not possible + // to calculate the centroid + if (geometry::num_points(multi) == 0) + { + throw centroid_exception(); + } +#endif + + typename Strategy::state_type state; + + for (typename boost::range_iterator::type + it = boost::begin(multi); + it != boost::end(multi); + ++it) + { + Policy::apply(*it, strategy, state); + } + Strategy::result(state, centroid); + } +}; + + }} // namespace detail::centroid #endif // DOXYGEN_NO_DETAIL @@ -279,7 +352,12 @@ struct centroid template struct centroid - : detail::centroid::centroid_box + : detail::centroid::centroid_indexed +{}; + +template +struct centroid + : detail::centroid::centroid_indexed {}; template @@ -290,17 +368,124 @@ struct centroid template struct centroid : detail::centroid::centroid_range - {}; +{}; template struct centroid : detail::centroid::centroid_polygon - {}; +{}; + +template +struct centroid + : detail::centroid::centroid_multi + < + detail::centroid::centroid_range_state + > +{}; + +template +struct centroid + : detail::centroid::centroid_multi + < + detail::centroid::centroid_polygon_state + > +{}; + +template +struct centroid + : detail::centroid::centroid_multi + < + detail::centroid::centroid_multi_point_state + > +{}; + } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH +namespace resolve_strategy { + +template +struct centroid +{ + template + static inline void apply(Geometry const& geometry, Point& out, Strategy const& strategy) + { + dispatch::centroid::apply(geometry, out, strategy); + } + + template + static inline void apply(Geometry const& geometry, Point& out, default_strategy) + { + typedef typename strategy::centroid::services::default_strategy + < + typename cs_tag::type, + typename tag_cast + < + typename tag::type, + pointlike_tag, + linear_tag, + areal_tag + >::type, + dimension::type::value, + Point, + Geometry + >::type strategy_type; + + dispatch::centroid::apply(geometry, out, strategy_type()); + } +}; + +} // namespace resolve_strategy + + +namespace resolve_variant { + +template +struct centroid +{ + template + static inline void apply(Geometry const& geometry, Point& out, Strategy const& strategy) + { + concept::check_concepts_and_equal_dimensions(); + resolve_strategy::centroid::apply(geometry, out, strategy); + } +}; + +template +struct centroid > +{ + template + struct visitor: boost::static_visitor + { + Point& m_out; + Strategy const& m_strategy; + + visitor(Point& out, Strategy const& strategy) + : m_out(out), m_strategy(strategy) + {} + + template + void operator()(Geometry const& geometry) const + { + centroid::apply(geometry, m_out, m_strategy); + } + }; + + template + static inline void + apply(boost::variant const& geometry, + Point& out, + Strategy const& strategy) + { + boost::apply_visitor(visitor(out, strategy), geometry); + } +}; + +} // namespace resolve_variant + + /*! \brief \brief_calc{centroid} \brief_strategy \ingroup centroid @@ -322,15 +507,7 @@ template inline void centroid(Geometry const& geometry, Point& c, Strategy const& strategy) { - //BOOST_CONCEPT_ASSERT( (geometry::concept::CentroidStrategy) ); - - concept::check_concepts_and_equal_dimensions(); - - typedef typename point_type::type point_type; - - // Call dispatch apply method. That one returns true if centroid - // should be taken from state. - dispatch::centroid::apply(geometry, c, strategy); + resolve_variant::centroid::apply(geometry, c, strategy); } @@ -353,24 +530,7 @@ inline void centroid(Geometry const& geometry, Point& c, template inline void centroid(Geometry const& geometry, Point& c) { - concept::check_concepts_and_equal_dimensions(); - - typedef typename strategy::centroid::services::default_strategy - < - typename cs_tag::type, - typename tag_cast - < - typename tag::type, - pointlike_tag, - linear_tag, - areal_tag - >::type, - dimension::type::value, - Point, - Geometry - >::type strategy_type; - - centroid(geometry, c, strategy_type()); + centroid(geometry, c, default_strategy()); } @@ -388,8 +548,6 @@ inline void centroid(Geometry const& geometry, Point& c) template inline Point return_centroid(Geometry const& geometry) { - concept::check_concepts_and_equal_dimensions(); - Point c; centroid(geometry, c); return c; @@ -413,10 +571,6 @@ inline Point return_centroid(Geometry const& geometry) template inline Point return_centroid(Geometry const& geometry, Strategy const& strategy) { - //BOOST_CONCEPT_ASSERT( (geometry::concept::CentroidStrategy) ); - - concept::check_concepts_and_equal_dimensions(); - Point c; centroid(geometry, c, strategy); return c; diff --git a/3party/boost/boost/geometry/algorithms/clear.hpp b/3party/boost/boost/geometry/algorithms/clear.hpp index b8cd0dca71..1850816b1b 100644 --- a/3party/boost/boost/geometry/algorithms/clear.hpp +++ b/3party/boost/boost/geometry/algorithms/clear.hpp @@ -15,17 +15,19 @@ #define BOOST_GEOMETRY_ALGORITHMS_CLEAR_HPP +#include +#include +#include +#include + #include #include #include #include #include #include +#include #include -#include -#include -#include -#include namespace boost { namespace geometry @@ -125,16 +127,28 @@ struct clear template -struct devarianted_clear +struct clear + : detail::clear::collection_clear +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +namespace resolve_variant { + +template +struct clear { static inline void apply(Geometry& geometry) { - clear::apply(geometry); + dispatch::clear::apply(geometry); } }; template -struct devarianted_clear > +struct clear > { struct visitor: static_visitor { @@ -151,9 +165,7 @@ struct devarianted_clear > } }; - -} // namespace dispatch -#endif // DOXYGEN_NO_DISPATCH +} // namespace resolve_variant /*! @@ -174,7 +186,7 @@ inline void clear(Geometry& geometry) { concept::check(); - dispatch::devarianted_clear::apply(geometry); + resolve_variant::clear::apply(geometry); } diff --git a/3party/boost/boost/geometry/algorithms/comparable_distance.hpp b/3party/boost/boost/geometry/algorithms/comparable_distance.hpp index 3467045ca2..6f009da3ed 100644 --- a/3party/boost/boost/geometry/algorithms/comparable_distance.hpp +++ b/3party/boost/boost/geometry/algorithms/comparable_distance.hpp @@ -1,8 +1,13 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. -// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. -// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -14,61 +19,7 @@ #ifndef BOOST_GEOMETRY_ALGORITHMS_COMPARABLE_DISTANCE_HPP #define BOOST_GEOMETRY_ALGORITHMS_COMPARABLE_DISTANCE_HPP - -#include - - -namespace boost { namespace geometry -{ - - -/*! -\brief \brief_calc2{comparable distance measurement} -\ingroup distance -\details The free function comparable_distance does not necessarily calculate the distance, - but it calculates a distance measure such that two distances are comparable to each other. - For example: for the Cartesian coordinate system, Pythagoras is used but the square root - is not taken, which makes it faster and the results of two point pairs can still be - compared to each other. -\tparam Geometry1 first geometry type -\tparam Geometry2 second geometry type -\param geometry1 \param_geometry -\param geometry2 \param_geometry -\return \return_calc{comparable distance} - -\qbk{[include reference/algorithms/comparable_distance.qbk]} - */ -template -inline typename default_distance_result::type comparable_distance( - Geometry1 const& geometry1, Geometry2 const& geometry2) -{ - concept::check(); - concept::check(); - - typedef typename point_type::type point1_type; - typedef typename point_type::type point2_type; - - // Define a point-point-distance-strategy - // for either the normal case, either the reversed case - - typedef typename strategy::distance::services::comparable_type - < - typename boost::mpl::if_c - < - geometry::reverse_dispatch - ::type::value, - typename strategy::distance::services::default_strategy - ::type, - typename strategy::distance::services::default_strategy - ::type - >::type - >::type strategy_type; - - return distance(geometry1, geometry2, strategy_type()); -} - - -}} // namespace boost::geometry - +#include +#include #endif // BOOST_GEOMETRY_ALGORITHMS_COMPARABLE_DISTANCE_HPP diff --git a/3party/boost/boost/geometry/algorithms/convert.hpp b/3party/boost/boost/geometry/algorithms/convert.hpp index 6b48ca604a..f8685af2d7 100644 --- a/3party/boost/boost/geometry/algorithms/convert.hpp +++ b/3party/boost/boost/geometry/algorithms/convert.hpp @@ -3,6 +3,7 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -20,6 +21,10 @@ #include #include #include +#include +#include +#include +#include #include #include @@ -31,6 +36,7 @@ #include #include #include +#include #include #include @@ -38,11 +44,9 @@ #include #include #include -#include +#include -#include -#include -#include +#include namespace boost { namespace geometry @@ -51,7 +55,7 @@ namespace boost { namespace geometry // Silence warning C4127: conditional expression is constant // Silence warning C4512: assignment operator could not be generated #if defined(_MSC_VER) -#pragma warning(push) +#pragma warning(push) #pragma warning(disable : 4127 4512) #endif @@ -127,22 +131,22 @@ struct segment_to_range } }; -template +template < - typename Range1, - typename Range2, + typename Range1, + typename Range2, bool Reverse = false > struct range_to_range { typedef typename reversible_view < - Range1 const, + Range1 const, Reverse ? iterate_reverse : iterate_forward >::type rview_type; typedef typename closeable_view < - rview_type const, + rview_type const, geometry::closure::value >::type view_type; @@ -178,7 +182,7 @@ struct polygon_to_polygon { typedef range_to_range < - typename geometry::ring_type::type, + typename geometry::ring_type::type, typename geometry::ring_type::type, geometry::point_order::value != geometry::point_order::value @@ -188,7 +192,7 @@ struct polygon_to_polygon { // Clearing managed per ring, and in the resizing of interior rings - per_ring::apply(geometry::exterior_ring(source), + per_ring::apply(geometry::exterior_ring(source), geometry::exterior_ring(destination)); // Container should be resizeable @@ -200,13 +204,15 @@ struct polygon_to_polygon >::type >::apply(interior_rings(destination), num_interior_rings(source)); - typename interior_return_type::type rings_source - = interior_rings(source); - typename interior_return_type::type rings_dest - = interior_rings(destination); + typename interior_return_type::type + rings_source = interior_rings(source); + typename interior_return_type::type + rings_dest = interior_rings(destination); - BOOST_AUTO_TPL(it_source, boost::begin(rings_source)); - BOOST_AUTO_TPL(it_dest, boost::begin(rings_dest)); + typename detail::interior_iterator::type + it_source = boost::begin(rings_source); + typename detail::interior_iterator::type + it_dest = boost::begin(rings_dest); for ( ; it_source != boost::end(rings_source); ++it_source, ++it_dest) { @@ -215,6 +221,37 @@ struct polygon_to_polygon } }; +template +struct single_to_multi: private Policy +{ + static inline void apply(Single const& single, Multi& multi) + { + traits::resize::apply(multi, 1); + Policy::apply(single, *boost::begin(multi)); + } +}; + + + +template +struct multi_to_multi: private Policy +{ + static inline void apply(Multi1 const& multi1, Multi2& multi2) + { + traits::resize::apply(multi2, boost::size(multi1)); + + typename boost::range_iterator::type it1 + = boost::begin(multi1); + typename boost::range_iterator::type it2 + = boost::begin(multi2); + + for (; it1 != boost::end(multi1); ++it1, ++it2) + { + Policy::apply(*it1, *it2); + } + } +}; + }} // namespace detail::conversion #endif // DOXYGEN_NO_DETAIL @@ -292,8 +329,8 @@ struct convert struct convert : detail::conversion::range_to_range - < - Ring1, + < + Ring1, Ring2, geometry::point_order::value != geometry::point_order::value @@ -314,8 +351,8 @@ template struct convert : detail::conversion::box_to_range < - Box, - Ring, + Box, + Ring, geometry::closure::value == closed, geometry::point_order::value == counterclockwise > @@ -389,18 +426,74 @@ struct convert }; +// Dispatch for multi <-> multi, specifying their single-version as policy. +// Note that, even if the multi-types are mutually different, their single +// version types might be the same and therefore we call boost::is_same again + +template +struct convert + : detail::conversion::multi_to_multi + < + Multi1, + Multi2, + convert + < + typename boost::range_value::type, + typename boost::range_value::type, + typename single_tag_of + < + typename tag::type + >::type, + typename single_tag_of + < + typename tag::type + >::type, + DimensionCount + > + > +{}; + + +template +struct convert + : detail::conversion::single_to_multi + < + Single, + Multi, + convert + < + Single, + typename boost::range_value::type, + typename tag::type, + typename single_tag_of + < + typename tag::type + >::type, + DimensionCount, + false + > + > +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +namespace resolve_variant { + template -struct devarianted_convert +struct convert { static inline void apply(Geometry1 const& geometry1, Geometry2& geometry2) { concept::check_concepts_and_equal_dimensions(); - convert::apply(geometry1, geometry2); + dispatch::convert::apply(geometry1, geometry2); } }; template -struct devarianted_convert, Geometry2> +struct convert, Geometry2> { struct visitor: static_visitor { @@ -413,7 +506,7 @@ struct devarianted_convert, Geometr template inline void operator()(Geometry1 const& geometry1) const { - devarianted_convert::apply(geometry1, m_geometry2); + convert::apply(geometry1, m_geometry2); } }; @@ -426,17 +519,15 @@ struct devarianted_convert, Geometr } }; - -} // namespace dispatch -#endif // DOXYGEN_NO_DISPATCH +} /*! \brief Converts one geometry to another geometry \details The convert algorithm converts one geometry, e.g. a BOX, to another geometry, e.g. a RING. This only works if it is possible and applicable. -If the point-order is different, or the closure is different between two -geometry types, it will be converted correctly by explicitly reversing the +If the point-order is different, or the closure is different between two +geometry types, it will be converted correctly by explicitly reversing the points or closing or opening the polygon rings. \ingroup convert \tparam Geometry1 \tparam_geometry @@ -449,7 +540,7 @@ points or closing or opening the polygon rings. template inline void convert(Geometry1 const& geometry1, Geometry2& geometry2) { - dispatch::devarianted_convert::apply(geometry1, geometry2); + resolve_variant::convert::apply(geometry1, geometry2); } #if defined(_MSC_VER) diff --git a/3party/boost/boost/geometry/algorithms/convex_hull.hpp b/3party/boost/boost/geometry/algorithms/convex_hull.hpp index a623064bf2..d5bd4d92a5 100644 --- a/3party/boost/boost/geometry/algorithms/convex_hull.hpp +++ b/3party/boost/boost/geometry/algorithms/convex_hull.hpp @@ -15,6 +15,9 @@ #define BOOST_GEOMETRY_ALGORITHMS_CONVEX_HULL_HPP #include +#include +#include +#include #include #include @@ -24,6 +27,7 @@ #include #include +#include #include @@ -77,18 +81,6 @@ struct hull_to_geometry } }; - -// Helper metafunction for default strategy retrieval -template -struct default_strategy - : strategy_convex_hull - < - Geometry, - typename point_type::type - > -{}; - - }} // namespace detail::convex_hull #endif // DOXYGEN_NO_DETAIL @@ -142,25 +134,169 @@ struct convex_hull_insert #endif // DOXYGEN_NO_DISPATCH -template -inline void convex_hull(Geometry const& geometry, - OutputGeometry& out, Strategy const& strategy) +namespace resolve_strategy { + +struct convex_hull { - concept::check_concepts_and_equal_dimensions - < + template + static inline void apply(Geometry const& geometry, + OutputGeometry& out, + Strategy const& strategy) + { + BOOST_CONCEPT_ASSERT( (geometry::concept::ConvexHullStrategy) ); + dispatch::convex_hull::apply(geometry, out, strategy); + } + + template + static inline void apply(Geometry const& geometry, + OutputGeometry& out, + default_strategy) + { + typedef typename strategy_convex_hull< + Geometry, + typename point_type::type + >::type strategy_type; + + apply(geometry, out, strategy_type()); + } +}; + +struct convex_hull_insert +{ + template + static inline OutputIterator apply(Geometry const& geometry, + OutputIterator& out, + Strategy const& strategy) + { + BOOST_CONCEPT_ASSERT( (geometry::concept::ConvexHullStrategy) ); + + return dispatch::convex_hull_insert< + geometry::point_order::value + >::apply(geometry, out, strategy); + } + + template + static inline OutputIterator apply(Geometry const& geometry, + OutputIterator& out, + default_strategy) + { + typedef typename strategy_convex_hull< + Geometry, + typename point_type::type + >::type strategy_type; + + return apply(geometry, out, strategy_type()); + } +}; + +}; // namespace resolve_strategy + + +namespace resolve_variant { + +template +struct convex_hull +{ + template + static inline void apply(Geometry const& geometry, OutputGeometry& out, Strategy const& strategy) + { + concept::check_concepts_and_equal_dimensions< const Geometry, OutputGeometry >(); - BOOST_CONCEPT_ASSERT( (geometry::concept::ConvexHullStrategy) ); + resolve_strategy::convex_hull::apply(geometry, out, strategy); + } +}; +template +struct convex_hull > +{ + template + struct visitor: boost::static_visitor + { + OutputGeometry& m_out; + Strategy const& m_strategy; + + visitor(OutputGeometry& out, Strategy const& strategy) + : m_out(out), m_strategy(strategy) + {} + + template + void operator()(Geometry const& geometry) const + { + convex_hull::apply(geometry, m_out, m_strategy); + } + }; + + template + static inline void + apply(boost::variant const& geometry, + OutputGeometry& out, + Strategy const& strategy) + { + boost::apply_visitor(visitor(out, strategy), geometry); + } +}; + +template +struct convex_hull_insert +{ + template + static inline OutputIterator apply(Geometry const& geometry, OutputIterator& out, Strategy const& strategy) + { + // Concept: output point type = point type of input geometry + concept::check(); + concept::check::type>(); + + return resolve_strategy::convex_hull_insert::apply(geometry, out, strategy); + } +}; + +template +struct convex_hull_insert > +{ + template + struct visitor: boost::static_visitor + { + OutputIterator& m_out; + Strategy const& m_strategy; + + visitor(OutputIterator& out, Strategy const& strategy) + : m_out(out), m_strategy(strategy) + {} + + template + OutputIterator operator()(Geometry const& geometry) const + { + return convex_hull_insert::apply(geometry, m_out, m_strategy); + } + }; + + template + static inline OutputIterator + apply(boost::variant const& geometry, + OutputIterator& out, + Strategy const& strategy) + { + return boost::apply_visitor(visitor(out, strategy), geometry); + } +}; + +} // namespace resolve_variant + + +template +inline void convex_hull(Geometry const& geometry, + OutputGeometry& out, Strategy const& strategy) +{ if (geometry::num_points(geometry) == 0) { // Leave output empty return; } - dispatch::convex_hull::apply(geometry, out, strategy); + resolve_variant::convex_hull::apply(geometry, out, strategy); } @@ -179,15 +315,7 @@ template inline void convex_hull(Geometry const& geometry, OutputGeometry& hull) { - concept::check_concepts_and_equal_dimensions - < - const Geometry, - OutputGeometry - >(); - - typedef typename detail::convex_hull::default_strategy::type strategy_type; - - convex_hull(geometry, hull, strategy_type()); + convex_hull(geometry, hull, default_strategy()); } #ifndef DOXYGEN_NO_DETAIL @@ -199,16 +327,8 @@ template inline OutputIterator convex_hull_insert(Geometry const& geometry, OutputIterator out, Strategy const& strategy) { - // Concept: output point type = point type of input geometry - concept::check(); - concept::check::type>(); - - BOOST_CONCEPT_ASSERT( (geometry::concept::ConvexHullStrategy) ); - - return dispatch::convex_hull_insert - < - geometry::point_order::value - >::apply(geometry, out, strategy); + return resolve_variant::convex_hull_insert + ::apply(geometry, out, strategy); } @@ -229,13 +349,7 @@ template inline OutputIterator convex_hull_insert(Geometry const& geometry, OutputIterator out) { - // Concept: output point type = point type of input geometry - concept::check(); - concept::check::type>(); - - typedef typename detail::convex_hull::default_strategy::type strategy_type; - - return convex_hull_insert(geometry, out, strategy_type()); + return convex_hull_insert(geometry, out, default_strategy()); } diff --git a/3party/boost/boost/geometry/algorithms/correct.hpp b/3party/boost/boost/geometry/algorithms/correct.hpp index 79c76a567d..3c61b2c0d2 100644 --- a/3party/boost/boost/geometry/algorithms/correct.hpp +++ b/3party/boost/boost/geometry/algorithms/correct.hpp @@ -3,6 +3,7 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -21,28 +22,34 @@ #include #include -#include +#include +#include +#include +#include + +#include #include #include -#include -#include #include #include +#include +#include +#include #include #include #include +#include #include - namespace boost { namespace geometry { // Silence warning C4127: conditional expression is constant #if defined(_MSC_VER) -#pragma warning(push) +#pragma warning(push) #pragma warning(disable : 4127) #endif @@ -176,9 +183,10 @@ struct correct_polygon std::less >::apply(exterior_ring(poly)); - typename interior_return_type::type rings - = interior_rings(poly); - for (BOOST_AUTO_TPL(it, boost::begin(rings)); it != boost::end(rings); ++it) + typename interior_return_type::type + rings = interior_rings(poly); + for (typename detail::interior_iterator::type + it = boost::begin(rings); it != boost::end(rings); ++it) { correct_ring < @@ -238,10 +246,69 @@ struct correct {}; +template +struct correct + : detail::correct::correct_nop +{}; + + +template +struct correct + : detail::correct::correct_nop +{}; + + +template +struct correct + : detail::multi_modify + < + Geometry, + detail::correct::correct_polygon + < + typename boost::range_value::type + > + > +{}; + + } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH +namespace resolve_variant { + +template +struct correct +{ + static inline void apply(Geometry& geometry) + { + concept::check(); + dispatch::correct::apply(geometry); + } +}; + +template +struct correct > +{ + struct visitor: boost::static_visitor + { + template + void operator()(Geometry& geometry) const + { + correct::apply(geometry); + } + }; + + static inline void + apply(boost::variant& geometry) + { + boost::apply_visitor(visitor(), geometry); + } +}; + +} // namespace resolve_variant + + /*! \brief Corrects a geometry \details Corrects a geometry: all rings which are wrongly oriented with respect @@ -257,9 +324,7 @@ struct correct template inline void correct(Geometry& geometry) { - concept::check(); - - dispatch::correct::apply(geometry); + resolve_variant::correct::apply(geometry); } #if defined(_MSC_VER) diff --git a/3party/boost/boost/geometry/algorithms/covered_by.hpp b/3party/boost/boost/geometry/algorithms/covered_by.hpp index f0f5724213..e50dc338af 100644 --- a/3party/boost/boost/geometry/algorithms/covered_by.hpp +++ b/3party/boost/boost/geometry/algorithms/covered_by.hpp @@ -4,6 +4,9 @@ // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013, 2014 Oracle and/or its affiliates. + // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -11,21 +14,52 @@ // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + #ifndef BOOST_GEOMETRY_ALGORITHMS_COVERED_BY_HPP #define BOOST_GEOMETRY_ALGORITHMS_COVERED_BY_HPP #include +#include +#include +#include + #include #include #include #include +#include namespace boost { namespace geometry { +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace covered_by { + +struct use_point_in_geometry +{ + template + static inline bool apply(Geometry1 const& geometry1, Geometry2 const& geometry2, Strategy const& strategy) + { + return detail::within::point_in_geometry(geometry1, geometry2, strategy) >= 0; + } +}; + +struct use_relate +{ + template + static inline bool apply(Geometry1 const& geometry1, Geometry2 const& geometry2, Strategy const& /*strategy*/) + { + return Strategy::apply(geometry1, geometry2); + } +}; + +}} // namespace detail::covered_by +#endif // DOXYGEN_NO_DETAIL + #ifndef DOXYGEN_NO_DISPATCH namespace dispatch { @@ -37,7 +71,8 @@ template typename Tag1 = typename tag::type, typename Tag2 = typename tag::type > -struct covered_by: not_implemented +struct covered_by + : not_implemented {}; @@ -65,45 +100,328 @@ struct covered_by }; +// P/P + +template +struct covered_by + : public detail::covered_by::use_point_in_geometry +{}; + +template +struct covered_by + : public detail::covered_by::use_point_in_geometry +{}; + +// P/L + +template +struct covered_by + : public detail::covered_by::use_point_in_geometry +{}; + +template +struct covered_by + : public detail::covered_by::use_point_in_geometry +{}; + +template +struct covered_by + : public detail::covered_by::use_point_in_geometry +{}; + +// P/A template struct covered_by -{ - template - static inline bool apply(Point const& point, Ring const& ring, Strategy const& strategy) - { - return detail::within::point_in_ring - < - Point, - Ring, - order_as_direction::value>::value, - geometry::closure::value, - Strategy - >::apply(point, ring, strategy) >= 0; - } -}; + : public detail::covered_by::use_point_in_geometry +{}; template struct covered_by -{ - template - static inline bool apply(Point const& point, Polygon const& polygon, Strategy const& strategy) - { - return detail::within::point_in_polygon - < - Point, - Polygon, - order_as_direction::value>::value, - geometry::closure::value, - Strategy - >::apply(point, polygon, strategy) >= 0; - } -}; + : public detail::covered_by::use_point_in_geometry +{}; + +template +struct covered_by + : public detail::covered_by::use_point_in_geometry +{}; + +// L/L + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +// L/A + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +// A/A + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; + +template +struct covered_by + : public detail::covered_by::use_relate +{}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH +namespace resolve_strategy { + +struct covered_by +{ + template + static inline bool apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + concept::within::check + < + typename tag::type, + typename tag::type, + typename tag_cast::type, areal_tag>::type, + Strategy + >(); + concept::check(); + concept::check(); + assert_dimension_equal(); + + return dispatch::covered_by::apply(geometry1, + geometry2, + strategy); + } + + template + static inline bool apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + default_strategy) + { + typedef typename point_type::type point_type1; + typedef typename point_type::type point_type2; + + typedef typename strategy::covered_by::services::default_strategy + < + typename tag::type, + typename tag::type, + typename tag::type, + typename tag_cast::type, areal_tag>::type, + typename tag_cast + < + typename cs_tag::type, spherical_tag + >::type, + typename tag_cast + < + typename cs_tag::type, spherical_tag + >::type, + Geometry1, + Geometry2 + >::type strategy_type; + + return covered_by::apply(geometry1, geometry2, strategy_type()); + } +}; + +} // namespace resolve_strategy + + +namespace resolve_variant { + +template +struct covered_by +{ + template + static inline bool apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + return resolve_strategy::covered_by + ::apply(geometry1, geometry2, strategy); + } +}; + +template +struct covered_by, Geometry2> +{ + template + struct visitor: boost::static_visitor + { + Geometry2 const& m_geometry2; + Strategy const& m_strategy; + + visitor(Geometry2 const& geometry2, Strategy const& strategy) + : m_geometry2(geometry2), m_strategy(strategy) {} + + template + bool operator()(Geometry1 const& geometry1) const + { + return covered_by + ::apply(geometry1, m_geometry2, m_strategy); + } + }; + + template + static inline bool + apply(boost::variant const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + return boost::apply_visitor(visitor(geometry2, strategy), geometry1); + } +}; + +template +struct covered_by > +{ + template + struct visitor: boost::static_visitor + { + Geometry1 const& m_geometry1; + Strategy const& m_strategy; + + visitor(Geometry1 const& geometry1, Strategy const& strategy) + : m_geometry1(geometry1), m_strategy(strategy) {} + + template + bool operator()(Geometry2 const& geometry2) const + { + return covered_by + ::apply(m_geometry1, geometry2, m_strategy); + } + }; + + template + static inline bool + apply(Geometry1 const& geometry1, + boost::variant const& geometry2, + Strategy const& strategy) + { + return boost::apply_visitor(visitor(geometry1, strategy), geometry2); + } +}; + +template < + BOOST_VARIANT_ENUM_PARAMS(typename T1), + BOOST_VARIANT_ENUM_PARAMS(typename T2) +> +struct covered_by< + boost::variant, + boost::variant +> +{ + template + struct visitor: boost::static_visitor + { + Strategy const& m_strategy; + + visitor(Strategy const& strategy): m_strategy(strategy) {} + + template + bool operator()(Geometry1 const& geometry1, + Geometry2 const& geometry2) const + { + return covered_by + ::apply(geometry1, geometry2, m_strategy); + } + }; + + template + static inline bool + apply(boost::variant const& geometry1, + boost::variant const& geometry2, + Strategy const& strategy) + { + return boost::apply_visitor(visitor(strategy), geometry1, geometry2); + } +}; + +} // namespace resolve_variant + + /*! \brief \brief_check12{is inside or on border} \ingroup covered_by @@ -122,36 +440,8 @@ struct covered_by template inline bool covered_by(Geometry1 const& geometry1, Geometry2 const& geometry2) { - concept::check(); - concept::check(); - assert_dimension_equal(); - - typedef typename point_type::type point_type1; - typedef typename point_type::type point_type2; - - typedef typename strategy::covered_by::services::default_strategy - < - typename tag::type, - typename tag::type, - typename tag::type, - typename tag_cast::type, areal_tag>::type, - typename tag_cast - < - typename cs_tag::type, spherical_tag - >::type, - typename tag_cast - < - typename cs_tag::type, spherical_tag - >::type, - Geometry1, - Geometry2 - >::type strategy_type; - - return dispatch::covered_by - < - Geometry1, - Geometry2 - >::apply(geometry1, geometry2, strategy_type()); + return resolve_variant::covered_by + ::apply(geometry1, geometry2, default_strategy()); } /*! @@ -174,22 +464,8 @@ template inline bool covered_by(Geometry1 const& geometry1, Geometry2 const& geometry2, Strategy const& strategy) { - concept::within::check - < - typename tag::type, - typename tag::type, - typename tag_cast::type, areal_tag>::type, - Strategy - >(); - concept::check(); - concept::check(); - assert_dimension_equal(); - - return dispatch::covered_by - < - Geometry1, - Geometry2 - >::apply(geometry1, geometry2, strategy); + return resolve_variant::covered_by + ::apply(geometry1, geometry2, strategy); } }} // namespace boost::geometry diff --git a/3party/boost/boost/geometry/algorithms/crosses.hpp b/3party/boost/boost/geometry/algorithms/crosses.hpp new file mode 100644 index 0000000000..91ed3e0806 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/crosses.hpp @@ -0,0 +1,194 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Samuel Debionne, Grenoble, France. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014 Oracle and/or its affiliates. + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_CROSSES_HPP +#define BOOST_GEOMETRY_ALGORITHMS_CROSSES_HPP + +#include +#include + +#include + +#include + +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +< + typename Geometry1, + typename Geometry2, + typename Tag1 = typename tag::type, + typename Tag2 = typename tag::type +> +struct crosses + : detail::relate::relate_base + < + detail::relate::static_mask_crosses_type, + Geometry1, + Geometry2 + > +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +namespace resolve_variant +{ + template + struct crosses + { + static inline bool + apply( + const Geometry1& geometry1, + const Geometry2& geometry2) + { + concept::check(); + concept::check(); + + return dispatch::crosses::apply(geometry1, geometry2); + } + }; + + + template + struct crosses, Geometry2> + { + struct visitor: static_visitor + { + Geometry2 const& m_geometry2; + + visitor(Geometry2 const& geometry2) + : m_geometry2(geometry2) + {} + + template + result_type operator()(Geometry1 const& geometry1) const + { + return crosses + < + Geometry1, + Geometry2 + >::apply + (geometry1, m_geometry2); + } + }; + + static inline bool + apply(variant const& geometry1, + Geometry2 const& geometry2) + { + return apply_visitor(visitor(geometry2), geometry1); + } + }; + + + template + struct crosses > + { + struct visitor: static_visitor + { + Geometry1 const& m_geometry1; + + visitor(Geometry1 const& geometry1) + : m_geometry1(geometry1) + {} + + template + result_type operator()(Geometry2 const& geometry2) const + { + return crosses + < + Geometry1, + Geometry2 + >::apply + (m_geometry1, geometry2); + } + }; + + static inline bool + apply( + Geometry1 const& geometry1, + const variant& geometry2) + { + return apply_visitor(visitor(geometry1), geometry2); + } + }; + + + template + struct crosses, variant > + { + struct visitor: static_visitor + { + template + result_type operator()( + Geometry1 const& geometry1, + Geometry2 const& geometry2) const + { + return crosses + < + Geometry1, + Geometry2 + >::apply + (geometry1, geometry2); + } + }; + + static inline bool + apply( + const variant& geometry1, + const variant& geometry2) + { + return apply_visitor(visitor(), geometry1, geometry2); + } + }; + +} // namespace resolve_variant + + +/*! +\brief \brief_check2{crosses} +\ingroup crosses +\tparam Geometry1 \tparam_geometry +\tparam Geometry2 \tparam_geometry +\param geometry1 \param_geometry +\param geometry2 \param_geometry +\return \return_check2{crosses} + +\qbk{[include reference/algorithms/crosses.qbk]} +*/ +template +inline bool crosses(Geometry1 const& geometry1, Geometry2 const& geometry2) +{ + return resolve_variant::crosses::apply(geometry1, geometry2); +} + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_CROSSES_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/assign_box_corners.hpp b/3party/boost/boost/geometry/algorithms/detail/assign_box_corners.hpp index 1637c30cce..f1bc596138 100644 --- a/3party/boost/boost/geometry/algorithms/detail/assign_box_corners.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/assign_box_corners.hpp @@ -26,7 +26,7 @@ namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DETAIL -namespace detail +namespace detail { // Note: this is moved to namespace detail because the names and parameter orders // are not yet 100% clear. @@ -69,8 +69,8 @@ inline void assign_box_corners(Box const& box, // Silence warning C4127: conditional expression is constant #if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable : 4127) +#pragma warning(push) +#pragma warning(disable : 4127) #endif diff --git a/3party/boost/boost/geometry/algorithms/detail/assign_indexed_point.hpp b/3party/boost/boost/geometry/algorithms/detail/assign_indexed_point.hpp index a1cffb80a7..acfc37e250 100644 --- a/3party/boost/boost/geometry/algorithms/detail/assign_indexed_point.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/assign_indexed_point.hpp @@ -25,7 +25,7 @@ namespace boost { namespace geometry { #ifndef DOXYGEN_NO_DETAIL -namespace detail +namespace detail { /*! diff --git a/3party/boost/boost/geometry/algorithms/detail/assign_values.hpp b/3party/boost/boost/geometry/algorithms/detail/assign_values.hpp index ed4713493f..5e4a1795b5 100644 --- a/3party/boost/boost/geometry/algorithms/detail/assign_values.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/assign_values.hpp @@ -46,36 +46,30 @@ namespace detail { namespace assign { -template -< - typename Box, std::size_t Index, - std::size_t Dimension, std::size_t DimensionCount -> +template struct initialize { - typedef typename coordinate_type::type coordinate_type; - - static inline void apply(Box& box, coordinate_type const& value) + template + static inline void apply(Box& box, typename coordinate_type::type const& value) { geometry::set(box, value); - initialize::apply(box, value); + initialize::apply(box, value); } }; -template -struct initialize +template +struct initialize { - typedef typename coordinate_type::type coordinate_type; - - static inline void apply(Box&, coordinate_type const& ) + template + static inline void apply(Box&, typename coordinate_type::type const&) {} }; -template struct assign_zero_point { + template static inline void apply(Point& point) { geometry::assign_value(point, 0); @@ -83,44 +77,38 @@ struct assign_zero_point }; -template struct assign_inverse_box_or_segment { - typedef typename point_type::type point_type; + template static inline void apply(BoxOrSegment& geometry) { + typedef typename point_type::type point_type; typedef typename coordinate_type::type bound_type; - initialize - < - BoxOrSegment, 0, 0, dimension::type::value - >::apply( - geometry, boost::numeric::bounds::highest()); - initialize - < - BoxOrSegment, 1, 0, dimension::type::value - >::apply( - geometry, boost::numeric::bounds::lowest()); + initialize<0, 0, dimension::type::value>::apply( + geometry, boost::numeric::bounds::highest() + ); + initialize<1, 0, dimension::type::value>::apply( + geometry, boost::numeric::bounds::lowest() + ); } }; -template struct assign_zero_box_or_segment { + template static inline void apply(BoxOrSegment& geometry) { typedef typename coordinate_type::type coordinate_type; - initialize - < - BoxOrSegment, 0, 0, dimension::type::value - >::apply(geometry, coordinate_type()); - initialize - < - BoxOrSegment, 1, 0, dimension::type::value - >::apply(geometry, coordinate_type()); + initialize<0, 0, dimension::type::value>::apply( + geometry, coordinate_type() + ); + initialize<1, 0, dimension::type::value>::apply( + geometry, coordinate_type() + ); } }; @@ -312,17 +300,17 @@ struct assign_zero {}; template struct assign_zero - : detail::assign::assign_zero_point + : detail::assign::assign_zero_point {}; template struct assign_zero - : detail::assign::assign_zero_box_or_segment + : detail::assign::assign_zero_box_or_segment {}; template struct assign_zero - : detail::assign::assign_zero_box_or_segment + : detail::assign::assign_zero_box_or_segment {}; @@ -331,112 +319,18 @@ struct assign_inverse {}; template struct assign_inverse - : detail::assign::assign_inverse_box_or_segment + : detail::assign::assign_inverse_box_or_segment {}; template struct assign_inverse - : detail::assign::assign_inverse_box_or_segment + : detail::assign::assign_inverse_box_or_segment {}; } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH - -/*! -\brief Assign two coordinates to a geometry (usually a 2D point) -\ingroup assign -\tparam Geometry \tparam_geometry -\tparam Type \tparam_numeric to specify the coordinates -\param geometry \param_geometry -\param c1 \param_x -\param c2 \param_y - -\qbk{distinguish, 2 coordinate values} -\qbk{ -[heading Example] -[assign_2d_point] [assign_2d_point_output] - -[heading See also] -\* [link geometry.reference.algorithms.make.make_2_2_coordinate_values make] -} - */ -template -inline void assign_values(Geometry& geometry, Type const& c1, Type const& c2) -{ - concept::check(); - - dispatch::assign - < - typename tag::type, - Geometry, - geometry::dimension::type::value - >::apply(geometry, c1, c2); -} - -/*! -\brief Assign three values to a geometry (usually a 3D point) -\ingroup assign -\tparam Geometry \tparam_geometry -\tparam Type \tparam_numeric to specify the coordinates -\param geometry \param_geometry -\param c1 \param_x -\param c2 \param_y -\param c3 \param_z - -\qbk{distinguish, 3 coordinate values} -\qbk{ -[heading Example] -[assign_3d_point] [assign_3d_point_output] - -[heading See also] -\* [link geometry.reference.algorithms.make.make_3_3_coordinate_values make] -} - */ -template -inline void assign_values(Geometry& geometry, - Type const& c1, Type const& c2, Type const& c3) -{ - concept::check(); - - dispatch::assign - < - typename tag::type, - Geometry, - geometry::dimension::type::value - >::apply(geometry, c1, c2, c3); -} - -/*! -\brief Assign four values to a geometry (usually a box or segment) -\ingroup assign -\tparam Geometry \tparam_geometry -\tparam Type \tparam_numeric to specify the coordinates -\param geometry \param_geometry -\param c1 First coordinate (usually x1) -\param c2 Second coordinate (usually y1) -\param c3 Third coordinate (usually x2) -\param c4 Fourth coordinate (usually y2) - -\qbk{distinguish, 4 coordinate values} - */ -template -inline void assign_values(Geometry& geometry, - Type const& c1, Type const& c2, Type const& c3, Type const& c4) -{ - concept::check(); - - dispatch::assign - < - typename tag::type, - Geometry, - geometry::dimension::type::value - >::apply(geometry, c1, c2, c3, c4); -} - - - }} // namespace boost::geometry diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp new file mode 100644 index 0000000000..51b495d9e3 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/buffer_inserter.hpp @@ -0,0 +1,856 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFER_INSERTER_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFER_INSERTER_HPP + +#include +#include + +#include + +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +#if defined(BOOST_GEOMETRY_BUFFER_SIMPLIFY_WITH_AX) +#include +#endif + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + +template +inline void simplify_input(Range const& range, + DistanceStrategy const& distance, + Range& simplified) +{ + // We have to simplify the ring before to avoid very small-scaled + // features in the original (convex/concave/convex) being enlarged + // in a very large scale and causing issues (IP's within pieces). + // This might be reconsidered later. Simplifying with a very small + // distance (1%% of the buffer) will never be visible in the result, + // if it is using round joins. For miter joins they are even more + // sensitive to small scale input features, however the result will + // look better. + // It also gets rid of duplicate points +#if ! defined(BOOST_GEOMETRY_BUFFER_SIMPLIFY_WITH_AX) + geometry::simplify(range, simplified, distance.simplify_distance()); +#else + + typedef typename boost::range_value::type point_type; + typedef strategy::distance::detail::projected_point_ax<> ax_type; + typedef typename strategy::distance::services::return_type + < + strategy::distance::detail::projected_point_ax<>, + point_type, + point_type + >::type return_type; + + typedef strategy::distance::detail::projected_point_ax_less + < + return_type + > comparator_type; + + typedef strategy::simplify::detail::douglas_peucker + < + point_type, + strategy::distance::detail::projected_point_ax<>, + comparator_type + > dp_ax; + + return_type max_distance(distance.simplify_distance() * 2.0, + distance.simplify_distance()); + comparator_type comparator(max_distance); + dp_ax strategy(comparator); + + geometry::simplify(range, simplified, max_distance, strategy); +#endif +} + + +template +struct buffer_range +{ + typedef typename point_type::type output_point_type; + typedef typename coordinate_type::type coordinate_type; + + template + < + typename Collection, + typename Point, + typename DistanceStrategy, + typename JoinStrategy, + typename EndStrategy, + typename RobustPolicy + > + static inline + void add_join(Collection& collection, + Point const& penultimate_input, + Point const& previous_input, + output_point_type const& prev_perp1, + output_point_type const& prev_perp2, + Point const& input, + output_point_type const& perp1, + output_point_type const& perp2, + strategy::buffer::buffer_side_selector side, + DistanceStrategy const& distance, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + RobustPolicy const& ) + { + output_point_type intersection_point; + + strategy::buffer::join_selector join + = get_join_type(penultimate_input, previous_input, input); + if (join == strategy::buffer::join_convex) + { + // Calculate the intersection-point formed by the two sides. + // It might be that the two sides are not convex, but continue + // or spikey, we then change the join-type + join = line_line_intersection::apply( + perp1, perp2, prev_perp1, prev_perp2, + intersection_point); + + } + switch(join) + { + case strategy::buffer::join_continue : + // No join, we get two consecutive sides + return; + case strategy::buffer::join_concave : + collection.add_piece(strategy::buffer::buffered_concave, + previous_input, prev_perp2, perp1); + return; + case strategy::buffer::join_spike : + { + // For linestrings, only add spike at one side to avoid + // duplicates + std::vector range_out; + end_strategy.apply(penultimate_input, prev_perp2, previous_input, perp1, side, distance, range_out); + collection.add_endcap(end_strategy, range_out, previous_input); + } + return; + case strategy::buffer::join_convex : + break; // All code below handles this + } + + // The corner is convex, we create a join + // TODO (future) - avoid a separate vector, add the piece directly + std::vector range_out; + if (join_strategy.apply(intersection_point, + previous_input, prev_perp2, perp1, + distance.apply(previous_input, input, side), + range_out)) + { + collection.add_piece(strategy::buffer::buffered_join, + previous_input, range_out); + } + } + + static inline strategy::buffer::join_selector get_join_type( + output_point_type const& p0, + output_point_type const& p1, + output_point_type const& p2) + { + typedef typename strategy::side::services::default_strategy + < + typename cs_tag::type + >::type side_strategy; + + int const side = side_strategy::apply(p0, p1, p2); + return side == -1 ? strategy::buffer::join_convex + : side == 1 ? strategy::buffer::join_concave + : parallel_continue + ( + get<0>(p2) - get<0>(p1), + get<1>(p2) - get<1>(p1), + get<0>(p1) - get<0>(p0), + get<1>(p1) - get<1>(p0) + ) ? strategy::buffer::join_continue + : strategy::buffer::join_spike; + } + + template + < + typename Collection, + typename Iterator, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename RobustPolicy + > + static inline void iterate(Collection& collection, + Iterator begin, Iterator end, + strategy::buffer::buffer_side_selector side, + DistanceStrategy const& distance_strategy, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + RobustPolicy const& robust_policy, + output_point_type& first_p1, + output_point_type& first_p2, + output_point_type& last_p1, + output_point_type& last_p2) + { + typedef typename std::iterator_traits + < + Iterator + >::value_type point_type; + + typedef typename robust_point_type + < + point_type, + RobustPolicy + >::type robust_point_type; + + robust_point_type previous_robust_input; + point_type second_point, penultimate_point, ultimate_point; // last two points from begin/end + + /* + * last.p1 last.p2 these are the "previous (last) perpendicular points" + * -------------- + * | | + * *------------*____ <- *prev + * pup | | p1 "current perpendicular point 1" + * | | + * | | this forms a "side", a side is a piece + * | | + * *____| p2 + * + * ^ + * *it + * + * pup: penultimate_point + */ + + bool first = true; + + Iterator it = begin; + + geometry::recalculate(previous_robust_input, *begin, robust_policy); + + std::vector generated_side; + generated_side.reserve(2); + + for (Iterator prev = it++; it != end; ++it) + { + robust_point_type robust_input; + geometry::recalculate(robust_input, *it, robust_policy); + // Check on equality - however, if input is simplified, this is highly + // unlikely (though possible by rescaling) + if (! detail::equals::equals_point_point(previous_robust_input, robust_input)) + { + generated_side.clear(); + side_strategy.apply(*prev, *it, side, + distance_strategy, generated_side); + + if (! first) + { + add_join(collection, + penultimate_point, + *prev, last_p1, last_p2, + *it, generated_side.front(), generated_side.back(), + side, + distance_strategy, join_strategy, end_strategy, + robust_policy); + } + + collection.add_piece(strategy::buffer::buffered_segment, + *prev, *it, generated_side, first); + + penultimate_point = *prev; + ultimate_point = *it; + last_p1 = generated_side.front(); + last_p2 = generated_side.back(); + prev = it; + if (first) + { + first = false; + second_point = *it; + first_p1 = generated_side.front(); + first_p2 = generated_side.back(); + } + } + previous_robust_input = robust_input; + } + } +}; + +template +< + typename Multi, + typename PolygonOutput, + typename Policy +> +struct buffer_multi +{ + template + < + typename Collection, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy + > + static inline void apply(Multi const& multi, + Collection& collection, + DistanceStrategy const& distance_strategy, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& point_strategy, + RobustPolicy const& robust_policy) + { + for (typename boost::range_iterator::type + it = boost::begin(multi); + it != boost::end(multi); + ++it) + { + Policy::apply(*it, collection, + distance_strategy, side_strategy, + join_strategy, end_strategy, point_strategy, + robust_policy); + } + } +}; + +struct visit_pieces_default_policy +{ + template + static inline void apply(Collection const&, int) + {} +}; + +}} // namespace detail::buffer +#endif // DOXYGEN_NO_DETAIL + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + +template +< + typename Tag, + typename RingInput, + typename RingOutput +> +struct buffer_inserter +{}; + + + +template +< + typename Point, + typename RingOutput +> +struct buffer_inserter +{ + template + < + typename Collection, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy + > + static inline void apply(Point const& point, Collection& collection, + DistanceStrategy const& distance_strategy, + SideStrategy const& , + JoinStrategy const& , + EndStrategy const& , + PointStrategy const& point_strategy, + RobustPolicy const& ) + { + typedef typename point_type::type output_point_type; + + collection.start_new_ring(); + std::vector range_out; + point_strategy.apply(point, distance_strategy, range_out); + collection.add_piece(strategy::buffer::buffered_point, range_out, false); + collection.finish_ring(); + } +}; + + +template +< + typename RingInput, + typename RingOutput +> +struct buffer_inserter +{ + typedef typename point_type::type output_point_type; + + template + < + typename Collection, + typename Iterator, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename RobustPolicy + > + static inline void iterate(Collection& collection, + Iterator begin, Iterator end, + strategy::buffer::buffer_side_selector side, + DistanceStrategy const& distance_strategy, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + RobustPolicy const& robust_policy) + { + output_point_type first_p1, first_p2, last_p1, last_p2; + + typedef detail::buffer::buffer_range buffer_range; + + buffer_range::iterate(collection, begin, end, + side, + distance_strategy, side_strategy, join_strategy, end_strategy, robust_policy, + first_p1, first_p2, last_p1, last_p2); + + // Generate closing join + buffer_range::add_join(collection, + *(end - 2), + *(end - 1), last_p1, last_p2, + *(begin + 1), first_p1, first_p2, + side, + distance_strategy, join_strategy, end_strategy, + robust_policy); + + // Buffer is closed automatically by last closing corner + } + + template + < + typename Collection, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy + > + static inline void apply(RingInput const& ring, + Collection& collection, + DistanceStrategy const& distance, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& , + RobustPolicy const& robust_policy) + { + if (boost::size(ring) > 3) + { + RingOutput simplified; + detail::buffer::simplify_input(ring, distance, simplified); + + if (distance.negative()) + { + // Walk backwards (rings will be reversed afterwards) + // It might be that this will be changed later. + // TODO: decide this. + iterate(collection, boost::rbegin(simplified), boost::rend(simplified), + strategy::buffer::buffer_side_right, + distance, side_strategy, join_strategy, end_strategy, robust_policy); + } + else + { + iterate(collection, boost::begin(simplified), boost::end(simplified), + strategy::buffer::buffer_side_left, + distance, side_strategy, join_strategy, end_strategy, robust_policy); + } + + } + } +}; + + +template +< + typename Linestring, + typename Polygon +> +struct buffer_inserter +{ + typedef typename ring_type::type output_ring_type; + typedef typename point_type::type output_point_type; + typedef typename point_type::type input_point_type; + + template + static inline output_point_type first_perpendicular_point( + input_point_type const& p1, input_point_type const& p2, + DistanceStrategy const& distance_strategy, + SideStrategy const& side_strategy) + { + std::vector generated_side; + side_strategy.apply(p1, p2, + strategy::buffer::buffer_side_right, + distance_strategy, generated_side); + return generated_side.front(); + } + + template + < + typename Collection, + typename Iterator, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename RobustPolicy + > + static inline void iterate(Collection& collection, + Iterator begin, Iterator end, + strategy::buffer::buffer_side_selector side, + DistanceStrategy const& distance_strategy, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + RobustPolicy const& robust_policy, + output_point_type& first_p1) + { + input_point_type const& ultimate_point = *(end - 1); + input_point_type const& penultimate_point = *(end - 2); + + // For the end-cap, we need to have the last perpendicular point on the + // other side of the linestring. If it is the second pass (right), + // we have it already from the first phase (left). + // But for the first pass, we have to generate it + output_point_type reverse_p1 + = side == strategy::buffer::buffer_side_right + ? first_p1 + : first_perpendicular_point(ultimate_point, penultimate_point, distance_strategy, side_strategy); + + output_point_type first_p2, last_p1, last_p2; + + detail::buffer::buffer_range::iterate(collection, + begin, end, side, + distance_strategy, side_strategy, join_strategy, end_strategy, robust_policy, + first_p1, first_p2, last_p1, last_p2); + + std::vector range_out; + end_strategy.apply(penultimate_point, last_p2, ultimate_point, reverse_p1, side, distance_strategy, range_out); + collection.add_endcap(end_strategy, range_out, ultimate_point); + } + + template + < + typename Collection, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy + > + static inline void apply(Linestring const& linestring, Collection& collection, + DistanceStrategy const& distance, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& , + RobustPolicy const& robust_policy) + { + if (boost::size(linestring) > 1) + { + Linestring simplified; + detail::buffer::simplify_input(linestring, distance, simplified); + + collection.start_new_ring(); + output_point_type first_p1; + iterate(collection, boost::begin(simplified), boost::end(simplified), + strategy::buffer::buffer_side_left, + distance, side_strategy, join_strategy, end_strategy, robust_policy, + first_p1); + + iterate(collection, boost::rbegin(simplified), boost::rend(simplified), + strategy::buffer::buffer_side_right, + distance, side_strategy, join_strategy, end_strategy, robust_policy, + first_p1); + collection.finish_ring(); + } + else + { + // Use point_strategy to buffer degenerated linestring + } + } +}; + + +template +< + typename PolygonInput, + typename PolygonOutput +> +struct buffer_inserter +{ +private: + typedef typename ring_type::type input_ring_type; + typedef typename ring_type::type output_ring_type; + + typedef buffer_inserter policy; + + + template + < + typename Iterator, + typename Collection, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy + > + static inline + void iterate(Iterator begin, Iterator end, + Collection& collection, + DistanceStrategy const& distance, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& point_strategy, + RobustPolicy const& robust_policy) + { + for (Iterator it = begin; it != end; ++it) + { + collection.start_new_ring(); + policy::apply(*it, collection, distance, side_strategy, + join_strategy, end_strategy, point_strategy, + robust_policy); + collection.finish_ring(); + } + } + + template + < + typename InteriorRings, + typename Collection, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy + > + static inline + void apply_interior_rings(InteriorRings const& interior_rings, + Collection& collection, + DistanceStrategy const& distance, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& point_strategy, + RobustPolicy const& robust_policy) + { + iterate(boost::begin(interior_rings), boost::end(interior_rings), + collection, distance, side_strategy, + join_strategy, end_strategy, point_strategy, + robust_policy); + } + +public: + template + < + typename Collection, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy + > + static inline void apply(PolygonInput const& polygon, + Collection& collection, + DistanceStrategy const& distance, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& point_strategy, + RobustPolicy const& robust_policy) + { + { + collection.start_new_ring(); + policy::apply(exterior_ring(polygon), collection, + distance, side_strategy, + join_strategy, end_strategy, point_strategy, + robust_policy); + collection.finish_ring(); + } + + apply_interior_rings(interior_rings(polygon), + collection, distance, side_strategy, + join_strategy, end_strategy, point_strategy, + robust_policy); + } +}; + + +template +< + typename Multi, + typename PolygonOutput +> +struct buffer_inserter + : public detail::buffer::buffer_multi + < + Multi, + PolygonOutput, + dispatch::buffer_inserter + < + typename single_tag_of + < + typename tag::type + >::type, + typename boost::range_value::type, + typename geometry::ring_type::type + > + > +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + +template +< + typename GeometryOutput, + typename GeometryInput, + typename OutputIterator, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy, + typename VisitPiecesPolicy +> +inline void buffer_inserter(GeometryInput const& geometry_input, OutputIterator out, + DistanceStrategy const& distance_strategy, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& point_strategy, + RobustPolicy const& robust_policy, + VisitPiecesPolicy& visit_pieces_policy + ) +{ + typedef detail::buffer::buffered_piece_collection + < + typename geometry::ring_type::type, + RobustPolicy + > collection_type; + collection_type collection(robust_policy); + collection_type const& const_collection = collection; + + dispatch::buffer_inserter + < + typename tag_cast + < + typename tag::type, + multi_tag + >::type, + GeometryInput, + GeometryOutput + >::apply(geometry_input, collection, + distance_strategy, side_strategy, join_strategy, + end_strategy, point_strategy, + robust_policy); + + collection.get_turns(geometry_input, distance_strategy); + + // Visit the piece collection. This does nothing (by default), but + // optionally a debugging tool can be attached (e.g. console or svg), + // or the piece collection can be unit-tested + // phase 0: turns (before discarded) + visit_pieces_policy.apply(const_collection, 0); + + collection.discard_rings(); + collection.discard_turns(); + collection.enrich(); + collection.traverse(); + + if (distance_strategy.negative() + && boost::is_same + < + typename tag_cast::type, areal_tag>::type, + areal_tag + >::type::value) + { + collection.reverse(); + } + + collection.template assign(out); + + // Visit collection again + // phase 1: rings (after discarding and traversing) + visit_pieces_policy.apply(const_collection, 1); +} + +template +< + typename GeometryOutput, + typename GeometryInput, + typename OutputIterator, + typename DistanceStrategy, + typename SideStrategy, + typename JoinStrategy, + typename EndStrategy, + typename PointStrategy, + typename RobustPolicy +> +inline void buffer_inserter(GeometryInput const& geometry_input, OutputIterator out, + DistanceStrategy const& distance_strategy, + SideStrategy const& side_strategy, + JoinStrategy const& join_strategy, + EndStrategy const& end_strategy, + PointStrategy const& point_strategy, + RobustPolicy const& robust_policy) +{ + detail::buffer::visit_pieces_default_policy visitor; + buffer_inserter(geometry_input, out, + distance_strategy, side_strategy, join_strategy, + end_strategy, point_strategy, + robust_policy, visitor); +} +#endif // DOXYGEN_NO_DETAIL + +}} // namespace detail::buffer + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFER_INSERTER_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp new file mode 100644 index 0000000000..c37f32fd70 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/buffer_policies.hpp @@ -0,0 +1,164 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFER_POLICIES_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFER_POLICIES_HPP + + +#include + +#include + +#include +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + + +enum intersection_location_type +{ + location_ok, inside_buffer, inside_original +}; + +class backtrack_for_buffer +{ +public : + typedef detail::overlay::backtrack_state state_type; + + template + static inline void apply(std::size_t size_at_start, + Rings& rings, typename boost::range_value::type& ring, + Turns& turns, Operation& operation, + std::string const& /*reason*/, + Geometry const& , + Geometry const& , + RobustPolicy const& , + state_type& state + ) + { +#if defined(BOOST_GEOMETRY_COUNT_BACKTRACK_WARNINGS) +extern int g_backtrack_warning_count; +g_backtrack_warning_count++; +#endif +//std::cout << "!"; +//std::cout << "WARNING " << reason << std::endl; + + state.m_good = false; + + // Make bad output clean + rings.resize(size_at_start); + ring.clear(); + + // Reject this as a starting point + operation.visited.set_rejected(); + + // And clear all visit info + clear_visit_info(turns); + } +}; + +// Should follow traversal-turn-concept (enrichment, visit structure) +// and adds index in piece vector to find it back +template +struct buffer_turn_operation + : public detail::overlay::traversal_turn_operation +{ + int piece_index; + int index_in_robust_ring; + + inline buffer_turn_operation() + : piece_index(-1) + , index_in_robust_ring(-1) + {} +}; + +// Version for buffer including type of location, is_opposite, and helper variables +template +struct buffer_turn_info + : public detail::overlay::turn_info + < + Point, + SegmentRatio, + buffer_turn_operation + > +{ + typedef Point point_type; + typedef RobustPoint robust_point_type; + + int turn_index; // TODO: this might go if partition can operate on non-const input + + RobustPoint robust_point; +#if defined(BOOST_GEOMETRY_BUFFER_ENLARGED_CLUSTERS) + // Will (most probably) be removed later + RobustPoint mapped_robust_point; // alas... we still need to adapt our points, offsetting them 1 integer to be co-located with neighbours +#endif + + + inline RobustPoint const& get_robust_point() const + { +#if defined(BOOST_GEOMETRY_BUFFER_ENLARGED_CLUSTERS) + return mapped_robust_point; +#endif + return robust_point; + } + + + intersection_location_type location; + + int count_within; + int count_on_offsetted; + int count_on_helper; + int count_on_occupied; + int count_on_multi; + + inline buffer_turn_info() + : turn_index(-1) + , location(location_ok) + , count_within(0) + , count_on_offsetted(0) + , count_on_helper(0) + , count_on_occupied(0) + , count_on_multi(0) + {} +}; + +struct buffer_operation_less +{ + template + inline bool operator()(Turn const& left, Turn const& right) const + { + segment_identifier const& sl = left.seg_id; + segment_identifier const& sr = right.seg_id; + + // Sort them descending + return sl == sr + ? left.fraction < right.fraction + : sl < sr; + } +}; + +}} // namespace detail::buffer +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFER_POLICIES_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp new file mode 100644 index 0000000000..2015d18368 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp @@ -0,0 +1,841 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFERED_PIECE_COLLECTION_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFERED_PIECE_COLLECTION_HPP + +#include +#include +#include +#include + + +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + +enum segment_relation_code +{ + segment_relation_on_left, + segment_relation_on_right, + segment_relation_within, + segment_relation_disjoint +}; + + +template +struct buffered_piece_collection +{ + typedef buffered_piece_collection this_type; + + typedef typename geometry::point_type::type point_type; + typedef typename geometry::coordinate_type::type coordinate_type; + typedef typename geometry::robust_point_type + < + point_type, + RobustPolicy + >::type robust_point_type; + + typedef typename strategy::side::services::default_strategy + < + typename cs_tag::type + >::type side_strategy; + + typedef typename geometry::rescale_policy_type + < + typename geometry::point_type::type + >::type rescale_policy_type; + + typedef typename geometry::segment_ratio_type + < + point_type, + RobustPolicy + >::type segment_ratio_type; + + typedef buffer_turn_info + < + point_type, + robust_point_type, + segment_ratio_type + > buffer_turn_info_type; + + typedef buffer_turn_operation + < + point_type, + segment_ratio_type + > buffer_turn_operation_type; + + typedef std::vector turn_vector_type; + + struct robust_turn + { + int turn_index; + int operation_index; + robust_point_type point; + segment_identifier seg_id; + segment_ratio_type fraction; + }; + + struct piece + { + strategy::buffer::piece_type type; + int index; + + int left_index; // points to previous piece + int right_index; // points to next piece + + // The next two members form together a complete clockwise ring + // for each piece (with one dupped point) + + // 1: half, part of offsetted_rings + segment_identifier first_seg_id; + int last_segment_index; // no segment-identifier - it is the same as first_seg_id + int offsetted_count; + + // 2: half, not part (future: might be indexed in one vector too) + std::vector helper_segments; // 3 points for segment, 2 points for join - 0 points for flat-end + + // Robust representations + std::vector robust_turns; // Used only in rescale_pieces - we might use a map instead + geometry::model::ring robust_ring; + geometry::model::box robust_envelope; + }; + + typedef std::vector piece_vector_type; + + piece_vector_type m_pieces; + turn_vector_type m_turns; + int m_first_piece_index; + + buffered_ring_collection > offsetted_rings; // indexed by multi_index + std::vector< std::vector < robust_point_type > > robust_offsetted_rings; + buffered_ring_collection traversed_rings; + segment_identifier current_segment_id; + + RobustPolicy const& m_robust_policy; + + struct redundant_turn + { + inline bool operator()(buffer_turn_info_type const& turn) const + { + // Erase discarded turns (location not OK) and the turns + // only used to detect oppositeness. + return turn.location != location_ok + || turn.opposite(); + } + }; + + buffered_piece_collection(RobustPolicy const& robust_policy) + : m_first_piece_index(-1) + , m_robust_policy(robust_policy) + {} + + +#if defined(BOOST_GEOMETRY_BUFFER_ENLARGED_CLUSTERS) + // Will (most probably) be removed later + template + inline void adapt_mapped_robust_point(OccupationMap const& map, + buffer_turn_info_type& turn, int distance) const + { + for (int x = -distance; x <= distance; x++) + { + for (int y = -distance; y <= distance; y++) + { + robust_point_type rp = turn.robust_point; + geometry::set<0>(rp, geometry::get<0>(rp) + x); + geometry::set<1>(rp, geometry::get<1>(rp) + y); + if (map.find(rp) != map.end()) + { + turn.mapped_robust_point = rp; + return; + } + } + } + } +#endif + + inline void get_occupation( +#if defined(BOOST_GEOMETRY_BUFFER_ENLARGED_CLUSTERS) + int distance = 0 +#endif + ) + { + typedef occupation_info > + buffer_occupation_info; + + typedef std::map + < + robust_point_type, + buffer_occupation_info, + geometry::less + > occupation_map_type; + + occupation_map_type occupation_map; + + // 1: Add all intersection points to occupation map + typedef typename boost::range_iterator::type + iterator_type; + + for (iterator_type it = boost::begin(m_turns); + it != boost::end(m_turns); + ++it) + { + if (it->count_on_offsetted >= 1) + { +#if defined(BOOST_GEOMETRY_BUFFER_ENLARGED_CLUSTERS) + if (distance > 0 && ! occupation_map.empty()) + { + adapt_mapped_robust_point(occupation_map, *it, distance); + } +#endif + occupation_map[it->get_robust_point()].count++; + } + } + + // 2: Remove all points from map which has only one + typename occupation_map_type::iterator it = occupation_map.begin(); + while (it != occupation_map.end()) + { + if (it->second.count <= 1) + { + typename occupation_map_type::iterator to_erase = it; + ++it; + occupation_map.erase(to_erase); + } + else + { + ++it; + } + } + + if (occupation_map.empty()) + { + return; + } + + // 3: Add vectors (incoming->intersection-point, + // intersection-point -> outgoing) + // for all (co-located) points still present in the map + + int index = 0; + for (iterator_type it = boost::begin(m_turns); + it != boost::end(m_turns); + ++it, ++index) + { + typename occupation_map_type::iterator mit = + occupation_map.find(it->get_robust_point()); + + if (mit != occupation_map.end()) + { + buffer_occupation_info& info = mit->second; + for (int i = 0; i < 2; i++) + { + add_incoming_and_outgoing_angles(it->get_robust_point(), *it, + m_pieces, + index, i, it->operations[i].seg_id, + info); + } + + it->count_on_multi++; + } + } + +#if defined(BOOST_GEOMETRY_BUFFER_ENLARGED_CLUSTERS) + // X: Check rounding issues + if (distance == 0) + { + for (typename occupation_map_type::const_iterator it = occupation_map.begin(); + it != occupation_map.end(); ++it) + { + if (it->second.has_rounding_issues(it->first)) + { + if(distance == 0) + { + get_occupation(distance + 1); + return; + } + } + } + } +#endif + + // If, in a cluster, one turn is blocked, block them all + for (typename occupation_map_type::const_iterator it = occupation_map.begin(); + it != occupation_map.end(); ++it) + { + typename buffer_occupation_info::turn_vector_type const& turns = it->second.turns; + bool blocked = false; + for (std::size_t i = 0; i < turns.size(); i++) + { + if (m_turns[turns[i].turn_index].blocked()) + { + blocked = true; + break; + } + } + if (blocked) + { + for (std::size_t i = 0; i < turns.size(); i++) + { + m_turns[turns[i].turn_index].count_on_occupied++; + } + } + } + + // 4: Mark all turns as not selectable as a starting point for traversing + // rings. They still can be used to continue already started rings. + for (typename occupation_map_type::iterator it = occupation_map.begin(); + it != occupation_map.end(); ++it) + { + typename buffer_occupation_info::turn_vector_type const& turns = it->second.turns; + for (std::size_t i = 0; i < turns.size(); i++) + { + m_turns[turns[i].turn_index].selectable_start = false; + } + } + } + + inline void classify_turns() + { + for (typename boost::range_iterator::type it = + boost::begin(m_turns); it != boost::end(m_turns); ++it) + { + if ( it->count_within > 0 + || it->count_on_occupied > 0 ) + { + it->location = inside_buffer; + } + } + } + + template + inline void check_remaining_points(Geometry const& input_geometry, DistanceStrategy const& distance_strategy) + { + int const factor = distance_strategy.factor(); + + // This might use partition too (for multi-polygons) + + for (typename boost::range_iterator::type it = + boost::begin(m_turns); it != boost::end(m_turns); ++it) + { + if (it->location == location_ok) + { + int code = turn_in_input + < + typename geometry::tag::type + >::apply(it->point, input_geometry); + if (code * factor == 1) + { + it->location = inside_original; + } + } + } + } + + inline bool assert_indices_in_robust_rings() const + { + geometry::equal_to comparator; + for (typename boost::range_iterator::type it = + boost::begin(m_turns); it != boost::end(m_turns); ++it) + { + for (int i = 0; i < 2; i++) + { + robust_point_type const &p1 + = m_pieces[it->operations[i].piece_index].robust_ring + [it->operations[i].index_in_robust_ring]; + robust_point_type const &p2 = it->robust_point; + if (! comparator(p1, p2)) + { + return false; + } + } + } + return true; + } + + inline void rescale_piece_rings() + { + for (typename piece_vector_type::iterator it = boost::begin(m_pieces); + it != boost::end(m_pieces); + ++it) + { + piece& pc = *it; + + pc.offsetted_count = pc.last_segment_index - pc.first_seg_id.segment_index; + BOOST_ASSERT(pc.offsetted_count >= 0); + + pc.robust_ring.reserve(pc.offsetted_count + pc.helper_segments.size()); + + // Add rescaled offsetted segments + { + buffered_ring const& ring = offsetted_rings[pc.first_seg_id.multi_index]; + + typedef typename boost::range_iterator >::type it_type; + for (it_type it = boost::begin(ring) + pc.first_seg_id.segment_index; + it != boost::begin(ring) + pc.last_segment_index; + ++it) + { + robust_point_type point; + geometry::recalculate(point, *it, m_robust_policy); + pc.robust_ring.push_back(point); + } + } + + // Add rescaled helper-segments + { + typedef typename std::vector::const_iterator it_type; + for (it_type it = boost::begin(pc.helper_segments); + it != boost::end(pc.helper_segments); + ++it) + { + robust_point_type point; + geometry::recalculate(point, *it, m_robust_policy); + pc.robust_ring.push_back(point); + } + } + + // Calculate the envelope + geometry::detail::envelope::envelope_range::apply(pc.robust_ring, + pc.robust_envelope); + } + } + + inline void insert_rescaled_piece_turns() + { + // Add rescaled turn points to corresponding pieces + // (after this, each turn occurs twice) + int index = 0; + for (typename boost::range_iterator::type it = + boost::begin(m_turns); it != boost::end(m_turns); ++it, ++index) + { + geometry::recalculate(it->robust_point, it->point, m_robust_policy); +#if defined(BOOST_GEOMETRY_BUFFER_ENLARGED_CLUSTERS) + it->mapped_robust_point = it->robust_point; +#endif + + robust_turn turn; + it->turn_index = index; + turn.turn_index = index; + turn.point = it->robust_point; + for (int i = 0; i < 2; i++) + { + turn.operation_index = i; + turn.seg_id = it->operations[i].seg_id; + turn.fraction = it->operations[i].fraction; + + piece& pc = m_pieces[it->operations[i].piece_index]; + pc.robust_turns.push_back(turn); + + // Take into account for the box (intersection points should fall inside, + // but in theory they can be one off because of rounding + geometry::expand(pc.robust_envelope, it->robust_point); + } + } + + // Insert all rescaled turn-points into these rings, to form a + // reliable integer-based ring. All turns can be compared (inside) to this + // rings to see if they are inside. + + for (typename piece_vector_type::iterator it = boost::begin(m_pieces); + it != boost::end(m_pieces); + ++it) + { + piece& pc = *it; + int piece_segment_index = pc.first_seg_id.segment_index; + if (! pc.robust_turns.empty()) + { + if (pc.robust_turns.size() > 1u) + { + std::sort(pc.robust_turns.begin(), pc.robust_turns.end(), buffer_operation_less()); + } + // Walk through them, in reverse to insert at right index + int index_offset = pc.robust_turns.size() - 1; + for (typename std::vector::const_reverse_iterator + rit = pc.robust_turns.rbegin(); + rit != pc.robust_turns.rend(); + ++rit, --index_offset) + { + int const index_in_vector = 1 + rit->seg_id.segment_index - piece_segment_index; + BOOST_ASSERT + ( + index_in_vector > 0 && index_in_vector < pc.offsetted_count + ); + + pc.robust_ring.insert(boost::begin(pc.robust_ring) + index_in_vector, rit->point); + pc.offsetted_count++; + + m_turns[rit->turn_index].operations[rit->operation_index].index_in_robust_ring = index_in_vector + index_offset; + } + } + } + + BOOST_ASSERT(assert_indices_in_robust_rings()); + } + + template + inline void get_turns(Geometry const& input_geometry, DistanceStrategy const& distance_strategy) + { + rescale_piece_rings(); + + { + // Calculate the turns + piece_turn_visitor + < + buffered_ring_collection >, + turn_vector_type, + RobustPolicy + > visitor(offsetted_rings, m_turns, m_robust_policy, m_pieces.size()); + + geometry::partition + < + model::box, piece_get_box, piece_ovelaps_box + >::apply(m_pieces, visitor); + } + + insert_rescaled_piece_turns(); + + { + // Check if it is inside any of the pieces + turn_in_piece_visitor + < + turn_vector_type, piece_vector_type + > visitor(m_turns, m_pieces); + + geometry::partition + < + model::box, + turn_get_box, turn_ovelaps_box, + piece_get_box, piece_ovelaps_box + >::apply(m_turns, m_pieces, visitor); + + } + + + get_occupation(); + + classify_turns(); + + check_remaining_points(input_geometry, distance_strategy); + } + + inline void start_new_ring() + { + int const n = offsetted_rings.size(); + current_segment_id.source_index = 0; + current_segment_id.multi_index = n; + current_segment_id.ring_index = -1; + current_segment_id.segment_index = 0; + + offsetted_rings.resize(n + 1); + + m_first_piece_index = boost::size(m_pieces); + } + + inline void finish_ring() + { + BOOST_ASSERT(m_first_piece_index != -1); + if (m_first_piece_index < static_cast(boost::size(m_pieces))) + { + // If piece was added + // Reassign left-of-first and right-of-last + geometry::range::at(m_pieces, m_first_piece_index).left_index + = boost::size(m_pieces) - 1; + geometry::range::back(m_pieces).right_index = m_first_piece_index; + } + m_first_piece_index = -1; + } + + inline int add_point(point_type const& p) + { + BOOST_ASSERT + ( + boost::size(offsetted_rings) > 0 + ); + + current_segment_id.segment_index++; + offsetted_rings.back().push_back(p); + return offsetted_rings.back().size(); + } + + //------------------------------------------------------------------------- + + inline piece& add_piece(strategy::buffer::piece_type type, bool decrease_segment_index_by_one) + { + piece pc; + pc.type = type; + pc.index = boost::size(m_pieces); + pc.first_seg_id = current_segment_id; + + // Assign left/right (for first/last piece per ring they will be re-assigned later) + pc.left_index = pc.index - 1; + pc.right_index = pc.index + 1; + + std::size_t const n = boost::size(offsetted_rings.back()); + pc.first_seg_id.segment_index = decrease_segment_index_by_one ? n - 1 : n; + + m_pieces.push_back(pc); + return m_pieces.back(); + } + + template + inline void add_piece(strategy::buffer::piece_type type, point_type const& p1, point_type const& p2, + Range const& range, bool first) + { + piece& pc = add_piece(type, ! first); + + // If it follows a non-join (so basically the same piece-type) point b1 should be added. + // There should be two intersections later and it should be discarded. + // But for now we need it to calculate intersections + if (first) + { + add_point(range.front()); + } + pc.last_segment_index = add_point(range.back()); + + pc.helper_segments.push_back(range.back()); + pc.helper_segments.push_back(p2); + pc.helper_segments.push_back(p1); + pc.helper_segments.push_back(range.front()); + } + + inline void add_piece(strategy::buffer::piece_type type, point_type const& p, + point_type const& b1, point_type const& b2) + { + piece& pc = add_piece(type, false); + add_point(b1); + pc.last_segment_index = add_point(b2); + pc.helper_segments.push_back(b2); + pc.helper_segments.push_back(p); + pc.helper_segments.push_back(b1); + } + + + template + inline piece& add_piece(strategy::buffer::piece_type type, Range const& range, bool decrease_segment_index_by_one) + { + piece& pc = add_piece(type, decrease_segment_index_by_one); + + bool first = true; + int last = offsetted_rings.back().size() + 1; + for (typename Range::const_iterator it = boost::begin(range); + it != boost::end(range); + ++it) + { + bool add = true; + if (first) + { + // Only for very first one, add first. In all other cases it is shared with previous. + add = offsetted_rings.back().empty(); + first = false; + } + if (add) + { + last = add_point(*it); + } + + } + + pc.last_segment_index = last; + + return pc; + } + + template + inline void add_piece(strategy::buffer::piece_type type, point_type const& p, Range const& range) + { + piece& pc = add_piece(type, range, true); + + if (boost::size(range) > 0) + { + pc.helper_segments.push_back(range.back()); + pc.helper_segments.push_back(p); + pc.helper_segments.push_back(range.front()); + } + } + + template + inline void add_endcap(EndcapStrategy const& strategy, Range const& range, point_type const& end_point) + { + if (range.empty()) + { + return; + } + strategy::buffer::piece_type pt = strategy.get_piece_type(); + if (pt == strategy::buffer::buffered_flat_end) + { + // It is flat, should just be added, without helper segments + add_piece(pt, range, true); + } + else + { + // Normal case, it has an "inside", helper segments should be added + add_piece(pt, end_point, range); + } + } + + //------------------------------------------------------------------------- + + inline void enrich() + { + typedef typename strategy::side::services::default_strategy + < + typename cs_tag::type + >::type side_strategy_type; + + enrich_intersection_points(m_turns, + detail::overlay::operation_union, + offsetted_rings, offsetted_rings, + m_robust_policy, side_strategy_type()); + } + + // Discards all rings which do have not-OK intersection points only. + // Those can never be traversed and should not be part of the output. + inline void discard_rings() + { + for (typename boost::range_iterator::type it = + boost::begin(m_turns); it != boost::end(m_turns); ++it) + { + if (it->location != location_ok) + { + offsetted_rings[it->operations[0].seg_id.multi_index].has_discarded_intersections = true; + offsetted_rings[it->operations[1].seg_id.multi_index].has_discarded_intersections = true; + } + else if (! it->both(detail::overlay::operation_union)) + { + offsetted_rings[it->operations[0].seg_id.multi_index].has_accepted_intersections = true; + offsetted_rings[it->operations[1].seg_id.multi_index].has_accepted_intersections = true; + } + } + } + + inline void discard_turns() + { + m_turns.erase + ( + std::remove_if(boost::begin(m_turns), boost::end(m_turns), + redundant_turn()), + boost::end(m_turns) + ); + + } + + inline void traverse() + { + typedef detail::overlay::traverse + < + false, false, + buffered_ring_collection >, buffered_ring_collection >, + backtrack_for_buffer + > traverser; + + traversed_rings.clear(); + traverser::apply(offsetted_rings, offsetted_rings, + detail::overlay::operation_union, + m_robust_policy, m_turns, traversed_rings); + } + + inline void reverse() + { + for(typename buffered_ring_collection >::iterator it = boost::begin(offsetted_rings); + it != boost::end(offsetted_rings); + ++it) + { + if (! it->has_intersections()) + { + std::reverse(it->begin(), it->end()); + } + } + for (typename boost::range_iterator >::type + it = boost::begin(traversed_rings); + it != boost::end(traversed_rings); + ++it) + { + std::reverse(it->begin(), it->end()); + } + + } + + template + inline OutputIterator assign(OutputIterator out) const + { + typedef detail::overlay::ring_properties properties; + + std::map selected; + + // Select all rings which do not have any self-intersection (other ones should be traversed) + int index = 0; + for(typename buffered_ring_collection >::const_iterator it = boost::begin(offsetted_rings); + it != boost::end(offsetted_rings); + ++it, ++index) + { + if (! it->has_intersections()) + { + ring_identifier id(0, index, -1); + selected[id] = properties(*it, true); + } + } + + // Select all created rings + index = 0; + for (typename boost::range_iterator const>::type + it = boost::begin(traversed_rings); + it != boost::end(traversed_rings); + ++it, ++index) + { + ring_identifier id(2, index, -1); + selected[id] = properties(*it, true); + } + + detail::overlay::assign_parents(offsetted_rings, traversed_rings, selected, false); + return detail::overlay::add_rings(selected, offsetted_rings, traversed_rings, out); + } + +}; + + +}} // namespace detail::buffer +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFERED_PIECE_COLLECTION_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/buffered_ring.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/buffered_ring.hpp new file mode 100644 index 0000000000..03ec598c90 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/buffered_ring.hpp @@ -0,0 +1,238 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFERED_RING +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFERED_RING + + +#include + +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + +struct buffered_ring_collection_tag : polygonal_tag, multi_tag +{}; + + +template +struct buffered_ring : public Ring +{ + bool has_accepted_intersections; + bool has_discarded_intersections; + + inline buffered_ring() + : has_accepted_intersections(false) + , has_discarded_intersections(false) + {} + + inline bool discarded() const + { + return has_discarded_intersections && ! has_accepted_intersections; + } + inline bool has_intersections() const + { + return has_discarded_intersections || has_accepted_intersections; + } +}; + +// This is a collection now special for overlay (needs vector of rings) +template +struct buffered_ring_collection : public std::vector +{ +}; + +}} // namespace detail::buffer + + +// Turn off concept checking (for now) +namespace dispatch +{ +template +struct check +{ +}; + +} + + +#endif // DOXYGEN_NO_DETAIL + + + +// Register the types +namespace traits +{ + + +template +struct tag > +{ + typedef ring_tag type; +}; + + +template +struct point_order > +{ + static const order_selector value = geometry::point_order::value; +}; + + +template +struct closure > +{ + static const closure_selector value = geometry::closure::value; +}; + + +template +struct point_type > +{ + typedef typename geometry::point_type::type type; +}; + +template +struct tag > +{ + typedef detail::buffer::buffered_ring_collection_tag type; +}; + + +} // namespace traits + + + + +namespace core_dispatch +{ + +template +struct ring_type +< + detail::buffer::buffered_ring_collection_tag, + detail::buffer::buffered_ring_collection +> +{ + typedef Ring type; +}; + +} + +namespace dispatch +{ + +template +< + typename MultiRing, + bool Reverse, + typename SegmentIdentifier, + typename PointOut +> +struct copy_segment_point + < + detail::buffer::buffered_ring_collection_tag, + MultiRing, + Reverse, + SegmentIdentifier, + PointOut + > + : detail::copy_segments::copy_segment_point_multi + < + MultiRing, + SegmentIdentifier, + PointOut, + detail::copy_segments::copy_segment_point_range + < + typename boost::range_value::type, + Reverse, + SegmentIdentifier, + PointOut + > + > +{}; + + +template +struct copy_segments + < + detail::buffer::buffered_ring_collection_tag, + Reverse + > + : detail::copy_segments::copy_segments_multi + < + detail::copy_segments::copy_segments_ring + > +{}; + +template +struct within +< + Point, + MultiGeometry, + point_tag, + detail::buffer::buffered_ring_collection_tag +> +{ + template + static inline bool apply(Point const& point, + MultiGeometry const& multi, Strategy const& strategy) + { + return detail::within::point_in_geometry(point, multi, strategy) == 1; + } +}; + + +} // namespace dispatch + +namespace detail { namespace overlay +{ + +template<> +struct get_ring +{ + template + static inline typename ring_type::type const& apply( + ring_identifier const& id, + MultiGeometry const& multi_ring) + { + BOOST_ASSERT + ( + id.multi_index >= 0 + && id.multi_index < int(boost::size(multi_ring)) + ); + return get_ring::apply(id, multi_ring[id.multi_index]); + } +}; + +}} + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_BUFFERED_RING diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp new file mode 100644 index 0000000000..e3c41a2a4b --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/get_piece_turns.hpp @@ -0,0 +1,204 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_GET_PIECE_TURNS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_GET_PIECE_TURNS_HPP + +#include + +#include +#include +#include +#include +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + + +struct piece_get_box +{ + template + static inline void apply(Box& total, Piece const& piece) + { + geometry::expand(total, piece.robust_envelope); + } +}; + +struct piece_ovelaps_box +{ + template + static inline bool apply(Box const& box, Piece const& piece) + { + return ! geometry::detail::disjoint::disjoint_box_box(box, piece.robust_envelope); + } +}; + +template +< + typename Rings, + typename Turns, + typename RobustPolicy +> +class piece_turn_visitor +{ + Rings const& m_rings; + Turns& m_turns; + RobustPolicy const& m_robust_policy; + int m_last_piece_index; + + template + inline bool is_adjacent(Piece const& piece1, Piece const& piece2) const + { + if (piece1.first_seg_id.multi_index != piece2.first_seg_id.multi_index) + { + return false; + } + + if (std::abs(piece1.index - piece2.index) == 1) + { + return true; + } + + return (piece1.index == 0 && piece2.index == m_last_piece_index) + || (piece1.index == m_last_piece_index && piece2.index == 0) + ; + } + + template + inline void move_to_next_point(Range const& range, Iterator& next) const + { + ++next; + if (next == boost::end(range)) + { + next = boost::begin(range) + 1; + } + } + + template + inline Iterator next_point(Range const& range, Iterator it) const + { + Iterator result = it; + move_to_next_point(range, result); + // TODO: we could use either piece-boundaries, or comparison with + // robust points, to check if the point equals the last one + while(geometry::equals(*it, *result)) + { + move_to_next_point(range, result); + } + return result; + } + + template + inline void calculate_turns(Piece const& piece1, Piece const& piece2) + { + typedef typename boost::range_value::type ring_type; + typedef typename boost::range_value::type turn_type; + typedef typename boost::range_iterator::type iterator; + + segment_identifier seg_id1 = piece1.first_seg_id; + segment_identifier seg_id2 = piece2.first_seg_id; + + if (seg_id1.segment_index < 0 || seg_id2.segment_index < 0) + { + return; + } + + ring_type const& ring1 = m_rings[seg_id1.multi_index]; + iterator it1_first = boost::begin(ring1) + seg_id1.segment_index; + iterator it1_last = boost::begin(ring1) + piece1.last_segment_index; + + ring_type const& ring2 = m_rings[seg_id2.multi_index]; + iterator it2_first = boost::begin(ring2) + seg_id2.segment_index; + iterator it2_last = boost::begin(ring2) + piece2.last_segment_index; + + turn_type the_model; + the_model.operations[0].piece_index = piece1.index; + the_model.operations[0].seg_id = piece1.first_seg_id; + + iterator it1 = it1_first; + for (iterator prev1 = it1++; + it1 != it1_last; + prev1 = it1++, the_model.operations[0].seg_id.segment_index++) + { + the_model.operations[1].piece_index = piece2.index; + the_model.operations[1].seg_id = piece2.first_seg_id; + + iterator next1 = next_point(ring1, it1); + + iterator it2 = it2_first; + for (iterator prev2 = it2++; + it2 != it2_last; + prev2 = it2++, the_model.operations[1].seg_id.segment_index++) + { + // Revert (this is used more often - should be common function TODO) + the_model.operations[0].other_id = the_model.operations[1].seg_id; + the_model.operations[1].other_id = the_model.operations[0].seg_id; + + iterator next2 = next_point(ring2, it2); + + // TODO: internally get_turn_info calculates robust points. + // But they are already calculated. + // We should be able to use them. + // this means passing them to this visitor, + // and iterating in sync with them... + typedef detail::overlay::get_turn_info + < + detail::overlay::assign_null_policy + > turn_policy; + + turn_policy::apply(*prev1, *it1, *next1, + *prev2, *it2, *next2, + false, false, false, false, + the_model, m_robust_policy, + std::back_inserter(m_turns)); + } + } + } + +public: + + piece_turn_visitor(Rings const& ring_collection, + Turns& turns, + RobustPolicy const& robust_policy, + int last_piece_index) + : m_rings(ring_collection) + , m_turns(turns) + , m_robust_policy(robust_policy) + , m_last_piece_index(last_piece_index) + {} + + template + inline void apply(Piece const& piece1, Piece const& piece2, + bool first = true) + { + boost::ignore_unused_variable_warning(first); + if ( is_adjacent(piece1, piece2) + || detail::disjoint::disjoint_box_box(piece1.robust_envelope, + piece2.robust_envelope)) + { + return; + } + calculate_turns(piece1, piece2); + } +}; + + +}} // namespace detail::buffer +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_GET_PIECE_TURNS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp new file mode 100644 index 0000000000..618afe5fba --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/line_line_intersection.hpp @@ -0,0 +1,88 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_LINE_LINE_INTERSECTION_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_LINE_LINE_INTERSECTION_HPP + + +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + + +// TODO: once change this to proper strategy +// It is different from current segment intersection because these are not segments but lines +// If we have the Line concept, we can create a strategy +// Assumes a convex corner +struct line_line_intersection +{ + + template + static inline strategy::buffer::join_selector apply(Point const& pi, Point const& pj, + Point const& qi, Point const& qj, Point& ip) + { + // See http://mathworld.wolfram.com/Line-LineIntersection.html + typedef typename coordinate_type::type coordinate_type; + + coordinate_type const denominator + = determinant(get<0>(pi) - get<0>(pj), + get<1>(pi) - get<1>(pj), + get<0>(qi) - get<0>(qj), + get<1>(qi) - get<1>(qj)); + + // Even if the corner was checked before (so it is convex now), that + // was done on the original geometry. This function runs on the buffered + // geometries, where sides are generated and might be slightly off. In + // Floating Point, that slightly might just exceed the limit and we have + // to check it again. + + // For round joins, it will not be used at all. + // For miter joints, there is a miter limit + // If segments are parallel/collinear we must be distinguish two cases: + // they continue each other, or they form a spike + if (math::equals(denominator, coordinate_type())) + { + return parallel_continue(get<0>(qj) - get<0>(qi), + get<1>(qj) - get<1>(qi), + get<0>(pj) - get<0>(pi), + get<1>(pj) - get<1>(pi)) + ? strategy::buffer::join_continue + : strategy::buffer::join_spike + ; + } + + coordinate_type d1 = determinant(get<0>(pi), get<1>(pi), get<0>(pj), get<1>(pj)); + coordinate_type d2 = determinant(get<0>(qi), get<1>(qi), get<0>(qj), get<1>(qj)); + + double const multiplier = 1.0 / denominator; + + set<0>(ip, determinant(d1, get<0>(pi) - get<0>(pj), d2, get<0>(qi) - get<0>(qj)) * multiplier); + set<1>(ip, determinant(d1, get<1>(pi) - get<1>(pj), d2, get<1>(qi) - get<1>(qj)) * multiplier); + + return strategy::buffer::join_convex; + } +}; + + +}} // namespace detail::buffer +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_LINE_LINE_INTERSECTION_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/parallel_continue.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/parallel_continue.hpp new file mode 100644 index 0000000000..119d64de74 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/parallel_continue.hpp @@ -0,0 +1,33 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_PARALLEL_CONTINUE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_PARALLEL_CONTINUE_HPP + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + +template +inline bool parallel_continue(T dx1, T dy1, T dx2, T dy2) +{ + T const dot = dx1 * dx2 + dy1 * dy2; + return dot > 0; +} + +}} // namespace detail::buffer +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_PARALLEL_CONTINUE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/turn_in_input.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/turn_in_input.hpp new file mode 100644 index 0000000000..2b1c33d291 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/turn_in_input.hpp @@ -0,0 +1,98 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_TURN_IN_INPUT_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_TURN_IN_INPUT_HPP + +#include +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + +// Checks if an turn/intersection point is inside (or covered by) the input geometry + +template +struct turn_in_input +{ +}; + +template <> +struct turn_in_input +{ + template + static inline int apply(Point const& point, Geometry const& geometry) + { + return geometry::covered_by(point, geometry) ? 1 : -1; + } +}; + +template <> +struct turn_in_input +{ + template + static inline int apply(Point const& , Geometry const& ) + { + return 0; + } +}; + +template <> +struct turn_in_input +{ + template + static inline int apply(Point const& , Geometry const& ) + { + return 0; + } +}; + +template <> +struct turn_in_input +{ + template + static inline int apply(Point const& point, Geometry const& geometry) + { + return geometry::covered_by(point, geometry) ? 1 : -1; + } +}; + +template <> +struct turn_in_input +{ + template + static inline int apply(Point const& , Geometry const& ) + { + return 0; + } +}; + +template <> +struct turn_in_input +{ + template + static inline int apply(Point const& , Geometry const& ) + { + return 0; + } +}; + + +}} // namespace detail::buffer +#endif // DOXYGEN_NO_DETAIL + + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_TURN_IN_INPUT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp b/3party/boost/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp new file mode 100644 index 0000000000..0ace72f637 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/buffer/turn_in_piece_visitor.hpp @@ -0,0 +1,198 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_TURN_IN_PIECE_VISITOR +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_TURN_IN_PIECE_VISITOR + +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace buffer +{ + + +struct turn_get_box +{ + template + static inline void apply(Box& total, Turn const& turn) + { + geometry::expand(total, turn.robust_point); + } +}; + +struct turn_ovelaps_box +{ + template + static inline bool apply(Box const& box, Turn const& turn) + { + return ! geometry::disjoint(box, turn.robust_point); + } +}; + +template +class turn_in_piece_visitor +{ + Turns& m_turns; // because partition is currently operating on const input only + Pieces const& m_pieces; // to check for piece-type + + template + static inline bool projection_on_segment(Point const& subject, Point const& p, Point const& q) + { + typedef Point vector_type; + typedef typename geometry::coordinate_type::type coordinate_type; + + vector_type v = q; + vector_type w = subject; + subtract_point(v, p); + subtract_point(w, p); + + coordinate_type const zero = coordinate_type(); + coordinate_type const c1 = dot_product(w, v); + + if (c1 < zero) + { + return false; + } + coordinate_type const c2 = dot_product(v, v); + if (c2 < c1) + { + return false; + } + + return true; + } + + + template + inline bool on_offsetted(Point const& point, Piece const& piece) const + { + typedef typename strategy::side::services::default_strategy + < + typename cs_tag::type + >::type side_strategy; + + for (int i = 1; i < piece.offsetted_count; i++) + { + Point const& previous = piece.robust_ring[i - 1]; + Point const& current = piece.robust_ring[i]; + int const side = side_strategy::apply(point, previous, current); + if (side == 0) + { + // Collinear, check if projection falls on it + if (projection_on_segment(point, previous, current)) + { + return true; + } + } + + } + return false; + } + + +public: + + inline turn_in_piece_visitor(Turns& turns, Pieces const& pieces) + : m_turns(turns) + , m_pieces(pieces) + {} + + template + inline void apply(Turn const& turn, Piece const& piece, bool first = true) + { + boost::ignore_unused_variable_warning(first); + + if (turn.count_within > 0) + { + // Already inside - no need to check again + return; + } + + if (piece.type == strategy::buffer::buffered_flat_end + || piece.type == strategy::buffer::buffered_concave) + { + // Turns cannot be inside a flat end (though they can be on border) + // Neither we need to check if they are inside concave helper pieces + return; + } + + bool neighbour = false; + for (int i = 0; i < 2; i++) + { + // Don't compare against one of the two source-pieces + if (turn.operations[i].piece_index == piece.index) + { + return; + } + + typename boost::range_value::type const& pc + = m_pieces[turn.operations[i].piece_index]; + if (pc.left_index == piece.index + || pc.right_index == piece.index) + { + if (pc.type == strategy::buffer::buffered_flat_end) + { + // If it is a flat end, don't compare against its neighbor: + // it will always be located on one of the helper segments + return; + } + neighbour = true; + } + } + + int geometry_code = detail::within::point_in_geometry(turn.robust_point, piece.robust_ring); + + if (geometry_code == -1) + { + return; + } + + Turn& mutable_turn = m_turns[turn.turn_index]; + if (geometry_code == 0 && ! neighbour) + { + // If it is on the border and they are neighbours, it should be + // on the offsetted ring + + if (! on_offsetted(turn.robust_point, piece)) + { + // It is on the border but not on the offsetted ring. + // Then it is somewhere on the helper-segments + // Classify it as inside + geometry_code = 1; + mutable_turn.count_on_helper++; + } + } + + switch (geometry_code) + { + case 1 : mutable_turn.count_within++; break; + case 0 : mutable_turn.count_on_offsetted++; break; + } + } +}; + + +}} // namespace detail::buffer +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_BUFFER_TURN_IN_PIECE_VISITOR diff --git a/3party/boost/boost/geometry/algorithms/detail/calculate_sum.hpp b/3party/boost/boost/geometry/algorithms/detail/calculate_sum.hpp index dd0399bb17..b23e70171b 100644 --- a/3party/boost/boost/geometry/algorithms/detail/calculate_sum.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/calculate_sum.hpp @@ -3,6 +3,7 @@ // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2012 Bruno Lalande, Paris, France. // Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -14,9 +15,7 @@ #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_CALCULATE_SUM_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_CALCULATE_SUM_HPP - #include -#include namespace boost { namespace geometry { @@ -32,7 +31,8 @@ class calculate_polygon_sum static inline ReturnType sum_interior_rings(Rings const& rings, Strategy const& strategy) { ReturnType sum = ReturnType(); - for (BOOST_AUTO_TPL(it, boost::begin(rings)); it != boost::end(rings); ++it) + for (typename boost::range_iterator::type + it = boost::begin(rings); it != boost::end(rings); ++it) { sum += Policy::apply(*it, strategy); } diff --git a/3party/boost/boost/geometry/algorithms/detail/check_iterator_range.hpp b/3party/boost/boost/geometry/algorithms/detail/check_iterator_range.hpp new file mode 100644 index 0000000000..09ea7f79a0 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/check_iterator_range.hpp @@ -0,0 +1,71 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_CHECK_ITERATOR_RANGE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_CHECK_ITERATOR_RANGE_HPP + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +// Check whether (each element of) an iterator range satisfies a given +// predicate. +// The predicate must be implemented as having a static apply unary +// method that returns a bool. +// By default an empty range is accepted +template +struct check_iterator_range +{ + template + static inline bool apply(InputIterator first, InputIterator beyond) + { + for (InputIterator it = first; it != beyond; ++it) + { + if ( !Predicate::apply(*it) ) + { + return false; + } + } + return AllowEmptyRange || first != beyond; + } + + + // version where we can pass a predicate object + template + static inline bool apply(InputIterator first, + InputIterator beyond, + Predicate const& predicate) + { + // in case predicate's apply method is static, MSVC will + // complain that predicate is not used + boost::ignore_unused(predicate); + + for (InputIterator it = first; it != beyond; ++it) + { + if ( !predicate.apply(*it) ) + { + return false; + } + } + return AllowEmptyRange || first != beyond; + } +}; + +} // namespace detail +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_CHECK_ITERATOR_RANGE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/comparable_distance/implementation.hpp b/3party/boost/boost/geometry/algorithms/detail/comparable_distance/implementation.hpp new file mode 100644 index 0000000000..b6eb7a27f1 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/comparable_distance/implementation.hpp @@ -0,0 +1,24 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_COMPARABLE_DISTANCE_IMPLEMENTATION_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_COMPARABLE_DISTANCE_IMPLEMENTATION_HPP + +#include + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_COMPARABLE_DISTANCE_IMPLEMENTATION_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/comparable_distance/interface.hpp b/3party/boost/boost/geometry/algorithms/detail/comparable_distance/interface.hpp new file mode 100644 index 0000000000..1a57c8f4b3 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/comparable_distance/interface.hpp @@ -0,0 +1,363 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_COMPARABLE_DISTANCE_INTERFACE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_COMPARABLE_DISTANCE_INTERFACE_HPP + +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +namespace resolve_strategy +{ + +struct comparable_distance +{ + template + static inline + typename comparable_distance_result::type + apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy_type; + + return dispatch::distance + < + Geometry1, Geometry2, comparable_strategy_type + >::apply(geometry1, + geometry2, + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy)); + } + + template + static inline typename comparable_distance_result + < + Geometry1, Geometry2, default_strategy + >::type + apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + default_strategy) + { + typedef typename strategy::distance::services::comparable_type + < + typename detail::distance::default_strategy + < + Geometry1, Geometry2 + >::type + >::type comparable_strategy_type; + + return dispatch::distance + < + Geometry1, Geometry2, comparable_strategy_type + >::apply(geometry1, geometry2, comparable_strategy_type()); + } +}; + +} // namespace resolve_strategy + + +namespace resolve_variant +{ + + +template +struct comparable_distance +{ + template + static inline + typename comparable_distance_result::type + apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + return resolve_strategy::comparable_distance::apply(geometry1, + geometry2, + strategy); + } +}; + + +template +struct comparable_distance + < + boost::variant, + Geometry2 + > +{ + template + struct visitor: static_visitor + < + typename comparable_distance_result + < + boost::variant, + Geometry2, + Strategy + >::type + > + { + Geometry2 const& m_geometry2; + Strategy const& m_strategy; + + visitor(Geometry2 const& geometry2, + Strategy const& strategy) + : m_geometry2(geometry2), + m_strategy(strategy) + {} + + template + typename comparable_distance_result + < + Geometry1, Geometry2, Strategy + >::type + operator()(Geometry1 const& geometry1) const + { + return comparable_distance + < + Geometry1, + Geometry2 + >::template apply + < + Strategy + >(geometry1, m_geometry2, m_strategy); + } + }; + + template + static inline typename comparable_distance_result + < + boost::variant, + Geometry2, + Strategy + >::type + apply(boost::variant const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + return apply_visitor(visitor(geometry2, strategy), geometry1); + } +}; + + +template +struct comparable_distance + < + Geometry1, + boost::variant + > +{ + template + struct visitor: static_visitor + < + typename comparable_distance_result + < + Geometry1, + boost::variant, + Strategy + >::type + > + { + Geometry1 const& m_geometry1; + Strategy const& m_strategy; + + visitor(Geometry1 const& geometry1, + Strategy const& strategy) + : m_geometry1(geometry1), + m_strategy(strategy) + {} + + template + typename comparable_distance_result + < + Geometry1, Geometry2, Strategy + >::type + operator()(Geometry2 const& geometry2) const + { + return comparable_distance + < + Geometry1, + Geometry2 + >::template apply + < + Strategy + >(m_geometry1, geometry2, m_strategy); + } + }; + + template + static inline typename comparable_distance_result + < + Geometry1, + boost::variant, + Strategy + >::type + apply(Geometry1 const& geometry1, + boost::variant const& geometry2, + Strategy const& strategy) + { + return apply_visitor(visitor(geometry1, strategy), geometry2); + } +}; + + +template +< + BOOST_VARIANT_ENUM_PARAMS(typename A), + BOOST_VARIANT_ENUM_PARAMS(typename B) +> +struct comparable_distance + < + boost::variant, + boost::variant + > +{ + template + struct visitor: static_visitor + < + typename comparable_distance_result + < + boost::variant, + boost::variant, + Strategy + >::type + > + { + Strategy const& m_strategy; + + visitor(Strategy const& strategy) + : m_strategy(strategy) + {} + + template + typename comparable_distance_result + < + Geometry1, Geometry2, Strategy + >::type + operator()(Geometry1 const& geometry1, Geometry2 const& geometry2) const + { + return comparable_distance + < + Geometry1, + Geometry2 + >::template apply + < + Strategy + >(geometry1, geometry2, m_strategy); + } + }; + + template + static inline typename comparable_distance_result + < + boost::variant, + boost::variant, + Strategy + >::type + apply(boost::variant const& geometry1, + boost::variant const& geometry2, + Strategy const& strategy) + { + return apply_visitor(visitor(strategy), geometry1, geometry2); + } +}; + +} // namespace resolve_variant + + + +/*! +\brief \brief_calc2{comparable distance measurement} \brief_strategy +\ingroup distance +\details The free function comparable_distance does not necessarily calculate the distance, + but it calculates a distance measure such that two distances are comparable to each other. + For example: for the Cartesian coordinate system, Pythagoras is used but the square root + is not taken, which makes it faster and the results of two point pairs can still be + compared to each other. +\tparam Geometry1 first geometry type +\tparam Geometry2 second geometry type +\tparam Strategy \tparam_strategy{Distance} +\param geometry1 \param_geometry +\param geometry2 \param_geometry +\param strategy \param_strategy{distance} +\return \return_calc{comparable distance} + +\qbk{distinguish,with strategy} + */ +template +inline typename comparable_distance_result::type +comparable_distance(Geometry1 const& geometry1, Geometry2 const& geometry2, + Strategy const& strategy) +{ + concept::check(); + concept::check(); + + return resolve_variant::comparable_distance + < + Geometry1, + Geometry2 + >::apply(geometry1, geometry2, strategy); +} + + + +/*! +\brief \brief_calc2{comparable distance measurement} +\ingroup distance +\details The free function comparable_distance does not necessarily calculate the distance, + but it calculates a distance measure such that two distances are comparable to each other. + For example: for the Cartesian coordinate system, Pythagoras is used but the square root + is not taken, which makes it faster and the results of two point pairs can still be + compared to each other. +\tparam Geometry1 first geometry type +\tparam Geometry2 second geometry type +\param geometry1 \param_geometry +\param geometry2 \param_geometry +\return \return_calc{comparable distance} + +\qbk{[include reference/algorithms/comparable_distance.qbk]} + */ +template +inline typename default_comparable_distance_result::type +comparable_distance(Geometry1 const& geometry1, Geometry2 const& geometry2) +{ + concept::check(); + concept::check(); + + return comparable_distance(geometry1, geometry2, default_strategy()); +} + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_COMPARABLE_DISTANCE_INTERFACE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp b/3party/boost/boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp index d39824a61d..fccdf4bb1d 100644 --- a/3party/boost/boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/convert_indexed_to_indexed.hpp @@ -33,9 +33,9 @@ namespace detail { namespace conversion template < - typename Source, - typename Destination, - std::size_t Dimension, + typename Source, + typename Destination, + std::size_t Dimension, std::size_t DimensionCount > struct indexed_to_indexed @@ -44,25 +44,25 @@ struct indexed_to_indexed { typedef typename coordinate_type::type coordinate_type; - geometry::set(destination, + geometry::set(destination, boost::numeric_cast( geometry::get(source))); - geometry::set(destination, + geometry::set(destination, boost::numeric_cast( geometry::get(source))); - + indexed_to_indexed < - Source, Destination, + Source, Destination, Dimension + 1, DimensionCount >::apply(source, destination); } }; -template +template < - typename Source, - typename Destination, + typename Source, + typename Destination, std::size_t DimensionCount > struct indexed_to_indexed diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint.hpp deleted file mode 100644 index e944e5169a..0000000000 --- a/3party/boost/boost/geometry/algorithms/detail/disjoint.hpp +++ /dev/null @@ -1,239 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. -// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. -// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. - -// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library -// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_HPP -#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_HPP - -// Note: contrary to most files, the geometry::detail::disjoint namespace -// is partly implemented in a separate file, to avoid circular references -// disjoint -> get_turns -> disjoint - -#include - -#include - -#include -#include -#include - -#include - -#include - - - -namespace boost { namespace geometry -{ - - -#ifndef DOXYGEN_NO_DETAIL -namespace detail { namespace disjoint -{ - - -struct disjoint_interrupt_policy -{ - static bool const enabled = true; - bool has_intersections; - - inline disjoint_interrupt_policy() - : has_intersections(false) - {} - - template - inline bool apply(Range const& range) - { - // If there is any IP in the range, it is NOT disjoint - if (boost::size(range) > 0) - { - has_intersections = true; - return true; - } - return false; - } -}; - - - -template -< - typename Point1, typename Point2, - std::size_t Dimension, std::size_t DimensionCount -> -struct point_point -{ - static inline bool apply(Point1 const& p1, Point2 const& p2) - { - if (! geometry::math::equals(get(p1), get(p2))) - { - return true; - } - return point_point - < - Point1, Point2, - Dimension + 1, DimensionCount - >::apply(p1, p2); - } -}; - - -template -struct point_point -{ - static inline bool apply(Point1 const& , Point2 const& ) - { - return false; - } -}; - - -template -< - typename Point, typename Box, - std::size_t Dimension, std::size_t DimensionCount -> -struct point_box -{ - static inline bool apply(Point const& point, Box const& box) - { - if (get(point) < get(box) - || get(point) > get(box)) - { - return true; - } - return point_box - < - Point, Box, - Dimension + 1, DimensionCount - >::apply(point, box); - } -}; - - -template -struct point_box -{ - static inline bool apply(Point const& , Box const& ) - { - return false; - } -}; - - -template -< - typename Box1, typename Box2, - std::size_t Dimension, std::size_t DimensionCount -> -struct box_box -{ - static inline bool apply(Box1 const& box1, Box2 const& box2) - { - if (get(box1) < get(box2)) - { - return true; - } - if (get(box1) > get(box2)) - { - return true; - } - return box_box - < - Box1, Box2, - Dimension + 1, DimensionCount - >::apply(box1, box2); - } -}; - - -template -struct box_box -{ - static inline bool apply(Box1 const& , Box2 const& ) - { - return false; - } -}; - - -template -< - typename Geometry1, typename Geometry2 -> -struct reverse_covered_by -{ - static inline bool apply(Geometry1 const& geometry1, Geometry2 const& geometry2) - { - return ! geometry::covered_by(geometry1, geometry2); - } -}; - - - -/*! - \brief Internal utility function to detect of boxes are disjoint - \note Is used from other algorithms, declared separately - to avoid circular references - */ -template -inline bool disjoint_box_box(Box1 const& box1, Box2 const& box2) -{ - return box_box - < - Box1, Box2, - 0, dimension::type::value - >::apply(box1, box2); -} - - - -/*! - \brief Internal utility function to detect of points are disjoint - \note To avoid circular references - */ -template -inline bool disjoint_point_point(Point1 const& point1, Point2 const& point2) -{ - return point_point - < - Point1, Point2, - 0, dimension::type::value - >::apply(point1, point2); -} - - -}} // namespace detail::disjoint -#endif // DOXYGEN_NO_DETAIL - - -#ifndef DOXYGEN_NO_DETAIL -namespace detail { namespace equals -{ - -/*! - \brief Internal utility function to detect of points are disjoint - \note To avoid circular references - */ -template -inline bool equals_point_point(Point1 const& point1, Point2 const& point2) -{ - return ! detail::disjoint::disjoint_point_point(point1, point2); -} - - -}} // namespace detail::equals -#endif // DOXYGEN_NO_DETAIL - -}} // namespace boost::geometry - -#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/areal_areal.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/areal_areal.hpp new file mode 100644 index 0000000000..140d87daf2 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/areal_areal.hpp @@ -0,0 +1,134 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_AREAL_AREAL_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_AREAL_AREAL_HPP + +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + + +template +struct check_each_ring_for_within +{ + bool has_within; + Geometry const& m_geometry; + + inline check_each_ring_for_within(Geometry const& g) + : has_within(false) + , m_geometry(g) + {} + + template + inline void apply(Range const& range) + { + if ( geometry::within(geometry::return_point_on_surface(range), m_geometry) ) + { + has_within = true; + } + } +}; + + + +template +inline bool rings_containing(FirstGeometry const& geometry1, + SecondGeometry const& geometry2) +{ + check_each_ring_for_within checker(geometry1); + geometry::detail::for_each_range(geometry2, checker); + return checker.has_within; +} + + + +template +struct general_areal +{ + static inline + bool apply(Geometry1 const& geometry1, Geometry2 const& geometry2) + { + if ( ! disjoint_linear::apply(geometry1, geometry2) ) + { + return false; + } + + // If there is no intersection of segments, they might located + // inside each other + + // We check that using a point on the surface, and see if that is inside + // the other geometry. And vice versa. + + if ( rings_containing(geometry1, geometry2) + || rings_containing(geometry2, geometry1) ) + { + return false; + } + + return true; + } +}; + + +}} // namespace detail::disjoint +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : detail::disjoint::general_areal +{}; + + +template +struct disjoint + : detail::disjoint::general_areal +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_AREAL_AREAL_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/box_box.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/box_box.hpp new file mode 100644 index 0000000000..ccff9799fd --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/box_box.hpp @@ -0,0 +1,114 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_BOX_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_BOX_BOX_HPP + +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + + +template +< + typename Box1, typename Box2, + std::size_t Dimension, std::size_t DimensionCount +> +struct box_box +{ + static inline bool apply(Box1 const& box1, Box2 const& box2) + { + if (get(box1) < get(box2)) + { + return true; + } + if (get(box1) > get(box2)) + { + return true; + } + return box_box + < + Box1, Box2, + Dimension + 1, DimensionCount + >::apply(box1, box2); + } +}; + + +template +struct box_box +{ + static inline bool apply(Box1 const& , Box2 const& ) + { + return false; + } +}; + + +/*! + \brief Internal utility function to detect of boxes are disjoint + \note Is used from other algorithms, declared separately + to avoid circular references + */ +template +inline bool disjoint_box_box(Box1 const& box1, Box2 const& box2) +{ + return box_box + < + Box1, Box2, + 0, dimension::type::value + >::apply(box1, box2); +} + + +}} // namespace detail::disjoint +#endif // DOXYGEN_NO_DETAIL + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : detail::disjoint::box_box +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_BOX_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/implementation.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/implementation.hpp new file mode 100644 index 0000000000..0c8079b8e4 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/implementation.hpp @@ -0,0 +1,36 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_IMPLEMENTATION_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_IMPLEMENTATION_HPP + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_IMPLEMENTATION_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/interface.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/interface.hpp new file mode 100644 index 0000000000..ec9057ba0d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/interface.hpp @@ -0,0 +1,187 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_INTERFACE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_INTERFACE_HPP + +#include + +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// If reversal is needed, perform it +template +< + typename Geometry1, typename Geometry2, + std::size_t DimensionCount, + typename Tag1, typename Tag2 +> +struct disjoint +{ + static inline bool apply(Geometry1 const& g1, Geometry2 const& g2) + { + return disjoint + < + Geometry2, Geometry1, + DimensionCount, + Tag2, Tag1 + >::apply(g2, g1); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +namespace resolve_variant { + +template +struct disjoint +{ + static inline bool apply(Geometry1 const& geometry1, Geometry2 const& geometry2) + { + concept::check_concepts_and_equal_dimensions + < + Geometry1 const, + Geometry2 const + >(); + + return dispatch::disjoint::apply(geometry1, geometry2); + } +}; + +template +struct disjoint, Geometry2> +{ + struct visitor: boost::static_visitor + { + Geometry2 const& m_geometry2; + + visitor(Geometry2 const& geometry2): m_geometry2(geometry2) {} + + template + bool operator()(Geometry1 const& geometry1) const + { + return disjoint::apply(geometry1, m_geometry2); + } + }; + + static inline bool + apply(boost::variant const& geometry1, + Geometry2 const& geometry2) + { + return boost::apply_visitor(visitor(geometry2), geometry1); + } +}; + +template +struct disjoint > +{ + struct visitor: boost::static_visitor + { + Geometry1 const& m_geometry1; + + visitor(Geometry1 const& geometry1): m_geometry1(geometry1) {} + + template + bool operator()(Geometry2 const& geometry2) const + { + return disjoint::apply(m_geometry1, geometry2); + } + }; + + static inline bool + apply(Geometry1 const& geometry1, + boost::variant const& geometry2) + { + return boost::apply_visitor(visitor(geometry1), geometry2); + } +}; + +template < + BOOST_VARIANT_ENUM_PARAMS(typename T1), + BOOST_VARIANT_ENUM_PARAMS(typename T2) +> +struct disjoint< + boost::variant, + boost::variant +> +{ + struct visitor: boost::static_visitor + { + template + bool operator()(Geometry1 const& geometry1, + Geometry2 const& geometry2) const + { + return disjoint::apply(geometry1, geometry2); + } + }; + + static inline bool + apply(boost::variant const& geometry1, + boost::variant const& geometry2) + { + return boost::apply_visitor(visitor(), geometry1, geometry2); + } +}; + +} // namespace resolve_variant + + + +/*! +\brief \brief_check2{are disjoint} +\ingroup disjoint +\tparam Geometry1 \tparam_geometry +\tparam Geometry2 \tparam_geometry +\param geometry1 \param_geometry +\param geometry2 \param_geometry +\return \return_check2{are disjoint} + +\qbk{[include reference/algorithms/disjoint.qbk]} +*/ +template +inline bool disjoint(Geometry1 const& geometry1, + Geometry2 const& geometry2) +{ + return resolve_variant::disjoint::apply(geometry1, geometry2); +} + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_INTERFACE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_areal.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_areal.hpp new file mode 100644 index 0000000000..eefd351b8d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_areal.hpp @@ -0,0 +1,244 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_AREAL_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_AREAL_HPP + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + + +template +struct disjoint_linear_areal +{ + static inline bool apply(Geometry1 const& g1, Geometry2 const& g2) + { + // if there are intersections - return false + if ( !disjoint_linear::apply(g1, g2) ) + return false; + + typedef typename point_type::type point1_type; + point1_type p; + geometry::point_on_border(p, g1); + return !geometry::covered_by(p, g2); + } +}; + + + + +template +< + typename Segment, + typename Areal, + typename Tag = typename tag::type +> +struct disjoint_segment_areal + : not_implemented +{}; + + +template +class disjoint_segment_areal +{ +private: + template + static inline bool check_interior_rings(RingIterator first, + RingIterator beyond, + Segment const& segment) + { + for (RingIterator it = first; it != beyond; ++it) + { + if ( !disjoint_range_segment_or_box + < + typename std::iterator_traits + < + RingIterator + >::value_type, + closure::value, + Segment + >::apply(*it, segment) ) + { + return false; + } + } + return true; + } + + + template + static inline + bool check_interior_rings(InteriorRings const& interior_rings, + Segment const& segment) + { + return check_interior_rings(boost::begin(interior_rings), + boost::end(interior_rings), + segment); + } + + +public: + static inline bool apply(Segment const& segment, Polygon const& polygon) + { + typedef typename geometry::ring_type::type ring; + + if ( !disjoint_range_segment_or_box + < + ring, closure::value, Segment + >::apply(geometry::exterior_ring(polygon), segment) ) + { + return false; + } + + if ( !check_interior_rings(geometry::interior_rings(polygon), segment) ) + { + return false; + } + + typename point_type::type p; + detail::assign_point_from_index<0>(segment, p); + + return !geometry::covered_by(p, polygon); + } +}; + + +template +struct disjoint_segment_areal +{ + static inline + bool apply(Segment const& segment, MultiPolygon const& multipolygon) + { + return disjoint_multirange_segment_or_box + < + MultiPolygon, Segment + >::apply(multipolygon, segment); + } +}; + + +template +struct disjoint_segment_areal +{ + static inline bool apply(Segment const& segment, Ring const& ring) + { + if ( !disjoint_range_segment_or_box + < + Ring, closure::value, Segment + >::apply(ring, segment) ) + { + return false; + } + + typename point_type::type p; + detail::assign_point_from_index<0>(segment, p); + + return !geometry::covered_by(p, ring); + } +}; + + +}} // namespace detail::disjoint +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : public detail::disjoint::disjoint_linear_areal +{}; + + +template +struct disjoint +{ + static inline + bool apply(Areal const& areal, Linear const& linear) + { + return detail::disjoint::disjoint_linear_areal + < + Linear, Areal + >::apply(linear, areal); + } +}; + + +template +struct disjoint +{ + static inline bool apply(Areal const& g1, Segment const& g2) + { + return detail::disjoint::disjoint_segment_areal + < + Segment, Areal + >::apply(g2, g1); + } +}; + + +template +struct disjoint + : detail::disjoint::disjoint_segment_areal +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_AREAL_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_linear.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_linear.hpp new file mode 100644 index 0000000000..ad84d7191d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_linear.hpp @@ -0,0 +1,174 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_LINEAR_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_LINEAR_HPP + +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + +template +struct disjoint_segment +{ + static inline bool apply(Segment1 const& segment1, Segment2 const& segment2) + { + typedef typename point_type::type point_type; + + // We don't need to rescale to detect disjointness + typedef no_rescale_policy rescale_policy_type; + rescale_policy_type robust_policy; + + typedef segment_intersection_points + < + point_type, + typename segment_ratio_type + < + point_type, + rescale_policy_type + >::type + > intersection_return_type; + + intersection_return_type is + = strategy::intersection::relate_cartesian_segments + < + policies::relate::segments_intersection_points + < + intersection_return_type + > + >::apply(segment1, segment2, robust_policy); + + return is.count == 0; + } +}; + + +struct assign_disjoint_policy +{ + // We want to include all points: + static bool const include_no_turn = true; + static bool const include_degenerate = true; + static bool const include_opposite = true; + + // We don't assign extra info: + template + < + typename Info, + typename Point1, + typename Point2, + typename IntersectionInfo, + typename DirInfo + > + static inline void apply(Info& , Point1 const& , Point2 const&, + IntersectionInfo const&, DirInfo const&) + {} +}; + + +template +struct disjoint_linear +{ + static inline + bool apply(Geometry1 const& geometry1, Geometry2 const& geometry2) + { + typedef typename geometry::point_type::type point_type; + typedef detail::no_rescale_policy rescale_policy_type; + typedef overlay::turn_info + < + point_type, + typename segment_ratio_type::type + > turn_info; + std::deque turns; + + static const bool reverse1 = overlay::do_reverse::value>::value; // should be false + static const bool reverse2 = overlay::do_reverse::value>::value; // should be false + + // Specify two policies: + // 1) Stop at any intersection + // 2) In assignment, include also degenerate points (which are normally skipped) + disjoint_interrupt_policy policy; + rescale_policy_type robust_policy; + geometry::get_turns + < + reverse1, reverse2, + assign_disjoint_policy + >(geometry1, geometry2, robust_policy, turns, policy); + + return !policy.has_intersections; + } +}; + + +}} // namespace detail::disjoint +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : detail::disjoint::disjoint_linear +{}; + + +template +struct disjoint + : detail::disjoint::disjoint_segment +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_LINEAR_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp new file mode 100644 index 0000000000..d181726e2e --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/linear_segment_or_box.hpp @@ -0,0 +1,195 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_SEGMENT_OR_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_SEGMENT_OR_BOX_HPP + +#include +#include + +#include + +#include + +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + + +template +struct disjoint_multirange_segment_or_box +{ + static inline + bool apply(MultiRange const& multirange, SegmentOrBox const& segment_or_box) + { + typedef typename boost::range_iterator + < + MultiRange const + >::type const_iterator; + + for (const_iterator it = boost::begin(multirange); + it != boost::end(multirange); ++it) + { + if ( !dispatch::disjoint + < + typename boost::range_value::type, + SegmentOrBox + >::apply(*it, segment_or_box) ) + { + return false; + } + } + return true; + } +}; + + +template +< + typename Range, + closure_selector Closure, + typename SegmentOrBox +> +struct disjoint_range_segment_or_box +{ + static inline + bool apply(Range const& range, SegmentOrBox const& segment_or_box) + { + typedef typename closeable_view::type view_type; + + typedef typename ::boost::range_value::type point_type; + typedef typename ::boost::range_iterator + < + view_type const + >::type const_iterator; + + typedef typename ::boost::range_size::type size_type; + + typedef typename geometry::model::referring_segment + < + point_type const + > range_segment; + + view_type view(range); + + const size_type count = ::boost::size(view); + + if ( count == 0 ) + { + return false; + } + else if ( count == 1 ) + { + return dispatch::disjoint + < + point_type, SegmentOrBox + >::apply(geometry::range::front(view), + segment_or_box); + } + else + { + const_iterator it0 = ::boost::begin(view); + const_iterator it1 = ::boost::begin(view) + 1; + const_iterator last = ::boost::end(view); + + for ( ; it1 != last ; ++it0, ++it1 ) + { + range_segment rng_segment(*it0, *it1); + if ( !dispatch::disjoint + < + range_segment, SegmentOrBox + >::apply(rng_segment, segment_or_box) ) + { + return false; + } + } + return true; + } + } +}; + + + + +template +< + typename Linear, + typename SegmentOrBox, + typename Tag = typename tag::type +> +struct disjoint_linear_segment_or_box + : not_implemented +{}; + + +template +struct disjoint_linear_segment_or_box + : disjoint_range_segment_or_box +{}; + + +template +struct disjoint_linear_segment_or_box + < + MultiLinestring, SegmentOrBox, multi_linestring_tag + > : disjoint_multirange_segment_or_box +{}; + + +}} // namespace detail::disjoint +#endif // DOXYGEN_NO_DETAIL + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : detail::disjoint::disjoint_linear_segment_or_box +{}; + + +template +struct disjoint + : detail::disjoint::disjoint_linear_segment_or_box +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_LINEAR_SEGMENT_OR_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/point_box.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/point_box.hpp new file mode 100644 index 0000000000..ea6609a153 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/point_box.hpp @@ -0,0 +1,94 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_BOX_HPP + +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + + +template +< + typename Point, typename Box, + std::size_t Dimension, std::size_t DimensionCount +> +struct point_box +{ + static inline bool apply(Point const& point, Box const& box) + { + if (get(point) < get(box) + || get(point) > get(box)) + { + return true; + } + return point_box + < + Point, Box, + Dimension + 1, DimensionCount + >::apply(point, box); + } +}; + + +template +struct point_box +{ + static inline bool apply(Point const& , Box const& ) + { + return false; + } +}; + + +}} // namespace detail::equals +#endif // DOXYGEN_NO_DETAIL + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : detail::disjoint::point_box +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/point_geometry.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/point_geometry.hpp new file mode 100644 index 0000000000..a58bff41da --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/point_geometry.hpp @@ -0,0 +1,111 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_GEOMETRY_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_GEOMETRY_HPP + +#include + +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + + +template +struct disjoint_point_linear +{ + static inline + bool apply(Point const& pt, Geometry const& g) + { + return !geometry::covered_by(pt, g); + } +}; + + +template +struct reverse_covered_by +{ + static inline + bool apply(Geometry1 const& geometry1, Geometry2 const& geometry2) + { + return !geometry::covered_by(geometry1, geometry2); + } +}; + + +}} // namespace detail::disjoint +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : public detail::disjoint::disjoint_point_linear +{}; + + +template +struct disjoint + : detail::disjoint::reverse_covered_by +{}; + + +template +struct disjoint +{ + static inline bool apply(Point const& point, Segment const& segment) + { + typedef geometry::model::referring_segment other_segment; + + other_segment other(point, point); + return detail::disjoint::disjoint_segment + < + Segment, other_segment + >::apply(segment, other); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_GEOMETRY_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/point_point.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/point_point.hpp new file mode 100644 index 0000000000..b1d32bf95e --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/point_point.hpp @@ -0,0 +1,112 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_POINT_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_POINT_HPP + +#include + +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + +template +< + typename Point1, typename Point2, + std::size_t Dimension, std::size_t DimensionCount +> +struct point_point +{ + static inline bool apply(Point1 const& p1, Point2 const& p2) + { + if (! geometry::math::equals(get(p1), get(p2))) + { + return true; + } + return point_point + < + Point1, Point2, + Dimension + 1, DimensionCount + >::apply(p1, p2); + } +}; + + +template +struct point_point +{ + static inline bool apply(Point1 const& , Point2 const& ) + { + return false; + } +}; + + +/*! + \brief Internal utility function to detect of points are disjoint + \note To avoid circular references + */ +template +inline bool disjoint_point_point(Point1 const& point1, Point2 const& point2) +{ + return point_point + < + Point1, Point2, + 0, dimension::type::value + >::apply(point1, point2); +} + + +}} // namespace detail::disjoint +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : detail::disjoint::point_point +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_POINT_POINT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/disjoint/segment_box.hpp b/3party/boost/boost/geometry/algorithms/detail/disjoint/segment_box.hpp new file mode 100644 index 0000000000..5368432ed4 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/disjoint/segment_box.hpp @@ -0,0 +1,291 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_SEGMENT_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_SEGMENT_BOX_HPP + +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace disjoint +{ + + +template +struct compute_tmin_tmax_per_dim +{ + template + static inline void apply(SegmentPoint const& p0, + SegmentPoint const& p1, + Box const& box, + RelativeDistance& ti_min, + RelativeDistance& ti_max, + RelativeDistance& diff) + { + typedef typename coordinate_type::type box_coordinate_type; + typedef typename coordinate_type + < + SegmentPoint + >::type point_coordinate_type; + + RelativeDistance c_p0 = boost::numeric_cast + < + point_coordinate_type + >( geometry::get(p0) ); + + RelativeDistance c_p1 = boost::numeric_cast + < + point_coordinate_type + >( geometry::get(p1) ); + + RelativeDistance c_b_min = boost::numeric_cast + < + box_coordinate_type + >( geometry::get(box) ); + + RelativeDistance c_b_max = boost::numeric_cast + < + box_coordinate_type + >( geometry::get(box) ); + + if ( geometry::get(p1) >= geometry::get(p0) ) + { + diff = c_p1 - c_p0; + ti_min = c_b_min - c_p0; + ti_max = c_b_max - c_p0; + } + else + { + diff = c_p0 - c_p1; + ti_min = c_p0 - c_b_max; + ti_max = c_p0 - c_b_min; + } + } +}; + + +template +< + typename RelativeDistance, + typename SegmentPoint, + typename Box, + std::size_t I, + std::size_t Dimension +> +struct disjoint_segment_box_impl +{ + template + static inline bool apply(SegmentPoint const& p0, + SegmentPoint const& p1, + Box const& box, + RelativeDistancePair& t_min, + RelativeDistancePair& t_max) + { + RelativeDistance ti_min, ti_max, diff; + + compute_tmin_tmax_per_dim::apply(p0, p1, box, ti_min, ti_max, diff); + + if ( geometry::math::equals(diff, 0) ) + { + if ( (geometry::math::equals(t_min.second, 0) + && t_min.first > ti_max) + || + (geometry::math::equals(t_max.second, 0) + && t_max.first < ti_min) ) + { + return true; + } + } + + RelativeDistance t_min_x_diff = t_min.first * diff; + RelativeDistance t_max_x_diff = t_max.first * diff; + + if ( t_min_x_diff > ti_max * t_min.second + || t_max_x_diff < ti_min * t_max.second ) + { + return true; + } + + if ( ti_min * t_min.second > t_min_x_diff ) + { + t_min.first = ti_min; + t_min.second = diff; + } + if ( ti_max * t_max.second < t_max_x_diff ) + { + t_max.first = ti_max; + t_max.second = diff; + } + + if ( t_min.first > t_min.second || t_max.first < 0 ) + { + return true; + } + + return disjoint_segment_box_impl + < + RelativeDistance, + SegmentPoint, + Box, + I + 1, + Dimension + >::apply(p0, p1, box, t_min, t_max); + } +}; + + +template +< + typename RelativeDistance, + typename SegmentPoint, + typename Box, + std::size_t Dimension +> +struct disjoint_segment_box_impl + < + RelativeDistance, SegmentPoint, Box, 0, Dimension + > +{ + static inline bool apply(SegmentPoint const& p0, + SegmentPoint const& p1, + Box const& box) + { + std::pair t_min, t_max; + RelativeDistance diff; + + compute_tmin_tmax_per_dim<0>::apply(p0, p1, box, + t_min.first, t_max.first, diff); + + if ( geometry::math::equals(diff, 0) ) + { + if ( geometry::math::equals(t_min.first, 0) ) { t_min.first = -1; } + if ( geometry::math::equals(t_max.first, 0) ) { t_max.first = 1; } + } + + if ( t_min.first > diff || t_max.first < 0 ) + { + return true; + } + + t_min.second = t_max.second = diff; + + return disjoint_segment_box_impl + < + RelativeDistance, SegmentPoint, Box, 1, Dimension + >::apply(p0, p1, box, t_min, t_max); + } +}; + + +template +< + typename RelativeDistance, + typename SegmentPoint, + typename Box, + std::size_t Dimension +> +struct disjoint_segment_box_impl + < + RelativeDistance, SegmentPoint, Box, Dimension, Dimension + > +{ + template + static inline bool apply(SegmentPoint const&, SegmentPoint const&, + Box const&, + RelativeDistancePair&, RelativeDistancePair&) + { + return false; + } +}; + + +//========================================================================= + + +template +struct disjoint_segment_box +{ + static inline bool apply(Segment const& segment, Box const& box) + { + assert_dimension_equal(); + + typedef typename util::calculation_type::geometric::binary + < + Segment, Box, void + >::type relative_distance_type; + + typedef typename point_type::type segment_point_type; + segment_point_type p0, p1; + geometry::detail::assign_point_from_index<0>(segment, p0); + geometry::detail::assign_point_from_index<1>(segment, p1); + + return disjoint_segment_box_impl + < + relative_distance_type, segment_point_type, Box, + 0, dimension::value + >::apply(p0, p1, box); + } +}; + + +}} // namespace detail::disjoint +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct disjoint + : detail::disjoint::disjoint_segment_box +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISJOINT_SEGMENT_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/backward_compatibility.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/backward_compatibility.hpp new file mode 100644 index 0000000000..363439d20c --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/backward_compatibility.hpp @@ -0,0 +1,345 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_BACKWARD_COMPATIBILITY_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_BACKWARD_COMPATIBILITY_HPP + +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + +template +struct point_to_segment +{ + static inline typename strategy::distance::services::return_type + < + Strategy, + Point, + typename point_type::type + >::type + apply(Point const& point, Segment const& segment, Strategy const& ) + { + typename detail::distance::default_ps_strategy + < + Point, + typename point_type::type, + Strategy + >::type segment_strategy; + + typename point_type::type p[2]; + geometry::detail::assign_point_from_index<0>(segment, p[0]); + geometry::detail::assign_point_from_index<1>(segment, p[1]); + return segment_strategy.apply(point, p[0], p[1]); + } +}; + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// Point-segment version 1, with point-point strategy +template +struct distance +< + Point, Segment, Strategy, + point_tag, segment_tag, strategy_tag_distance_point_point, + false +> : detail::distance::point_to_segment +{}; + + +// Point-line version 1, where point-point strategy is specified +template +struct distance +< + Point, Linestring, Strategy, + point_tag, linestring_tag, strategy_tag_distance_point_point, + false +> +{ + + static inline typename return_type::type>::type + apply(Point const& point, + Linestring const& linestring, + Strategy const&) + { + typedef typename detail::distance::default_ps_strategy + < + Point, + typename point_type::type, + Strategy + >::type ps_strategy_type; + + return detail::distance::point_to_range + < + Point, Linestring, closed, ps_strategy_type + >::apply(point, linestring, ps_strategy_type()); + } +}; + + +// Point-ring , where point-point strategy is specified +template +struct distance +< + Point, Ring, Strategy, + point_tag, ring_tag, strategy_tag_distance_point_point, + false +> +{ + typedef typename strategy::distance::services::return_type + < + Strategy, Point, typename point_type::type + >::type return_type; + + static inline return_type apply(Point const& point, + Ring const& ring, + Strategy const&) + { + typedef typename detail::distance::default_ps_strategy + < + Point, + typename point_type::type, + Strategy + >::type ps_strategy_type; + + std::pair + dc = detail::distance::point_to_ring + < + Point, Ring, + geometry::closure::value, + ps_strategy_type + >::apply(point, ring, ps_strategy_type()); + + return dc.second ? return_type(0) : dc.first; + } +}; + + +// Point-polygon , where point-point strategy is specified +template +struct distance +< + Point, Polygon, Strategy, + point_tag, polygon_tag, strategy_tag_distance_point_point, + false +> +{ + typedef typename strategy::distance::services::return_type + < + Strategy, Point, typename point_type::type + >::type return_type; + + static inline return_type apply(Point const& point, + Polygon const& polygon, + Strategy const&) + { + typedef typename detail::distance::default_ps_strategy + < + Point, + typename point_type::type, + Strategy + >::type ps_strategy_type; + + std::pair + dc = detail::distance::point_to_polygon + < + Point, Polygon, + geometry::closure::value, + ps_strategy_type + >::apply(point, polygon, ps_strategy_type()); + + return dc.second ? return_type(0) : dc.first; + } +}; + + + + +namespace splitted_dispatch +{ + + +template +< + typename Point, + typename MultiGeometry, + typename MultiGeometryTag, + typename Strategy +> +struct distance_single_to_multi + < + Point, MultiGeometry, Strategy, + point_tag, MultiGeometryTag, + strategy_tag_distance_point_point + > +{ + typedef typename strategy::distance::services::return_type + < + Strategy, Point, typename point_type::type + >::type return_type; + + static inline return_type apply(Point const& point, + MultiGeometry const& multigeometry, + Strategy const&) + { + typedef typename detail::distance::default_ps_strategy + < + Point, + typename point_type::type, + Strategy + >::type ps_strategy_type; + + return distance_single_to_multi + < + Point, MultiGeometry, ps_strategy_type, + point_tag, MultiGeometryTag, + strategy_tag_distance_point_segment + >::apply(point, multigeometry, ps_strategy_type()); + } +}; + + +template +< + typename Geometry, + typename MultiPoint, + typename GeometryTag, + typename Strategy +> +struct distance_single_to_multi + < + Geometry, MultiPoint, Strategy, + GeometryTag, multi_point_tag, + strategy_tag_distance_point_point + > +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(Geometry const& geometry, + MultiPoint const& multipoint, + Strategy const&) + { + typedef typename detail::distance::default_ps_strategy + < + typename point_type::type, + typename point_type::type, + Strategy + >::type ps_strategy_type; + + return distance_single_to_multi + < + Geometry, MultiPoint, ps_strategy_type, + GeometryTag, multi_point_tag, + strategy_tag_distance_point_segment + >::apply(geometry, multipoint, ps_strategy_type()); + } +}; + + +template +< + typename MultiPoint, + typename MultiGeometry, + typename MultiGeometryTag, + typename Strategy +> +struct distance_multi_to_multi + < + MultiPoint, MultiGeometry, Strategy, + multi_point_tag, MultiGeometryTag, + strategy_tag_distance_point_point + > +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(MultiPoint const& multipoint, + MultiGeometry const& multigeometry, + Strategy const&) + { + typedef typename detail::distance::default_ps_strategy + < + typename point_type::type, + typename point_type::type, + Strategy + >::type ps_strategy_type; + + return distance_multi_to_multi + < + MultiPoint, MultiGeometry, ps_strategy_type, + multi_point_tag, MultiGeometryTag, + strategy_tag_distance_point_segment + >::apply(multipoint, multigeometry, ps_strategy_type()); + } +}; + + +} // namespace splitted_dispatch + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_BACKWARD_COMPATIBILITY_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/box_to_box.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/box_to_box.hpp new file mode 100644 index 0000000000..57c908d38f --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/box_to_box.hpp @@ -0,0 +1,58 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_BOX_TO_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_BOX_TO_BOX_HPP + +#include +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct distance + < + Box1, Box2, Strategy, box_tag, box_tag, + strategy_tag_distance_box_box, false + > +{ + static inline typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type + apply(Box1 const& box1, Box2 const& box2, Strategy const& strategy) + { + boost::ignore_unused_variable_warning(strategy); + return strategy.apply(box1, box2); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_BOX_TO_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/default_strategies.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/default_strategies.hpp new file mode 100644 index 0000000000..3b79f82a36 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/default_strategies.hpp @@ -0,0 +1,143 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_DEFAULT_STRATEGIES_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_DEFAULT_STRATEGIES_HPP + +#include +#include +#include +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + + +// Helper metafunction for default strategy retrieval +template +< + typename Geometry1, + typename Geometry2 = Geometry1, + typename Tag1 = typename tag_cast + < + typename tag::type, pointlike_tag + >::type, + typename Tag2 = typename tag_cast + < + typename tag::type, pointlike_tag + >::type, + bool Reverse = geometry::reverse_dispatch::type::value +> +struct default_strategy + : strategy::distance::services::default_strategy + < + point_tag, segment_tag, + typename point_type::type, + typename point_type::type + > +{}; + +template +< + typename Geometry1, + typename Geometry2, + typename Tag1, + typename Tag2 +> +struct default_strategy + : default_strategy +{}; + + +template +struct default_strategy + < + Pointlike1, Pointlike2, + pointlike_tag, pointlike_tag, false + > : strategy::distance::services::default_strategy + < + point_tag, point_tag, + typename point_type::type, + typename point_type::type + > +{}; + + +template +struct default_strategy + : strategy::distance::services::default_strategy + < + point_tag, box_tag, + typename point_type::type, + typename point_type::type, + cartesian_tag, + cartesian_tag, + void + > +{}; + + +template +struct default_strategy + : strategy::distance::services::default_strategy + < + box_tag, box_tag, + typename point_type::type, + typename point_type::type, + cartesian_tag, + cartesian_tag, + void + > +{}; + + + +// Helper metafunction for default point-segment strategy retrieval +template +struct default_ps_strategy + : strategy::distance::services::default_strategy + < + point_tag, segment_tag, + typename point_type::type, + typename point_type::type, + typename cs_tag::type>::type, + typename cs_tag::type>::type, + Strategy + > +{}; + + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_DEFAULT_STRATEGIES_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/geometry_to_geometry_rtree.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/geometry_to_geometry_rtree.hpp new file mode 100644 index 0000000000..7ebb394665 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/geometry_to_geometry_rtree.hpp @@ -0,0 +1,383 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_GEOMETRY_TO_GEOMETRY_RTREE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_GEOMETRY_TO_GEOMETRY_RTREE_HPP + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + + +template +< + typename RTreePoint, + typename Geometry, + typename Strategy +> +class point_range_to_geometry_rtree +{ +private: + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, + RTreePoint, + typename point_type::type + >::type comparable_return_type; + + typedef index::rtree > r_tree; + + // functor to evaluate minimum comparable distance + struct minimum_comparable_distance_evaluator + { + r_tree const& m_r_tree; + comparable_strategy const& m_cstrategy; + bool m_first; + comparable_return_type m_min_cd; + + minimum_comparable_distance_evaluator + (r_tree const& r_tree, comparable_strategy const& cstrategy) + : m_r_tree(r_tree) + , m_cstrategy(cstrategy) + , m_first(true) + , m_min_cd() + {} + + template + inline void operator()(QueryGeometry const& query_geometry) + { + typename r_tree::value_type t_v; + std::size_t n = + m_r_tree.query(index::nearest(query_geometry, 1), &t_v); + + BOOST_ASSERT( n > 0 ); + + comparable_return_type cd = dispatch::distance + < + typename r_tree::value_type, + QueryGeometry, + comparable_strategy + >::apply(t_v, query_geometry, m_cstrategy); + + if ( m_first || cd < m_min_cd ) + { + m_first = false; + m_min_cd = cd; + } + } + }; + + + + // class to choose between for_each_point and for_each_segment + template ::type> + struct for_each_selector + { + typedef dispatch::for_each_segment type; + }; + + template + struct for_each_selector + { + typedef dispatch::for_each_point type; + }; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, + RTreePoint, + typename point_type::type + >::type return_type; + + template + static inline return_type apply(PointIterator points_first, + PointIterator points_beyond, + Geometry const& geometry, + Strategy const& strategy) + { + BOOST_ASSERT( points_first != points_beyond ); + + if ( geometry::has_one_element(points_first, points_beyond) ) + { + return dispatch::distance + < + typename std::iterator_traits::value_type, + Geometry, + Strategy + >::apply(*points_first, geometry, strategy); + } + + // create -- packing algorithm + r_tree rt(points_first, points_beyond); + + minimum_comparable_distance_evaluator + functor(rt, + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy)); + + for_each_selector::type::apply(geometry, functor); + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, RTreePoint, Geometry + >::apply(functor.m_min_cd); + } +}; + + + +template +< + typename Geometry1, + typename Geometry2, + typename Strategy +> +class geometry_to_geometry_rtree +{ + // the following works with linear geometries seen as ranges of points + // + // we compute the r-tree for the points of one range and then, + // compute nearest points for the segments of the other, + // ... and ... + // vice versa. + +private: + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, + typename point_type::type, + typename point_type::type + >::type comparable_return_type; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy, + bool check_intersection = true) + { + point_iterator first1 = points_begin(geometry1); + point_iterator beyond1 = points_end(geometry1); + point_iterator first2 = points_begin(geometry2); + point_iterator beyond2 = points_end(geometry2); + + if ( geometry::has_one_element(first1, beyond1) ) + { + return dispatch::distance + < + typename point_type::type, + Geometry2, + Strategy + >::apply(*first1, geometry2, strategy); + } + + if ( geometry::has_one_element(first2, beyond2) ) + { + return dispatch::distance + < + typename point_type::type, + Geometry1, + Strategy + >::apply(*first2, geometry1, strategy); + } + + if ( check_intersection && geometry::intersects(geometry1, geometry2) ) + { + return return_type(0); + } + + comparable_strategy cstrategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + + comparable_return_type cdist1 = point_range_to_geometry_rtree + < + typename point_type::type, + Geometry2, + comparable_strategy + >::apply(first1, beyond1, geometry2, cstrategy); + + comparable_return_type cdist2 = point_range_to_geometry_rtree + < + typename point_type::type, + Geometry1, + comparable_strategy + >::apply(first2, beyond2, geometry1, cstrategy); + + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, Geometry1, Geometry2 + >::apply( (std::min)(cdist1, cdist2) ); + } +}; + + + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct distance + < + Linestring1, Linestring2, Strategy, + linestring_tag, linestring_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::geometry_to_geometry_rtree + < + Linestring1, Linestring2, Strategy + > +{}; + + + +template +struct distance + < + Linestring, Polygon, Strategy, + linestring_tag, polygon_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::geometry_to_geometry_rtree + < + Linestring, Polygon, Strategy + > +{}; + + + +template +struct distance + < + Linestring, Ring, Strategy, + linestring_tag, ring_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::geometry_to_geometry_rtree + < + Linestring, Ring, Strategy + > +{}; + + + +template +struct distance + < + Polygon1, Polygon2, Strategy, + polygon_tag, polygon_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::geometry_to_geometry_rtree + < + Polygon1, Polygon2, Strategy + > +{}; + + + +template +struct distance + < + Polygon, Ring, Strategy, + polygon_tag, ring_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::geometry_to_geometry_rtree + < + Polygon, Ring, Strategy + > +{}; + + + +template +struct distance + < + Ring1, Ring2, Strategy, + ring_tag, ring_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::geometry_to_geometry_rtree + < + Ring1, Ring2, Strategy + > +{}; + + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_GEOMETRY_TO_GEOMETRY_RTREE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/implementation.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/implementation.hpp new file mode 100644 index 0000000000..45f40bbb33 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/implementation.hpp @@ -0,0 +1,38 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_IMPLEMENTATION_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_IMPLEMENTATION_HPP + +// the implementation details +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_IMPLEMENTATION_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/interface.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/interface.hpp new file mode 100644 index 0000000000..9b377f524b --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/interface.hpp @@ -0,0 +1,403 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. +// Copyright (c) 2014 Samuel Debionne, Grenoble, France. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_INTERFACE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_INTERFACE_HPP + +#include + +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// If reversal is needed, perform it +template +< + typename Geometry1, typename Geometry2, typename Strategy, + typename Tag1, typename Tag2, typename StrategyTag +> +struct distance +< + Geometry1, Geometry2, Strategy, + Tag1, Tag2, StrategyTag, + true +> + : distance +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply( + Geometry1 const& g1, + Geometry2 const& g2, + Strategy const& strategy) + { + return distance + < + Geometry2, Geometry1, Strategy, + Tag2, Tag1, StrategyTag, + false + >::apply(g2, g1, strategy); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +namespace resolve_strategy +{ + +struct distance +{ + template + static inline typename distance_result::type + apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + return dispatch::distance + < + Geometry1, Geometry2, Strategy + >::apply(geometry1, geometry2, strategy); + } + + template + static inline + typename distance_result::type + apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + default_strategy) + { + typedef typename detail::distance::default_strategy + < + Geometry1, Geometry2 + >::type strategy_type; + + return dispatch::distance + < + Geometry1, Geometry2, strategy_type + >::apply(geometry1, geometry2, strategy_type()); + } +}; + +} // namespace resolve_strategy + + +namespace resolve_variant +{ + + +template +struct distance +{ + template + static inline typename distance_result::type + apply(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + return + resolve_strategy::distance::apply(geometry1, geometry2, strategy); + } +}; + + +template +struct distance, Geometry2> +{ + template + struct visitor: static_visitor + < + typename distance_result + < + variant, + Geometry2, + Strategy + >::type + > + { + Geometry2 const& m_geometry2; + Strategy const& m_strategy; + + visitor(Geometry2 const& geometry2, + Strategy const& strategy) + : m_geometry2(geometry2), + m_strategy(strategy) + {} + + template + typename distance_result::type + operator()(Geometry1 const& geometry1) const + { + return distance + < + Geometry1, + Geometry2 + >::template apply + < + Strategy + >(geometry1, m_geometry2, m_strategy); + } + }; + + template + static inline typename distance_result + < + variant, + Geometry2, + Strategy + >::type + apply(variant const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) + { + return apply_visitor(visitor(geometry2, strategy), geometry1); + } +}; + + +template +struct distance > +{ + template + struct visitor: static_visitor + < + typename distance_result + < + Geometry1, + variant, + Strategy + >::type + > + { + Geometry1 const& m_geometry1; + Strategy const& m_strategy; + + visitor(Geometry1 const& geometry1, + Strategy const& strategy) + : m_geometry1(geometry1), + m_strategy(strategy) + {} + + template + typename distance_result::type + operator()(Geometry2 const& geometry2) const + { + return distance + < + Geometry1, + Geometry2 + >::template apply + < + Strategy + >(m_geometry1, geometry2, m_strategy); + } + }; + + template + static inline typename distance_result + < + Geometry1, + variant, + Strategy + >::type + apply( + Geometry1 const& geometry1, + const variant& geometry2, + Strategy const& strategy) + { + return apply_visitor(visitor(geometry1, strategy), geometry2); + } +}; + + +template +< + BOOST_VARIANT_ENUM_PARAMS(typename A), + BOOST_VARIANT_ENUM_PARAMS(typename B) +> +struct distance + < + boost::variant, + boost::variant + > +{ + template + struct visitor: static_visitor + < + typename distance_result + < + boost::variant, + boost::variant, + Strategy + >::type + > + { + Strategy const& m_strategy; + + visitor(Strategy const& strategy) + : m_strategy(strategy) + {} + + template + typename distance_result::type + operator()(Geometry1 const& geometry1, Geometry2 const& geometry2) const + { + return distance + < + Geometry1, + Geometry2 + >::template apply + < + Strategy + >(geometry1, geometry2, m_strategy); + } + }; + + template + static inline typename distance_result + < + boost::variant, + boost::variant, + Strategy + >::type + apply(boost::variant const& geometry1, + boost::variant const& geometry2, + Strategy const& strategy) + { + return apply_visitor(visitor(strategy), geometry1, geometry2); + } +}; + +} // namespace resolve_variant + + +/*! +\brief \brief_calc2{distance} \brief_strategy +\ingroup distance +\details +\details \details_calc{area}. \brief_strategy. \details_strategy_reasons + +\tparam Geometry1 \tparam_geometry +\tparam Geometry2 \tparam_geometry +\tparam Strategy \tparam_strategy{Distance} +\param geometry1 \param_geometry +\param geometry2 \param_geometry +\param strategy \param_strategy{distance} +\return \return_calc{distance} +\note The strategy can be a point-point strategy. In case of distance point-line/point-polygon + it may also be a point-segment strategy. + +\qbk{distinguish,with strategy} + +\qbk{ +[heading Available Strategies] +\* [link geometry.reference.strategies.strategy_distance_pythagoras Pythagoras (cartesian)] +\* [link geometry.reference.strategies.strategy_distance_haversine Haversine (spherical)] +\* [link geometry.reference.strategies.strategy_distance_cross_track Cross track (spherical\, point-to-segment)] +\* [link geometry.reference.strategies.strategy_distance_projected_point Projected point (cartesian\, point-to-segment)] +\* more (currently extensions): Vincenty\, Andoyer (geographic) +} + */ + +/* +Note, in case of a Compilation Error: +if you get: + - "Failed to specialize function template ..." + - "error: no matching function for call to ..." +for distance, it is probably so that there is no specialization +for return_type<...> for your strategy. +*/ +template +inline typename distance_result::type +distance(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Strategy const& strategy) +{ + concept::check(); + concept::check(); + + detail::throw_on_empty_input(geometry1); + detail::throw_on_empty_input(geometry2); + + return resolve_variant::distance + < + Geometry1, + Geometry2 + >::apply(geometry1, geometry2, strategy); +} + + +/*! +\brief \brief_calc2{distance} +\ingroup distance +\details The default strategy is used, corresponding to the coordinate system of the geometries +\tparam Geometry1 \tparam_geometry +\tparam Geometry2 \tparam_geometry +\param geometry1 \param_geometry +\param geometry2 \param_geometry +\return \return_calc{distance} + +\qbk{[include reference/algorithms/distance.qbk]} + */ +template +inline typename default_distance_result::type +distance(Geometry1 const& geometry1, + Geometry2 const& geometry2) +{ + concept::check(); + concept::check(); + + return distance(geometry1, geometry2, default_strategy()); +} + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_INTERFACE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/multi_to_multi.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/multi_to_multi.hpp new file mode 100644 index 0000000000..0d541cc3af --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/multi_to_multi.hpp @@ -0,0 +1,256 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_MULTI_TO_MULTI_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_MULTI_TO_MULTI_HPP + +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include + +#include + +#include +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + + +template +class distance_multi_to_multi_generic +{ +private: + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, + typename point_type::type, + typename point_type::type + >::type comparable_return_type; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(Multi1 const& multi1, + Multi2 const& multi2, Strategy const& strategy) + { + comparable_return_type min_cdist = comparable_return_type(); + bool first = true; + + comparable_strategy cstrategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + + for(typename range_iterator::type it = boost::begin(multi1); + it != boost::end(multi1); + ++it, first = false) + { + comparable_return_type cdist = + dispatch::splitted_dispatch::distance_single_to_multi + < + typename range_value::type, + Multi2, + comparable_strategy, + typename tag::type>::type, + typename tag::type, + typename strategy::distance::services::tag + < + comparable_strategy + >::type + >::apply(*it, multi2, cstrategy); + if (first || cdist < min_cdist) + { + min_cdist = cdist; + if ( geometry::math::equals(min_cdist, 0) ) + { + break; + } + } + } + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, + Strategy, + Multi1, + Multi2 + >::apply(min_cdist); + } +}; + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +namespace splitted_dispatch +{ + + +template +< + typename MultiGeometry1, + typename MultiGeometry2, + typename Strategy, + typename Tag1, + typename Tag2, + typename StrategyTag +> +struct distance_multi_to_multi + : not_implemented +{}; + + + +template +< + typename MultiPoint, + typename MultiPolygon, + typename Strategy +> +struct distance_multi_to_multi + < + MultiPoint, MultiPolygon, Strategy, + multi_point_tag, multi_polygon_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_multi_to_multi_generic + < + MultiPoint, MultiPolygon, Strategy + > +{}; + + + +template +< + typename MultiLinestring1, + typename MultiLinestring2, + typename Strategy +> +struct distance_multi_to_multi + < + MultiLinestring1, MultiLinestring2, Strategy, + multi_linestring_tag, multi_linestring_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + MultiLinestring1, MultiLinestring2, Strategy + > +{}; + + +template +< + typename MultiLinestring, + typename MultiPolygon, + typename Strategy +> +struct distance_multi_to_multi + < + MultiLinestring, MultiPolygon, Strategy, + multi_linestring_tag, multi_polygon_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + MultiLinestring, MultiPolygon, Strategy + > +{}; + + +template +struct distance_multi_to_multi + < + MultiPolygon1, MultiPolygon2, Strategy, + multi_polygon_tag, multi_polygon_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + MultiPolygon1, MultiPolygon2, Strategy + > +{}; + + +} // namespace splitted_dispatch + + + + +template +< + typename MultiGeometry1, + typename MultiGeometry2, + typename Strategy, + typename StrategyTag +> +struct distance + < + MultiGeometry1, MultiGeometry2, Strategy, multi_tag, multi_tag, + StrategyTag, false + > : splitted_dispatch::distance_multi_to_multi + < + MultiGeometry1, MultiGeometry2, Strategy, + typename geometry::tag::type, + typename geometry::tag::type, + StrategyTag + > +{}; + + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_MULTI_TO_MULTI_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/multipoint_to_range.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/multipoint_to_range.hpp new file mode 100644 index 0000000000..1774fab72e --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/multipoint_to_range.hpp @@ -0,0 +1,183 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_MULTIPOINT_TO_RANGE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_MULTIPOINT_TO_RANGE_HPP + +#include + +#include +#include + +#include + +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + +template +struct multipoint_to_multipoint +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(MultiPoint1 const& multipoint1, + MultiPoint2 const& multipoint2, + Strategy const& strategy) + { + if ( boost::size(multipoint1) > boost::size(multipoint2) ) + + { + return multipoint_to_multipoint + < + MultiPoint2, MultiPoint1, Strategy + >::apply(multipoint2, multipoint1, strategy); + } + + return point_range_to_geometry_rtree + < + typename point_type::type, + MultiPoint2, + Strategy + >::apply(points_begin(multipoint1), points_end(multipoint1), + multipoint2, strategy); + } +}; + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +namespace splitted_dispatch +{ + +// specializations of distance_single_to_multi for various geometry combinations + +template +struct distance_single_to_multi + < + Linestring, MultiPoint, Strategy, + linestring_tag, multi_point_tag, + strategy_tag_distance_point_segment + > +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(Linestring const& linestring, + MultiPoint const& multipoint, + Strategy const& strategy) + { + return detail::distance::point_range_to_geometry_rtree + < + typename point_type::type, + Linestring, + Strategy + >::apply(geometry::points_begin(multipoint), + geometry::points_end(multipoint), + linestring, strategy); + + } +}; + + + + +// specializations of distance_multi_to_multi for various geometry combinations + + +template +struct distance_multi_to_multi + < + MultiPoint1, MultiPoint2, Strategy, + multi_point_tag, multi_point_tag, + strategy_tag_distance_point_point + > : detail::distance::multipoint_to_multipoint + < + MultiPoint1, MultiPoint2, Strategy + > +{}; + + + +template +< + typename MultiPoint, + typename MultiLinestring, + typename Strategy +> +struct distance_multi_to_multi + < + MultiPoint, MultiLinestring, Strategy, + multi_point_tag, multi_linestring_tag, + strategy_tag_distance_point_segment + > +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(MultiPoint const& multipoint, + MultiLinestring const& multilinestring, + Strategy const& strategy) + { + return detail::distance::point_range_to_geometry_rtree + < + typename point_type::type, + MultiLinestring, + Strategy + >::apply(geometry::points_begin(multipoint), + geometry::points_end(multipoint), + multilinestring, strategy); + + } +}; + +} // namespace splitted_dispatch + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_MULTI_ALGORITHMS_DISTANCE_ALTERNATE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/point_to_geometry.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/point_to_geometry.hpp new file mode 100644 index 0000000000..a46f1fe7d1 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/point_to_geometry.hpp @@ -0,0 +1,442 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_POINT_TO_GEOMETRY_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_POINT_TO_GEOMETRY_HPP + +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + +template +struct point_to_point +{ + static inline + typename strategy::distance::services::return_type::type + apply(P1 const& p1, P2 const& p2, Strategy const& strategy) + { + boost::ignore_unused_variable_warning(strategy); + return strategy.apply(p1, p2); + } +}; + + +template +< + typename Point, + typename Range, + closure_selector Closure, + typename Strategy +> +class point_to_range +{ +private: + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, + Point, + typename boost::range_value::type + >::type comparable_return_type; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, + Point, + typename boost::range_value::type + >::type return_type; + + static inline return_type apply(Point const& point, Range const& range, + Strategy const& strategy) + { + comparable_strategy c_strategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + + comparable_return_type const zero = comparable_return_type(0); + + if (boost::size(range) == 0) + { + return zero; + } + + typedef typename closeable_view::type view_type; + + view_type view(range); + + // line of one point: return point distance + typedef typename boost::range_iterator::type iterator_type; + iterator_type it = boost::begin(view); + iterator_type prev = it++; + if (it == boost::end(view)) + { + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, Point, + typename boost::range_value::type + >::apply( c_strategy.apply(point, + *boost::begin(view), + *boost::begin(view)) ); + } + + // start with first segment distance + comparable_return_type cd = c_strategy.apply(point, *prev, *it); + + // check if other segments are closer + for (++prev, ++it; it != boost::end(view); ++prev, ++it) + { + comparable_return_type cds = c_strategy.apply(point, *prev, *it); + if (geometry::math::equals(cds, zero)) + { + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, + Strategy, + Point, + typename boost::range_value::type + >::apply(zero); + } + else if (cds < cd) + { + cd = cds; + } + } + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, + Strategy, + Point, + typename boost::range_value::type + >::apply(cd); + } +}; + + +template +< + typename Point, + typename Ring, + closure_selector Closure, + typename Strategy +> +struct point_to_ring +{ + typedef std::pair + < + typename strategy::distance::services::return_type + < + Strategy, Point, typename point_type::type + >::type, + bool + > distance_containment; + + static inline distance_containment apply(Point const& point, + Ring const& ring, + Strategy const& strategy) + { + return distance_containment + ( + point_to_range + < + Point, + Ring, + Closure, + Strategy + >::apply(point, ring, strategy), + geometry::within(point, ring) + ); + } +}; + + + +template +< + typename Point, + typename Polygon, + closure_selector Closure, + typename Strategy +> +class point_to_polygon +{ +private: + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, Point, typename point_type::type + >::type comparable_return_type; + + typedef std::pair + < + comparable_return_type, bool + > comparable_distance_containment; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, Point, typename point_type::type + >::type return_type; + typedef std::pair distance_containment; + + static inline distance_containment apply(Point const& point, + Polygon const& polygon, + Strategy const& strategy) + { + comparable_strategy c_strategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + + // Check distance to all rings + typedef point_to_ring + < + Point, + typename ring_type::type, + Closure, + comparable_strategy + > per_ring; + + comparable_distance_containment dc = + per_ring::apply(point, exterior_ring(polygon), c_strategy); + + typename interior_return_type::type rings + = interior_rings(polygon); + for (typename boost::range_iterator + < + typename interior_type::type const + >::type it = boost::begin(rings); + it != boost::end(rings); ++it) + { + comparable_distance_containment dcr = + per_ring::apply(point, *it, c_strategy); + if (dcr.first < dc.first) + { + dc.first = dcr.first; + } + // If it was inside, and also inside inner ring, + // turn off the inside-flag, it is outside the polygon + if (dc.second && dcr.second) + { + dc.second = false; + } + } + + return_type rd = strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, Point, Polygon + >::apply(dc.first); + + return std::make_pair(rd, dc.second); + } +}; + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// Point-point +template +struct distance + < + P1, P2, Strategy, + point_tag, point_tag, strategy_tag_distance_point_point, + false + > + : detail::distance::point_to_point +{}; + + +// Point-line version 2, where point-segment strategy is specified +template +struct distance +< + Point, Linestring, Strategy, + point_tag, linestring_tag, strategy_tag_distance_point_segment, + false +> : detail::distance::point_to_range +{}; + + +// Point-ring , where point-segment strategy is specified +template +struct distance +< + Point, Ring, Strategy, + point_tag, ring_tag, strategy_tag_distance_point_segment, + false +> +{ + typedef typename strategy::distance::services::return_type + < + Strategy, Point, typename point_type::type + >::type return_type; + + static inline return_type apply(Point const& point, + Ring const& ring, + Strategy const& strategy) + { + std::pair + dc = detail::distance::point_to_ring + < + Point, Ring, + geometry::closure::value, + Strategy + >::apply(point, ring, strategy); + + return dc.second ? return_type(0) : dc.first; + } +}; + + +// Point-polygon , where point-segment strategy is specified +template +struct distance +< + Point, Polygon, Strategy, point_tag, polygon_tag, + strategy_tag_distance_point_segment, false +> +{ + typedef typename strategy::distance::services::return_type + < + Strategy, Point, typename point_type::type + >::type return_type; + + static inline return_type apply(Point const& point, + Polygon const& polygon, + Strategy const& strategy) + { + std::pair + dc = detail::distance::point_to_polygon + < + Point, Polygon, + geometry::closure::value, + Strategy + >::apply(point, polygon, strategy); + + return dc.second ? return_type(0) : dc.first; + } +}; + + +// Point-segment version 2, with point-segment strategy +template +struct distance +< + Point, Segment, Strategy, + point_tag, segment_tag, strategy_tag_distance_point_segment, + false +> +{ + static inline typename return_type::type>::type + apply(Point const& point, + Segment const& segment, + Strategy const& strategy) + { + typename point_type::type p[2]; + geometry::detail::assign_point_from_index<0>(segment, p[0]); + geometry::detail::assign_point_from_index<1>(segment, p[1]); + + boost::ignore_unused_variable_warning(strategy); + return strategy.apply(point, p[0], p[1]); + } +}; + + + +template +struct distance + < + Point, Box, Strategy, point_tag, box_tag, + strategy_tag_distance_point_box, false + > +{ + static inline typename strategy::distance::services::return_type + < + Strategy, Point, typename point_type::type + >::type + apply(Point const& point, Box const& box, Strategy const& strategy) + { + boost::ignore_unused_variable_warning(strategy); + return strategy.apply(point, box); + } +}; + + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_POINT_TO_GEOMETRY_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/polygon_to_segment_or_box.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/polygon_to_segment_or_box.hpp new file mode 100644 index 0000000000..631cb25d37 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/polygon_to_segment_or_box.hpp @@ -0,0 +1,160 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_POLYGON_TO_SEGMENT_OR_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_POLYGON_TO_SEGMENT_OR_BOX_HPP + +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include + +#include +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + +template +class polygon_to_segment_or_box +{ +private: + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, + typename point_type::type, + typename point_type::type + >::type comparable_return_type; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(Polygon const& polygon, + SegmentOrBox const& segment_or_box, + Strategy const& strategy) + { + typedef typename geometry::ring_type::type e_ring; + typedef typename geometry::interior_type::type i_rings; + typedef typename range_value::type i_ring; + + if ( geometry::intersects(polygon, segment_or_box) ) + { + return 0; + } + + e_ring const& ext_ring = geometry::exterior_ring(polygon); + i_rings const& int_rings = geometry::interior_rings(polygon); + + comparable_strategy cstrategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + + + comparable_return_type cd_min = range_to_segment_or_box + < + e_ring, SegmentOrBox, comparable_strategy + >::apply(ext_ring, segment_or_box, cstrategy, false); + + typedef typename boost::range_iterator::type iterator_type; + for (iterator_type it = boost::begin(int_rings); + it != boost::end(int_rings); ++it) + { + comparable_return_type cd = range_to_segment_or_box + < + i_ring, SegmentOrBox, comparable_strategy + >::apply(*it, segment_or_box, cstrategy, false); + + if ( cd < cd_min ) + { + cd_min = cd; + } + } + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, + Strategy, + Polygon, + SegmentOrBox + >::apply(cd_min); + } +}; + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DETAIL +namespace dispatch +{ + + +template +struct distance + < + Polygon, Segment, Strategy, polygon_tag, segment_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::polygon_to_segment_or_box +{}; + + + +template +struct distance + < + Polygon, Box, Strategy, polygon_tag, box_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::polygon_to_segment_or_box +{}; + + + +} // namespace dispatch +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_POLYGON_TO_SEGMENT_OR_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/range_to_segment_or_box.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/range_to_segment_or_box.hpp new file mode 100644 index 0000000000..8d02e1cce0 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/range_to_segment_or_box.hpp @@ -0,0 +1,333 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_RANGE_TO_SEGMENT_OR_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_RANGE_TO_SEGMENT_OR_BOX_HPP + +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + + +template +< + typename Range, + typename SegmentOrBox, + typename Strategy +> +class range_to_segment_or_box +{ +private: + typedef typename point_type::type segment_or_box_point; + typedef typename point_type::type range_point; + + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, range_point, segment_or_box_point + >::type comparable_return_type; + + typedef typename strategy::distance::services::tag + < + comparable_strategy + >::type comparable_strategy_tag; + + typedef dispatch::distance + < + segment_or_box_point, Range, comparable_strategy, + point_tag, typename tag::type, + comparable_strategy_tag, false + > comparable_point_to_range; + + // compute distance of a point to a segment or a box + template + < + typename Point, + typename SegOrBoxPoints, + typename ComparableStrategy, + typename Tag + > + struct comparable_distance_point_to_segment_or_box + {}; + + template + < + typename Point, + typename SegmentPoints, + typename ComparableStrategy + > + struct comparable_distance_point_to_segment_or_box + < + Point, SegmentPoints, ComparableStrategy, segment_tag + > + { + static inline + comparable_return_type apply(Point const& point, + SegmentPoints const& segment_points, + ComparableStrategy const& strategy) + { + boost::ignore_unused_variable_warning(strategy); + return strategy.apply(point, segment_points[0], segment_points[1]); + } + }; + + template + < + typename Point, + typename BoxPoints, + typename ComparableStrategy + > + struct comparable_distance_point_to_segment_or_box + < + Point, BoxPoints, ComparableStrategy, box_tag + > + { + static inline + comparable_return_type apply(Point const& point, + BoxPoints const& box_points, + ComparableStrategy const& strategy) + { + return point_to_range + < + Point, BoxPoints, open, ComparableStrategy + >::apply(point, box_points, strategy); + } + }; + + + // assign the points of a segment or a box to a range + template + < + typename SegOrBox, + typename PointRange, + typename Tag = typename tag::type + > + struct assign_segment_or_box_points + {}; + + + template + struct assign_segment_or_box_points + { + static inline void apply(Segment const& segment, PointRange& range) + { + detail::assign_point_from_index<0>(segment, range[0]); + detail::assign_point_from_index<1>(segment, range[1]); + } + }; + + template + struct assign_segment_or_box_points + { + static inline void apply(Box const& box, PointRange& range) + { + detail::assign_box_corners_oriented(box, range); + } + }; + + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, range_point, segment_or_box_point + >::type return_type; + + static inline return_type + apply(Range const& range, SegmentOrBox const& segment_or_box, + Strategy const& strategy, bool check_intersection = true) + { + if ( check_intersection && geometry::intersects(range, segment_or_box) ) + { + return 0; + } + + comparable_strategy cstrategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + + + // get all points of the segment or the box + std::vector + segment_or_box_points(geometry::num_points(segment_or_box)); + + assign_segment_or_box_points + < + + SegmentOrBox, + std::vector + >::apply(segment_or_box, segment_or_box_points); + + // consider all distances from each endpoint of the segment or box + // to the range + typename std::vector::const_iterator it + = segment_or_box_points.begin(); + comparable_return_type cd_min = + comparable_point_to_range::apply(*it, range, cstrategy); + + for (++it; it != segment_or_box_points.end(); ++it) + { + comparable_return_type cd = + comparable_point_to_range::apply(*it, range, cstrategy); + if ( cd < cd_min ) + { + cd_min = cd; + } + } + + // consider all distances of the points in the range to the + // segment or box + typedef typename range_iterator::type iterator_type; + for (iterator_type it = boost::begin(range); it != boost::end(range); ++it) + { + comparable_return_type cd = + comparable_distance_point_to_segment_or_box + < + typename point_type::type, + std::vector, + comparable_strategy, + typename tag::type + >::apply(*it, segment_or_box_points, cstrategy); + + if ( cd < cd_min ) + { + cd_min = cd; + } + } + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, + range_point, segment_or_box_point + >::apply(cd_min); + } + + static inline return_type + apply(SegmentOrBox const& segment_or_box, Range const& range, + Strategy const& strategy, bool check_intersection = true) + { + return apply(range, segment_or_box, strategy, check_intersection); + } +}; + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + + +template +struct distance + < + Linestring, Segment, Strategy, linestring_tag, segment_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::range_to_segment_or_box + < + Linestring, Segment, Strategy + > +{}; + + + + +template +struct distance + < + Segment, Ring, Strategy, segment_tag, ring_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::range_to_segment_or_box + < + Ring, Segment, Strategy + > +{}; + + + + +template +struct distance + < + Linestring, Box, Strategy, linestring_tag, box_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::range_to_segment_or_box + < + Linestring, Box, Strategy + > +{}; + + + + +template +struct distance + < + Ring, Box, Strategy, ring_tag, box_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::range_to_segment_or_box + < + Ring, Box, Strategy + > +{}; + + + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_RANGE_TO_SEGMENT_OR_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/segment_to_box.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/segment_to_box.hpp new file mode 100644 index 0000000000..695f3a2bec --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/segment_to_box.hpp @@ -0,0 +1,814 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SEGMENT_TO_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SEGMENT_TO_BOX_HPP + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include + + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + +template +< + typename Segment, + typename Box, + typename Strategy, + bool UsePointBoxStrategy = false +> +class segment_to_box_2D_generic +{ +private: + typedef typename point_type::type segment_point; + typedef typename point_type::type box_point; + + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, segment_point, box_point + >::type comparable_return_type; + + typedef point_to_range + < + segment_point, std::vector, open, comparable_strategy + > point_to_box_boundary; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, segment_point, box_point + >::type return_type; + + static inline return_type apply(Segment const& segment, + Box const& box, + Strategy const& strategy, + bool check_intersection = true) + { + if ( check_intersection && geometry::intersects(segment, box) ) + { + return 0; + } + + comparable_strategy cstrategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + boost::ignore_unused_variable_warning(cstrategy); + + // get segment points + segment_point p[2]; + detail::assign_point_from_index<0>(segment, p[0]); + detail::assign_point_from_index<1>(segment, p[1]); + + // get box points + std::vector box_points(4); + detail::assign_box_corners_oriented(box, box_points); + + comparable_return_type cd[6]; + for (unsigned int i = 0; i < 4; ++i) + { + cd[i] = cstrategy.apply(box_points[i], p[0], p[1]); + } + cd[4] = point_to_box_boundary::apply(p[0], box_points, cstrategy); + cd[5] = point_to_box_boundary::apply(p[1], box_points, cstrategy); + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, Segment, Box + >::apply( *std::min_element(cd, cd + 6) ); + } +}; + + +template +< + typename Segment, + typename Box, + typename Strategy +> +class segment_to_box_2D_generic +{ +private: + typedef typename point_type::type segment_point; + typedef typename point_type::type box_point; + + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, segment_point, box_point + >::type comparable_return_type; + + typedef typename strategy::distance::services::comparable_type + < + typename detail::distance::default_strategy + < + segment_point, Box + >::type + >::type point_box_comparable_strategy; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, segment_point, box_point + >::type return_type; + + static inline return_type apply(Segment const& segment, + Box const& box, + Strategy const& strategy, + bool check_intersection = true) + { + if ( check_intersection && geometry::intersects(segment, box) ) + { + return 0; + } + + comparable_strategy cstrategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + boost::ignore_unused_variable_warning(cstrategy); + + // get segment points + segment_point p[2]; + detail::assign_point_from_index<0>(segment, p[0]); + detail::assign_point_from_index<1>(segment, p[1]); + + // get box points + std::vector box_points(4); + detail::assign_box_corners_oriented(box, box_points); + + comparable_return_type cd[6]; + for (unsigned int i = 0; i < 4; ++i) + { + cd[i] = cstrategy.apply(box_points[i], p[0], p[1]); + } + + point_box_comparable_strategy pb_cstrategy; + boost::ignore_unused_variable_warning(pb_cstrategy); + cd[4] = pb_cstrategy.apply(p[0], box); + cd[5] = pb_cstrategy.apply(p[1], box); + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, Segment, Box + >::apply( *std::min_element(cd, cd + 6) ); + } +}; + + + + +template +< + typename ReturnType, + typename SegmentPoint, + typename BoxPoint, + typename PPStrategy, + typename PSStrategy +> +class segment_to_box_2D +{ +private: + template + struct cast_to_result + { + template + static inline Result apply(T const& t) + { + return boost::numeric_cast(t); + } + }; + + + template + struct compare_less_equal + { + typedef compare_less_equal other; + + template + inline bool operator()(T1 const& t1, T2 const& t2) const + { + return std::less_equal()(cast_to_result::apply(t1), + cast_to_result::apply(t2)); + } + }; + + template + struct compare_less_equal + { + typedef compare_less_equal other; + + template + inline bool operator()(T1 const& t1, T2 const& t2) const + { + return std::greater_equal()(cast_to_result::apply(t1), + cast_to_result::apply(t2)); + } + }; + + + template + struct other_compare + { + typedef typename LessEqual::other type; + }; + + + // it is assumed here that p0 lies to the right of the box (so the + // entire segment lies to the right of the box) + template + struct right_of_box + { + static inline ReturnType apply(SegmentPoint const& p0, + SegmentPoint const& p1, + BoxPoint const& bottom_right, + BoxPoint const& top_right, + PPStrategy const& pp_strategy, + PSStrategy const& ps_strategy) + { + // the implementation below is written for non-negative slope + // segments + // + // for negative slope segments swap the roles of bottom_right + // and top_right and use greater_equal instead of less_equal. + + typedef cast_to_result cast; + + LessEqual less_equal; + + if ( less_equal(geometry::get<1>(top_right), geometry::get<1>(p0)) ) + { + // closest box point is the top-right corner + return cast::apply(pp_strategy.apply(p0, top_right)); + } + else if ( less_equal(geometry::get<1>(bottom_right), + geometry::get<1>(p0)) ) + { + // distance is realized between p0 and right-most + // segment of box + ReturnType diff = cast::apply(geometry::get<0>(p0)) + - cast::apply(geometry::get<0>(bottom_right)); + return diff * diff; + } + else + { + // distance is realized between the bottom-right + // corner of the box and the segment + return cast::apply(ps_strategy.apply(bottom_right, p0, p1)); + } + } + }; + + + // it is assumed here that p0 lies above the box (so the + // entire segment lies above the box) + template + struct above_of_box + { + static inline ReturnType apply(SegmentPoint const& p0, + SegmentPoint const& p1, + BoxPoint const& top_left, + PSStrategy const& ps_strategy) + { + // the segment lies above the box + + typedef cast_to_result cast; + + LessEqual less_equal; + + // p0 is above the upper segment of the box + // (and inside its band) + if ( less_equal(geometry::get<0>(top_left), geometry::get<0>(p0)) ) + { + ReturnType diff = cast::apply(geometry::get<1>(p0)) + - cast::apply(geometry::get<1>(top_left)); + return diff * diff; + } + + // p0 is to the left of the box, but p1 is above the box + // in this case the distance is realized between the + // top-left corner of the box and the segment + return cast::apply(ps_strategy.apply(top_left, p0, p1)); + } + }; + + + template + struct check_right_left_of_box + { + static inline bool apply(SegmentPoint const& p0, + SegmentPoint const& p1, + BoxPoint const& top_left, + BoxPoint const& top_right, + BoxPoint const& bottom_left, + BoxPoint const& bottom_right, + PPStrategy const& pp_strategy, + PSStrategy const& ps_strategy, + ReturnType& result) + { + // p0 lies to the right of the box + if ( geometry::get<0>(p0) >= geometry::get<0>(top_right) ) + { + result = right_of_box + < + LessEqual + >::apply(p0, p1, bottom_right, top_right, + pp_strategy, ps_strategy); + return true; + } + + // p1 lies to the left of the box + if ( geometry::get<0>(p1) <= geometry::get<0>(bottom_left) ) + { + result = right_of_box + < + typename other_compare::type + >::apply(p1, p0, top_left, bottom_left, + pp_strategy, ps_strategy); + return true; + } + + return false; + } + }; + + + template + struct check_above_below_of_box + { + static inline bool apply(SegmentPoint const& p0, + SegmentPoint const& p1, + BoxPoint const& top_left, + BoxPoint const& top_right, + BoxPoint const& bottom_left, + BoxPoint const& bottom_right, + PSStrategy const& ps_strategy, + ReturnType& result) + { + // the segment lies below the box + if ( geometry::get<1>(p1) < geometry::get<1>(bottom_left) ) + { + result = above_of_box + < + typename other_compare::type + >::apply(p1, p0, bottom_right, ps_strategy); + return true; + } + + // the segment lies above the box + if ( geometry::get<1>(p0) > geometry::get<1>(top_right) ) + { + result = above_of_box + < + LessEqual + >::apply(p0, p1, top_left, ps_strategy); + return true; + } + return false; + } + }; + + struct check_generic_position + { + static inline bool apply(SegmentPoint const& p0, + SegmentPoint const& p1, + BoxPoint const& bottom_left0, + BoxPoint const& top_right0, + BoxPoint const& bottom_left1, + BoxPoint const& top_right1, + BoxPoint const& corner1, + BoxPoint const& corner2, + PSStrategy const& ps_strategy, + ReturnType& result) + { + typedef cast_to_result cast; + + ReturnType diff0 = cast::apply(geometry::get<0>(p1)) + - cast::apply(geometry::get<0>(p0)); + ReturnType t_min0 = cast::apply(geometry::get<0>(bottom_left0)) + - cast::apply(geometry::get<0>(p0)); + ReturnType t_max0 = cast::apply(geometry::get<0>(top_right0)) + - cast::apply(geometry::get<0>(p0)); + + ReturnType diff1 = cast::apply(geometry::get<1>(p1)) + - cast::apply(geometry::get<1>(p0)); + ReturnType t_min1 = cast::apply(geometry::get<1>(bottom_left1)) + - cast::apply(geometry::get<1>(p0)); + ReturnType t_max1 = cast::apply(geometry::get<1>(top_right1)) + - cast::apply(geometry::get<1>(p0)); + + if ( diff1 < 0 ) + { + diff1 = -diff1; + t_min1 = -t_min1; + t_max1 = -t_max1; + } + + // t_min0 > t_max1 + if ( t_min0 * diff1 > t_max1 * diff0 ) + { + result = cast::apply(ps_strategy.apply(corner1, p0, p1)); + return true; + } + + // t_max0 < t_min1 + if ( t_max0 * diff1 < t_min1 * diff0 ) + { + result = cast::apply(ps_strategy.apply(corner2, p0, p1)); + return true; + } + return false; + } + }; + + static inline ReturnType + non_negative_slope_segment(SegmentPoint const& p0, + SegmentPoint const& p1, + BoxPoint const& top_left, + BoxPoint const& top_right, + BoxPoint const& bottom_left, + BoxPoint const& bottom_right, + PPStrategy const& pp_strategy, + PSStrategy const& ps_strategy) + { + typedef compare_less_equal less_equal; + + // assert that the segment has non-negative slope + BOOST_ASSERT( ( math::equals(geometry::get<0>(p0), geometry::get<0>(p1)) + && geometry::get<1>(p0) < geometry::get<1>(p1)) + || + ( geometry::get<0>(p0) < geometry::get<0>(p1) + && geometry::get<1>(p0) <= geometry::get<1>(p1) ) + ); + + ReturnType result(0); + + if ( check_right_left_of_box + < + less_equal + >::apply(p0, p1, + top_left, top_right, bottom_left, bottom_right, + pp_strategy, ps_strategy, result) ) + { + return result; + } + + if ( check_above_below_of_box + < + less_equal + >::apply(p0, p1, + top_left, top_right, bottom_left, bottom_right, + ps_strategy, result) ) + { + return result; + } + + if ( check_generic_position::apply(p0, p1, + bottom_left, top_right, + bottom_left, top_right, + top_left, bottom_right, + ps_strategy, result) ) + { + return result; + } + + // in all other cases the box and segment intersect, so return 0 + return result; + } + + + static inline ReturnType + negative_slope_segment(SegmentPoint const& p0, + SegmentPoint const& p1, + BoxPoint const& top_left, + BoxPoint const& top_right, + BoxPoint const& bottom_left, + BoxPoint const& bottom_right, + PPStrategy const& pp_strategy, + PSStrategy const& ps_strategy) + { + typedef compare_less_equal greater_equal; + + // assert that the segment has negative slope + BOOST_ASSERT( geometry::get<0>(p0) < geometry::get<0>(p1) + && geometry::get<1>(p0) > geometry::get<1>(p1) ); + + ReturnType result(0); + + if ( check_right_left_of_box + < + greater_equal + >::apply(p0, p1, + bottom_left, bottom_right, top_left, top_right, + pp_strategy, ps_strategy, result) ) + { + return result; + } + + if ( check_above_below_of_box + < + greater_equal + >::apply(p1, p0, + top_right, top_left, bottom_right, bottom_left, + ps_strategy, result) ) + { + return result; + } + + if ( check_generic_position::apply(p0, p1, + bottom_left, top_right, + top_right, bottom_left, + bottom_left, top_right, + ps_strategy, result) ) + { + return result; + } + + // in all other cases the box and segment intersect, so return 0 + return result; + } + +public: + static inline ReturnType apply(SegmentPoint const& p0, + SegmentPoint const& p1, + BoxPoint const& top_left, + BoxPoint const& top_right, + BoxPoint const& bottom_left, + BoxPoint const& bottom_right, + PPStrategy const& pp_strategy, + PSStrategy const& ps_strategy) + { + BOOST_ASSERT( geometry::less()(p0, p1) ); + + if ( geometry::get<0>(p0) < geometry::get<0>(p1) + && geometry::get<1>(p0) > geometry::get<1>(p1) ) + { + return negative_slope_segment(p0, p1, + top_left, top_right, + bottom_left, bottom_right, + pp_strategy, ps_strategy); + } + + return non_negative_slope_segment(p0, p1, + top_left, top_right, + bottom_left, bottom_right, + pp_strategy, ps_strategy); + } +}; + + +//========================================================================= + + +template +< + typename Segment, + typename Box, + typename std::size_t Dimension, + typename PPStrategy, + typename PSStrategy +> +class segment_to_box + : not_implemented +{}; + + +template +< + typename Segment, + typename Box, + typename PPStrategy, + typename PSStrategy +> +class segment_to_box +{ +private: + typedef typename point_type::type segment_point; + typedef typename point_type::type box_point; + + typedef typename strategy::distance::services::comparable_type + < + PPStrategy + >::type pp_comparable_strategy; + + typedef typename strategy::distance::services::comparable_type + < + PSStrategy + >::type ps_comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + ps_comparable_strategy, segment_point, box_point + >::type comparable_return_type; +public: + typedef typename strategy::distance::services::return_type + < + PSStrategy, segment_point, box_point + >::type return_type; + + static inline return_type apply(Segment const& segment, + Box const& box, + PPStrategy const& pp_strategy, + PSStrategy const& ps_strategy) + { + segment_point p[2]; + detail::assign_point_from_index<0>(segment, p[0]); + detail::assign_point_from_index<1>(segment, p[1]); + + if ( geometry::equals(p[0], p[1]) ) + { + typedef typename boost::mpl::if_ + < + boost::is_same + < + ps_comparable_strategy, + PSStrategy + >, + typename strategy::distance::services::comparable_type + < + typename detail::distance::default_strategy + < + segment_point, Box + >::type + >::type, + typename detail::distance::default_strategy + < + segment_point, Box + >::type + >::type point_box_strategy_type; + + return dispatch::distance + < + segment_point, + Box, + point_box_strategy_type + >::apply(p[0], box, point_box_strategy_type()); + } + + box_point top_left, top_right, bottom_left, bottom_right; + detail::assign_box_corners(box, bottom_left, bottom_right, + top_left, top_right); + + pp_comparable_strategy c_pp_strategy = + strategy::distance::services::get_comparable + < + PPStrategy + >::apply(pp_strategy); + + ps_comparable_strategy c_ps_strategy = + strategy::distance::services::get_comparable + < + PSStrategy + >::apply(ps_strategy); + + comparable_return_type cd; + + if ( geometry::less()(p[0], p[1]) ) + { + cd = segment_to_box_2D + < + return_type, + segment_point, + box_point, + pp_comparable_strategy, + ps_comparable_strategy + >::apply(p[0], p[1], + top_left, top_right, bottom_left, bottom_right, + c_pp_strategy, + c_ps_strategy); + } + else + { + cd = segment_to_box_2D + < + return_type, + segment_point, + box_point, + pp_comparable_strategy, + ps_comparable_strategy + >::apply(p[1], p[0], + top_left, top_right, bottom_left, bottom_right, + c_pp_strategy, + c_ps_strategy); + } + + return strategy::distance::services::comparable_to_regular + < + ps_comparable_strategy, PSStrategy, Segment, Box + >::apply( cd ); + } +}; + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +struct distance + < + Segment, Box, Strategy, segment_tag, box_tag, + strategy_tag_distance_point_segment, false + > +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + + static inline return_type apply(Segment const& segment, + Box const& box, + Strategy const& strategy) + { + assert_dimension_equal(); + + typedef typename detail::distance::default_strategy + < + typename point_type::type, + typename point_type::type + >::type pp_strategy_type; + + return detail::distance::segment_to_box + < + Segment, + Box, + dimension::value, + pp_strategy_type, + Strategy + >::apply(segment, box, pp_strategy_type(), strategy); + } +}; + + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SEGMENT_TO_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/segment_to_segment.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/segment_to_segment.hpp new file mode 100644 index 0000000000..1ae22153ce --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/segment_to_segment.hpp @@ -0,0 +1,131 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SEGMENT_TO_SEGMENT_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SEGMENT_TO_SEGMENT_HPP + +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + + +// compute segment-segment distance +template +class segment_to_segment +{ +private: + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, + typename point_type::type, + typename point_type::type + >::type comparable_return_type; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type + apply(Segment1 const& segment1, Segment2 const& segment2, + Strategy const& strategy) + { + if ( geometry::intersects(segment1, segment2) ) + { + return 0; + } + + typename point_type::type p[2]; + detail::assign_point_from_index<0>(segment1, p[0]); + detail::assign_point_from_index<1>(segment1, p[1]); + + typename point_type::type q[2]; + detail::assign_point_from_index<0>(segment2, q[0]); + detail::assign_point_from_index<1>(segment2, q[1]); + + comparable_strategy cstrategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + + comparable_return_type d[4]; + d[0] = cstrategy.apply(q[0], p[0], p[1]); + d[1] = cstrategy.apply(q[1], p[0], p[1]); + d[2] = cstrategy.apply(p[0], q[0], q[1]); + d[3] = cstrategy.apply(p[1], q[0], q[1]); + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, Segment1, Segment2 + >::apply( *std::min_element(d, d + 4) ); + } +}; + + + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + + +// segment-segment +template +struct distance + < + Segment1, Segment2, Strategy, segment_tag, segment_tag, + strategy_tag_distance_point_segment, false + > + : detail::distance::segment_to_segment +{}; + + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SEGMENT_TO_SEGMENT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/distance/single_to_multi.hpp b/3party/boost/boost/geometry/algorithms/detail/distance/single_to_multi.hpp new file mode 100644 index 0000000000..59cf172309 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/distance/single_to_multi.hpp @@ -0,0 +1,526 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SINGLE_TO_MULTI_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SINGLE_TO_MULTI_HPP + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace distance +{ + + +template +class distance_single_to_multi_generic +{ +private: + typedef typename strategy::distance::services::comparable_type + < + Strategy + >::type comparable_strategy; + + typedef typename strategy::distance::services::return_type + < + comparable_strategy, + typename point_type::type, + typename point_type::type + >::type comparable_return_type; + +public: + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(Geometry const& geometry, + MultiGeometry const& multi, + Strategy const& strategy) + { + comparable_return_type min_cdist = comparable_return_type(); + bool first = true; + + comparable_strategy cstrategy = + strategy::distance::services::get_comparable + < + Strategy + >::apply(strategy); + + for (typename range_iterator::type it = boost::begin(multi); + it != boost::end(multi); + ++it, first = false) + { + comparable_return_type cdist = dispatch::distance + < + Geometry, + typename range_value::type, + comparable_strategy + >::apply(geometry, *it, cstrategy); + + if (first || cdist < min_cdist) + { + min_cdist = cdist; + if ( geometry::math::equals(min_cdist, 0) ) + { + break; + } + } + } + + return strategy::distance::services::comparable_to_regular + < + comparable_strategy, Strategy, Geometry, MultiGeometry + >::apply(min_cdist); + } +}; + + + +template +struct distance_multi_to_single_generic +{ + typedef typename strategy::distance::services::return_type + < + Strategy, + typename point_type::type, + typename point_type::type + >::type return_type; + + static inline return_type apply(MultiGeometry const& multi, + Geometry const& geometry, + Strategy const& strategy) + { + return distance_single_to_multi_generic + < + Geometry, MultiGeometry, Strategy + >::apply(geometry, multi, strategy); + } +}; + + + + +}} // namespace detail::distance +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +namespace splitted_dispatch +{ + + +template +< + typename Geometry, + typename MultiGeometry, + typename Strategy, + typename GeometryTag, + typename MultiGeometryTag, + typename StrategyTag +> +struct distance_single_to_multi + : not_implemented +{}; + + + +template +struct distance_single_to_multi + < + Point, MultiPoint, Strategy, + point_tag, multi_point_tag, + strategy_tag_distance_point_point + > : detail::distance::distance_single_to_multi_generic + < + Point, MultiPoint, Strategy + > +{}; + + + +template +struct distance_single_to_multi + < + Point, MultiLinestring, Strategy, + point_tag, multi_linestring_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_single_to_multi_generic + < + Point, MultiLinestring, Strategy + > +{}; + + + +template +struct distance_single_to_multi + < + Point, MultiPolygon, Strategy, + point_tag, multi_polygon_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_single_to_multi_generic + < + Point, MultiPolygon, Strategy + > +{}; + + + +template +struct distance_single_to_multi + < + Linestring, MultiLinestring, Strategy, + linestring_tag, multi_linestring_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + Linestring, MultiLinestring, Strategy + > +{}; + + + +template +struct distance_single_to_multi + < + Linestring, MultiPolygon, Strategy, + linestring_tag, multi_polygon_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + Linestring, MultiPolygon, Strategy + > +{}; + + + +template +struct distance_single_to_multi + < + Polygon, MultiPoint, Strategy, + polygon_tag, multi_point_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_single_to_multi_generic + < + Polygon, MultiPoint, Strategy + > +{}; + + + +template +struct distance_single_to_multi + < + Polygon, MultiLinestring, Strategy, + polygon_tag, multi_linestring_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + Polygon, MultiLinestring, Strategy + > +{}; + + + +template +struct distance_single_to_multi + < + Polygon, MultiPolygon, Strategy, + polygon_tag, multi_polygon_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + Polygon, MultiPolygon, Strategy + > +{}; + + + +template +struct distance_single_to_multi + < + MultiLinestring, Ring, Strategy, + multi_linestring_tag, ring_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + MultiLinestring, Ring, Strategy + > +{}; + + +template +struct distance_single_to_multi + < + MultiPolygon, Ring, Strategy, + multi_polygon_tag, ring_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + MultiPolygon, Ring, Strategy + > +{}; + + + +template +< + typename MultiGeometry, + typename Geometry, + typename Strategy, + typename MultiGeometryTag, + typename GeometryTag, + typename StrategyTag +> +struct distance_multi_to_single + : not_implemented +{}; + + + +template +< + typename MultiPoint, + typename Segment, + typename Strategy +> +struct distance_multi_to_single + < + MultiPoint, Segment, Strategy, + multi_point_tag, segment_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_multi_to_single_generic + < + MultiPoint, Segment, Strategy + > +{}; + + + +template +< + typename MultiPoint, + typename Ring, + typename Strategy +> +struct distance_multi_to_single + < + MultiPoint, Ring, Strategy, + multi_point_tag, ring_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_multi_to_single_generic + < + MultiPoint, Ring, Strategy + > +{}; + + + +template +< + typename MultiPoint, + typename Box, + typename Strategy +> +struct distance_multi_to_single + < + MultiPoint, Box, Strategy, + multi_point_tag, box_tag, + strategy_tag_distance_point_box + > : detail::distance::distance_multi_to_single_generic + < + MultiPoint, Box, Strategy + > +{}; + + +template +struct distance_multi_to_single + < + MultiLinestring, Segment, Strategy, + multi_linestring_tag, segment_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_multi_to_single_generic + < + MultiLinestring, Segment, Strategy + > +{}; + + +template +struct distance_multi_to_single + < + MultiLinestring, Ring, Strategy, + multi_linestring_tag, ring_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + MultiLinestring, Ring, Strategy + > +{}; + + +template +struct distance_multi_to_single + < + MultiLinestring, Box, Strategy, + multi_linestring_tag, box_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_multi_to_single_generic + < + MultiLinestring, Box, Strategy + > +{}; + + + +template +struct distance_multi_to_single + < + MultiPolygon, Segment, Strategy, + multi_polygon_tag, segment_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_multi_to_single_generic + < + MultiPolygon, Segment, Strategy + > +{}; + + +template +struct distance_multi_to_single + < + MultiPolygon, Ring, Strategy, + multi_polygon_tag, ring_tag, + strategy_tag_distance_point_segment + > : detail::distance::geometry_to_geometry_rtree + < + MultiPolygon, Ring, Strategy + > +{}; + + +template +struct distance_multi_to_single + < + MultiPolygon, Box, Strategy, + multi_polygon_tag, box_tag, + strategy_tag_distance_point_segment + > : detail::distance::distance_multi_to_single_generic + < + MultiPolygon, Box, Strategy + > +{}; + + +} // namespace splitted_dispatch + + +template +< + typename Geometry, + typename MultiGeometry, + typename Strategy, + typename GeometryTag, + typename StrategyTag +> +struct distance + < + Geometry, MultiGeometry, Strategy, GeometryTag, multi_tag, + StrategyTag, false + > : splitted_dispatch::distance_single_to_multi + < + Geometry, MultiGeometry, Strategy, + GeometryTag, typename tag::type, + StrategyTag + > +{}; + + + +template +< + typename MultiGeometry, + typename Geometry, + typename Strategy, + typename GeometryTag, + typename StrategyTag +> +struct distance + < + MultiGeometry, Geometry, Strategy, multi_tag, GeometryTag, + StrategyTag, false + > : splitted_dispatch::distance_multi_to_single + < + MultiGeometry, Geometry, Strategy, + typename tag::type, GeometryTag, + StrategyTag + > +{}; + + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_DISTANCE_SINGLE_TO_MULTI_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/equals/collect_vectors.hpp b/3party/boost/boost/geometry/algorithms/detail/equals/collect_vectors.hpp index 9c2fe28057..5bcb5ffaa0 100644 --- a/3party/boost/boost/geometry/algorithms/detail/equals/collect_vectors.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/equals/collect_vectors.hpp @@ -1,8 +1,9 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. -// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. -// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. @@ -17,12 +18,13 @@ #include #include -#include -#include +#include #include #include +#include + #include #include @@ -75,9 +77,9 @@ struct collected_vector inline bool same_direction(collected_vector const& other) const { - // For high precision arithmetic, we have to be + // For high precision arithmetic, we have to be // more relaxed then using == - // Because 2/sqrt( (0,0)<->(2,2) ) == 1/sqrt( (0,0)<->(1,1) ) + // Because 2/sqrt( (0,0)<->(2,2) ) == 1/sqrt( (0,0)<->(1,1) ) // is not always true (at least, it is not for ttmath) return math::equals_with_epsilon(dx, other.dx) && math::equals_with_epsilon(dy, other.dy); @@ -111,6 +113,9 @@ struct range_collect_vectors return; } + typedef typename boost::range_size::type collection_size_t; + collection_size_t c_old_size = boost::size(collection); + typedef typename boost::range_iterator::type iterator; bool first = true; @@ -131,7 +136,7 @@ struct range_collect_vectors // Normalize the vector -> this results in points+direction // and is comparible between geometries - calculation_type magnitude = sqrt( + calculation_type magnitude = math::sqrt( boost::numeric_cast(v.dx * v.dx + v.dy * v.dy)); // Avoid non-duplicate points (AND division by zero) @@ -150,10 +155,19 @@ struct range_collect_vectors } // If first one has same direction as last one, remove first one - if (boost::size(collection) > 1 - && collection.front().same_direction(collection.back())) + collection_size_t collected_count = boost::size(collection) - c_old_size; + if ( collected_count > 1 ) { - collection.erase(collection.begin()); + typedef typename boost::range_iterator::type c_iterator; + c_iterator first = collection.begin() + c_old_size; + + if ( first->same_direction(collection.back()) ) + { + //collection.erase(first); + // O(1) instead of O(N) + *first = collection.back(); + collection.pop_back(); + } } } }; @@ -194,9 +208,10 @@ struct polygon_collect_vectors typedef range_collect_vectors per_range; per_range::apply(collection, exterior_ring(polygon)); - typename interior_return_type::type rings - = interior_rings(polygon); - for (BOOST_AUTO_TPL(it, boost::begin(rings)); it != boost::end(rings); ++it) + typename interior_return_type::type + rings = interior_rings(polygon); + for (typename detail::interior_iterator::type + it = boost::begin(rings); it != boost::end(rings); ++it) { per_range::apply(collection, *it); } diff --git a/3party/boost/boost/geometry/algorithms/detail/equals/point_point.hpp b/3party/boost/boost/geometry/algorithms/detail/equals/point_point.hpp new file mode 100644 index 0000000000..12daa85e9d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/equals/point_point.hpp @@ -0,0 +1,52 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2014 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2014 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland + +// This file was modified by Oracle on 2013-2014. +// Modifications copyright (c) 2013-2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_EQUALS_POINT_POINT_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_EQUALS_POINT_POINT_HPP + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace equals +{ + +/*! + \brief Internal utility function to detect of points are disjoint + \note To avoid circular references + */ +template +inline bool equals_point_point(Point1 const& point1, Point2 const& point2) +{ + return ! detail::disjoint::disjoint_point_point(point1, point2); +} + + +}} // namespace detail::equals +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_EQUALS_POINT_POINT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/extreme_points.hpp b/3party/boost/boost/geometry/algorithms/detail/extreme_points.hpp new file mode 100644 index 0000000000..c6a47bb8f4 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/extreme_points.hpp @@ -0,0 +1,515 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2013 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2013 Mateusz Loskot, London, UK. +// Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_EXTREME_POINTS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_EXTREME_POINTS_HPP + + +#include + +#include + +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace extreme_points +{ + +template +struct compare +{ + template + inline bool operator()(Point const& lhs, Point const& rhs) + { + return geometry::get(lhs) < geometry::get(rhs); + } +}; + + +template +inline void move_along_vector(PointType& point, PointType const& extreme, CoordinateType const& base_value) +{ + // Moves a point along the vector (point, extreme) in the direction of the extreme point + // This adapts the possibly uneven legs of the triangle (or trapezium-like shape) + // _____extreme _____ + // / \ / \ . + // /base \ => / \ point . + // \ point . + // + // For so-called intruders, it can be used to adapt both legs to the level of "base" + // For the base, it can be used to adapt both legs to the level of the max-value of the intruders + // If there are 2 or more extreme values, use the one close to 'point' to have a correct vector + + CoordinateType const value = geometry::get(point); + //if (geometry::math::equals(value, base_value)) + if (value >= base_value) + { + return; + } + + PointType vector = point; + subtract_point(vector, extreme); + + CoordinateType const diff = geometry::get(vector); + + // diff should never be zero + // because of the way our triangle/trapezium is build. + // We just return if it would be the case. + if (geometry::math::equals(diff, 0)) + { + return; + } + + CoordinateType const base_diff = base_value - geometry::get(extreme); + + multiply_value(vector, base_diff / diff); + + // The real move: + point = extreme; + add_point(point, vector); +} + + +template +inline void move_along_vector(Range& range, CoordinateType const& base_value) +{ + if (range.size() >= 3) + { + move_along_vector(range.front(), *(range.begin() + 1), base_value); + move_along_vector(range.back(), *(range.rbegin() + 1), base_value); + } +} + + +template +struct extreme_points_on_ring +{ + + typedef typename geometry::coordinate_type::type coordinate_type; + typedef typename boost::range_iterator::type range_iterator; + typedef typename geometry::point_type::type point_type; + + typedef typename geometry::strategy::side::services::default_strategy + < + typename geometry::cs_tag::type + >::type side_strategy; + + + template + static inline bool extend(CirclingIterator& it, + std::size_t n, + coordinate_type max_coordinate_value, + Points& points, int direction) + { + std::size_t safe_index = 0; + do + { + it += direction; + + points.push_back(*it); + + if (safe_index++ >= n) + { + // E.g.: ring is completely horizontal or vertical (= invalid, but we don't want to have an infinite loop) + return false; + } + } while (geometry::math::equals(geometry::get(*it), max_coordinate_value)); + + return true; + } + + // Overload without adding to poinst + template + static inline bool extend(CirclingIterator& it, + std::size_t n, + coordinate_type max_coordinate_value, + int direction) + { + std::size_t safe_index = 0; + do + { + it += direction; + + if (safe_index++ >= n) + { + // E.g.: ring is completely horizontal or vertical (= invalid, but we don't want to have an infinite loop) + return false; + } + } while (geometry::math::equals(geometry::get(*it), max_coordinate_value)); + + return true; + } + + template + static inline bool extent_both_sides(Ring const& ring, + point_type extreme, + CirclingIterator& left, + CirclingIterator& right) + { + std::size_t const n = boost::size(ring); + coordinate_type const max_coordinate_value = geometry::get(extreme); + + if (! extend(left, n, max_coordinate_value, -1)) + { + return false; + } + if (! extend(right, n, max_coordinate_value, +1)) + { + return false; + } + + return true; + } + + template + static inline bool collect(Ring const& ring, + point_type extreme, + Collection& points, + CirclingIterator& left, + CirclingIterator& right) + { + std::size_t const n = boost::size(ring); + coordinate_type const max_coordinate_value = geometry::get(extreme); + + // Collects first left, which is reversed (if more than one point) then adds the top itself, then right + if (! extend(left, n, max_coordinate_value, points, -1)) + { + return false; + } + std::reverse(points.begin(), points.end()); + points.push_back(extreme); + if (! extend(right, n, max_coordinate_value, points, +1)) + { + return false; + } + + return true; + } + + template + static inline void get_intruders(Ring const& ring, CirclingIterator left, CirclingIterator right, + Extremes const& extremes, + Intruders& intruders) + { + if (boost::size(extremes) < 3) + { + return; + } + coordinate_type const min_value = geometry::get(*std::min_element(boost::begin(extremes), boost::end(extremes), compare())); + + // Also select left/right (if Dimension=1) + coordinate_type const other_min = geometry::get<1 - Dimension>(*std::min_element(boost::begin(extremes), boost::end(extremes), compare<1 - Dimension>())); + coordinate_type const other_max = geometry::get<1 - Dimension>(*std::max_element(boost::begin(extremes), boost::end(extremes), compare<1 - Dimension>())); + + std::size_t defensive_check_index = 0; // in case we skip over left/right check, collect modifies right too + std::size_t const n = boost::size(ring); + while (left != right && defensive_check_index < n) + { + coordinate_type const coordinate = geometry::get(*right); + coordinate_type const other_coordinate = geometry::get<1 - Dimension>(*right); + if (coordinate > min_value && other_coordinate > other_min && other_coordinate < other_max) + { + int const first_side = side_strategy::apply(*right, extremes.front(), *(extremes.begin() + 1)); + int const last_side = side_strategy::apply(*right, *(extremes.rbegin() + 1), extremes.back()); + + // If not lying left from any of the extemes side + if (first_side != 1 && last_side != 1) + { + //std::cout << "first " << first_side << " last " << last_side << std::endl; + + // we start at this intrusion until it is handled, and don't affect our initial left iterator + CirclingIterator left_intrusion_it = right; + typename boost::range_value::type intruder; + collect(ring, *right, intruder, left_intrusion_it, right); + + // Also moves these to base-level, makes sorting possible which can be done in case of self-tangencies + // (we might postpone this action, it is often not necessary. However it is not time-consuming) + move_along_vector(intruder, min_value); + intruders.push_back(intruder); + --right; + } + } + ++right; + defensive_check_index++; + } + } + + template + static inline void get_intruders(Ring const& ring, + Extremes const& extremes, + Intruders& intruders) + { + std::size_t const n = boost::size(ring); + if (n >= 3) + { + geometry::ever_circling_range_iterator left(ring); + geometry::ever_circling_range_iterator right(ring); + ++right; + + get_intruders(ring, left, right, extremes, intruders); + } + } + + template + static inline bool right_turn(Ring const& ring, Iterator it) + { + int const index = std::distance(boost::begin(ring), it); + geometry::ever_circling_range_iterator left(ring); + geometry::ever_circling_range_iterator right(ring); + left += index; + right += index; + + if (! extent_both_sides(ring, *it, left, right)) + { + return false; + } + + int const first_side = side_strategy::apply(*(right - 1), *right, *left); + int const last_side = side_strategy::apply(*left, *(left + 1), *right); + +//std::cout << "Candidate at " << geometry::wkt(*it) << " first=" << first_side << " last=" << last_side << std::endl; + + // Turn should not be left (actually, it should be right because extent removes horizontal/collinear cases) + return first_side != 1 && last_side != 1; + } + + + // Gets the extreme segments (top point plus neighbouring points), plus intruders, if any, on the same ring + template + static inline bool apply(Ring const& ring, Extremes& extremes, Intruders& intruders) + { + std::size_t const n = boost::size(ring); + if (n < 3) + { + return false; + } + + // Get all maxima, usually one. In case of self-tangencies, or self-crossings, + // the max might be is not valid. A valid max should make a right turn + range_iterator max_it = boost::begin(ring); + compare smaller; + for (range_iterator it = max_it + 1; it != boost::end(ring); ++it) + { + if (smaller(*max_it, *it) && right_turn(ring, it)) + { + max_it = it; + } + } + + if (max_it == boost::end(ring)) + { + return false; + } + + int const index = std::distance(boost::begin(ring), max_it); +//std::cout << "Extreme point lies at " << index << " having " << geometry::wkt(*max_it) << std::endl; + + geometry::ever_circling_range_iterator left(ring); + geometry::ever_circling_range_iterator right(ring); + left += index; + right += index; + + // Collect all points (often 3) in a temporary vector + std::vector points; + points.reserve(3); + if (! collect(ring, *max_it, points, left, right)) + { + return false; + } + +//std::cout << "Built vector of " << points.size() << std::endl; + + coordinate_type const front_value = geometry::get(points.front()); + coordinate_type const back_value = geometry::get(points.back()); + coordinate_type const base_value = (std::max)(front_value, back_value); + if (front_value < back_value) + { + move_along_vector(points.front(), *(points.begin() + 1), base_value); + } + else + { + move_along_vector(points.back(), *(points.rbegin() + 1), base_value); + } + + std::copy(points.begin(), points.end(), std::back_inserter(extremes)); + + get_intruders(ring, left, right, extremes, intruders); + + return true; + } +}; + + + + + +}} // namespace detail::extreme_points +#endif // DOXYGEN_NO_DETAIL + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +template +< + typename Geometry, + std::size_t Dimension, + typename GeometryTag = typename tag::type +> +struct extreme_points +{}; + + +template +struct extreme_points + : detail::extreme_points::extreme_points_on_ring +{}; + + +template +struct extreme_points +{ + template + static inline bool apply(Polygon const& polygon, Extremes& extremes, Intruders& intruders) + { + typedef typename geometry::ring_type::type ring_type; + typedef detail::extreme_points::extreme_points_on_ring + < + ring_type, Dimension + > ring_implementation; + + if (! ring_implementation::apply(geometry::exterior_ring(polygon), extremes, intruders)) + { + return false; + } + + // For a polygon, its interior rings can contain intruders + typename interior_return_type::type + rings = interior_rings(polygon); + for (typename detail::interior_iterator::type + it = boost::begin(rings); it != boost::end(rings); ++it) + { + ring_implementation::get_intruders(*it, extremes, intruders); + } + + return true; + } +}; + +template +struct extreme_points +{ + template + static inline bool apply(Box const& box, Extremes& extremes, Intruders& ) + { + extremes.resize(4); + geometry::detail::assign_box_corners_oriented(box, extremes); + // ll,ul,ur,lr, contains too exactly the right info + return true; + } +}; + +template +struct extreme_points +{ + template + static inline bool apply(Box const& box, Extremes& extremes, Intruders& ) + { + extremes.resize(4); + geometry::detail::assign_box_corners_oriented(box, extremes); + // ll,ul,ur,lr, rotate one to start with UL and end with LL + std::rotate(extremes.begin(), extremes.begin() + 1, extremes.end()); + return true; + } +}; + +template +struct extreme_points +{ + template + static inline bool apply(MultiPolygon const& multi, Extremes& extremes, Intruders& intruders) + { + // Get one for the very first polygon, that is (for the moment) enough. + // It is not guaranteed the "extreme" then, but for the current purpose + // (point_on_surface) it can just be this point. + if (boost::size(multi) >= 1) + { + return extreme_points + < + typename boost::range_value::type, + Dimension, + polygon_tag + >::apply(*boost::begin(multi), extremes, intruders); + } + + return false; + } +}; + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +/*! +\brief Returns extreme points (for Edge=1 in dimension 1, so the top, + for Edge=0 in dimension 0, the right side) +\note We could specify a strategy (less/greater) to get bottom/left side too. However, until now we don't need that. + */ +template +inline bool extreme_points(Geometry const& geometry, Extremes& extremes, Intruders& intruders) +{ + concept::check(); + + // Extremes is not required to follow a geometry concept (but it should support an output iterator), + // but its elements should fulfil the point-concept + concept::check::type>(); + + // Intruders should contain collections which value type is point-concept + // Extremes might be anything (supporting an output iterator), but its elements should fulfil the point-concept + concept::check + < + typename boost::range_value + < + typename boost::range_value::type + >::type + const + >(); + + return dispatch::extreme_points::apply(geometry, extremes, intruders); +} + + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_EXTREME_POINTS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/for_each_range.hpp b/3party/boost/boost/geometry/algorithms/detail/for_each_range.hpp index 7cb01fa9b4..e8c92160f1 100644 --- a/3party/boost/boost/geometry/algorithms/detail/for_each_range.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/for_each_range.hpp @@ -17,9 +17,13 @@ #include #include +#include +#include +#include #include #include +#include #include #include @@ -34,24 +38,20 @@ namespace detail { namespace for_each { -template +template struct fe_range_range { - static inline void apply( - typename add_const_if_c::type& range, - Actor& actor) + static inline void apply(Range & range, Actor & actor) { actor.apply(range); } }; -template +template struct fe_range_polygon { - static inline void apply( - typename add_const_if_c::type& polygon, - Actor& actor) + static inline void apply(Polygon & polygon, Actor & actor) { actor.apply(exterior_ring(polygon)); @@ -60,17 +60,27 @@ struct fe_range_polygon } }; -template +template struct fe_range_box { - static inline void apply( - typename add_const_if_c::type& box, - Actor& actor) + static inline void apply(Box & box, Actor & actor) { - actor.apply(box_view(box)); + actor.apply(box_view::type>(box)); } }; +template +struct fe_range_multi +{ + static inline void apply(Multi & multi, Actor & actor) + { + for ( typename boost::range_iterator::type + it = boost::begin(multi); it != boost::end(multi); ++it) + { + SinglePolicy::apply(*it, actor); + } + } +}; }} // namespace detail::for_each #endif // DOXYGEN_NO_DETAIL @@ -83,10 +93,9 @@ namespace dispatch template < - typename Tag, typename Geometry, typename Actor, - bool IsConst + typename Tag = typename tag::type > struct for_each_range { @@ -98,26 +107,71 @@ struct for_each_range }; -template -struct for_each_range - : detail::for_each::fe_range_range +template +struct for_each_range + : detail::for_each::fe_range_range {}; -template -struct for_each_range - : detail::for_each::fe_range_range +template +struct for_each_range + : detail::for_each::fe_range_range {}; -template -struct for_each_range - : detail::for_each::fe_range_polygon +template +struct for_each_range + : detail::for_each::fe_range_polygon {}; -template -struct for_each_range - : detail::for_each::fe_range_box + +template +struct for_each_range + : detail::for_each::fe_range_box +{}; + + +template +struct for_each_range + : detail::for_each::fe_range_range +{}; + + +template +struct for_each_range + : detail::for_each::fe_range_multi + < + Geometry, + Actor, + detail::for_each::fe_range_range + < + typename add_const_if_c + < + boost::is_const::value, + typename boost::range_value::type + >::type, + Actor + > + > +{}; + + +template +struct for_each_range + : detail::for_each::fe_range_multi + < + Geometry, + Actor, + detail::for_each::fe_range_polygon + < + typename add_const_if_c + < + boost::is_const::value, + typename boost::range_value::type + >::type, + Actor + > + > {}; @@ -128,14 +182,12 @@ namespace detail { template -inline void for_each_range(Geometry const& geometry, Actor& actor) +inline void for_each_range(Geometry const& geometry, Actor & actor) { dispatch::for_each_range < - typename tag::type, - Geometry, - Actor, - true + Geometry const, + Actor >::apply(geometry, actor); } diff --git a/3party/boost/boost/geometry/algorithms/detail/get_left_turns.hpp b/3party/boost/boost/geometry/algorithms/detail/get_left_turns.hpp index d23f1e4c27..deb2aaf59d 100644 --- a/3party/boost/boost/geometry/algorithms/detail/get_left_turns.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/get_left_turns.hpp @@ -1,6 +1,6 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -9,7 +9,12 @@ #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_GET_LEFT_TURNS_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_GET_LEFT_TURNS_HPP +#include +#include +#include +#include #include +#include namespace boost { namespace geometry { @@ -21,346 +26,261 @@ namespace detail // TODO: move this to /util/ template -static inline std::pair ordered_pair(T const& first, T const& second) +inline std::pair ordered_pair(T const& first, T const& second) { return first < second ? std::make_pair(first, second) : std::make_pair(second, first); } -template -inline void debug_left_turn(AngleInfo const& ai, AngleInfo const& previous) +namespace left_turns { -#ifdef BOOST_GEOMETRY_DEBUG_BUFFER_OCCUPATION - std::cout << "Angle: " << (ai.incoming ? "i" : "o") - << " " << si(ai.seg_id) - << " " << (math::r2d * (ai.angle) ) - << " turn: " << ai.turn_index << "[" << ai.operation_index << "]" + +template +struct turn_angle_info +{ + segment_identifier seg_id; + int turn_index; + Point points[2]; + + turn_angle_info(segment_identifier const& id, Point const& from, Point const& to) + : seg_id(id) + , turn_index(-1) + { + points[0] = from; + points[1] = to; + } +}; + + +template +struct angle_info +{ + segment_identifier seg_id; + Point point; + bool incoming; + bool blocked; + + inline angle_info(segment_identifier const& id, bool inc, Point const& p) + : seg_id(id) + , point(p) + , incoming(inc) + , blocked(false) + { + } +}; + +template +inline int get_quadrant(Vector const& vector) +{ + // Return quadrant as layouted in the code below: + // 3 | 0 + // ----- + // 2 | 1 + return geometry::get<1>(vector) >= 0 + ? (geometry::get<0>(vector) < 0 ? 3 : 0) + : (geometry::get<0>(vector) < 0 ? 2 : 1) ; - - if (ai.turn_index != previous.turn_index - || ai.operation_index != previous.operation_index) - { - std::cout << " diff: " << math::r2d * math::abs(previous.angle - ai.angle); - } - std::cout << std::endl; -#endif } -template -inline void debug_left_turn(std::string const& caption, AngleInfo const& ai, AngleInfo const& previous, - int code = -99, int code2 = -99, int code3 = -99, int code4 = -99) +template +inline int squared_length(Vector const& vector) { -#ifdef BOOST_GEOMETRY_DEBUG_BUFFER_OCCUPATION - std::cout << " " << caption - << " turn: " << ai.turn_index << "[" << ai.operation_index << "]" - << " " << si(ai.seg_id) - << " " << (ai.incoming ? "i" : "o") - << " " << (math::r2d * (ai.angle) ) - << " turn: " << previous.turn_index << "[" << previous.operation_index << "]" - << " " << si(previous.seg_id) - << " " << (previous.incoming ? "i" : "o") - << " " << (math::r2d * (previous.angle) ) + return geometry::get<0>(vector) * geometry::get<0>(vector) + + geometry::get<1>(vector) * geometry::get<1>(vector) + ; +} + + +template +struct angle_less +{ + typedef Point vector_type; + typedef typename strategy::side::services::default_strategy + < + typename cs_tag::type + >::type side_strategy_type; + + angle_less(Point const& origin) + : m_origin(origin) + {} + + template + inline bool operator()(Angle const& p, Angle const& q) const + { + // Vector origin -> p and origin -> q + vector_type pv = p.point; + vector_type qv = q.point; + geometry::subtract_point(pv, m_origin); + geometry::subtract_point(qv, m_origin); + + int const quadrant_p = get_quadrant(pv); + int const quadrant_q = get_quadrant(qv); + if (quadrant_p != quadrant_q) + { + return quadrant_p < quadrant_q; + } + // Same quadrant, check if p is located left of q + int const side = side_strategy_type::apply(m_origin, q.point, + p.point); + if (side != 0) + { + return side == 1; + } + // Collinear, check if one is incoming + if (p.incoming != q.incoming) + { + return int(p.incoming) < int(q.incoming); + } + // Same quadrant/side/direction, return longest first + int const length_p = squared_length(pv); + int const length_q = squared_length(qv); + if (length_p != length_q) + { + return squared_length(pv) > squared_length(qv); + } + // They are still the same. Just compare on seg_id + return p.seg_id < q.seg_id; + } + +private: + Point m_origin; +}; + +template +struct angle_equal_to +{ + typedef Point vector_type; + typedef typename strategy::side::services::default_strategy + < + typename cs_tag::type + >::type side_strategy_type; + + inline angle_equal_to(Point const& origin) + : m_origin(origin) + {} + + template + inline bool operator()(Angle const& p, Angle const& q) const + { + // Vector origin -> p and origin -> q + vector_type pv = p.point; + vector_type qv = q.point; + geometry::subtract_point(pv, m_origin); + geometry::subtract_point(qv, m_origin); + + if (get_quadrant(pv) != get_quadrant(qv)) + { + return false; + } + // Same quadrant, check if p/q are collinear + int const side = side_strategy_type::apply(m_origin, q.point, + p.point); + return side == 0; + } + +private: + Point m_origin; +}; + +struct left_turn +{ + segment_identifier from; + segment_identifier to; +}; + + +template +inline void get_left_turns(AngleCollection const& sorted_angles, Point const& origin, + OutputCollection& output_collection) +{ + angle_equal_to comparator(origin); + typedef geometry::closing_iterator closing_iterator; + closing_iterator it(sorted_angles); + closing_iterator end(sorted_angles, true); + + closing_iterator previous = it++; + for( ; it != end; previous = it++) + { + if (! it->blocked) + { + bool equal = comparator(*previous, *it); + bool include = ! equal + && previous->incoming + && !it->incoming; + if (include) + { + left_turn turn; + turn.from = previous->seg_id; + turn.to = it->seg_id; + output_collection.push_back(turn); + } + } + } +} + +template +inline void block_turns_on_right_sides(AngleTurnCollection const& turns, + AngleCollection& sorted) +{ + // Create a small (seg_id -> index) map for fast finding turns + std::map incoming; + std::map outgoing; + int index = 0; + for (typename boost::range_iterator::type it = + sorted.begin(); it != sorted.end(); ++it, ++index) + { + if (it->incoming) + { + incoming[it->seg_id] = index; + } + else + { + outgoing[it->seg_id] = index; + } + } + + // Walk through turns and block every outgoing angle on the right side + for (typename boost::range_iterator::type it = + turns.begin(); it != turns.end(); ++it) + { + int incoming_index = incoming[it->seg_id]; + int outgoing_index = outgoing[it->seg_id]; + int index = incoming_index; + while(index != outgoing_index) + { + if (!sorted[index].incoming) + { + sorted[index].blocked = true; + } + + // Go back (circular) + index--; + if (index == -1) + { + index = boost::size(sorted) - 1; + } + } + } +} + +template +inline bool has_rounding_issues(AngleCollection const& angles, Point const& origin) +{ + for (typename boost::range_iterator::type it = + angles.begin(); it != angles.end(); ++it) + { + // Vector origin -> p and origin -> q + typedef Point vector_type; + vector_type v = it->point; + geometry::subtract_point(v, origin); + return geometry::math::abs(geometry::get<0>(v)) <= 1 + || geometry::math::abs(geometry::get<1>(v)) <= 1 ; - - if (code != -99) - { - std::cout << " code: " << code << " , " << code2 << " , " << code3 << " , " << code4; - } - std::cout << std::endl; -#endif -} - - -template -inline bool include_operation(Operation const& op, - segment_identifier const& outgoing_seg_id, - segment_identifier const& incoming_seg_id) -{ - return op.seg_id == outgoing_seg_id - && op.other_id == incoming_seg_id - && (op.operation == detail::overlay::operation_union - ||op.operation == detail::overlay::operation_continue) - ; -} - -template -inline bool process_include(segment_identifier const& outgoing_seg_id, segment_identifier const& incoming_seg_id, - int turn_index, Turn& turn, - std::set& keep_indices, int priority) -{ - bool result = false; - for (int i = 0; i < 2; i++) - { - if (include_operation(turn.operations[i], outgoing_seg_id, incoming_seg_id)) - { - turn.operations[i].include_in_occupation_map = true; - if (priority > turn.priority) - { - turn.priority = priority; - } - keep_indices.insert(turn_index); - result = true; - } - } - return result; -} - -template -inline bool include_left_turn_of_all( - AngleInfo const& outgoing, AngleInfo const& incoming, - Turns& turns, TurnSegmentIndices const& turn_segment_indices, - std::set& keep_indices, int priority) -{ - segment_identifier const& outgoing_seg_id = turns[outgoing.turn_index].operations[outgoing.operation_index].seg_id; - segment_identifier const& incoming_seg_id = turns[incoming.turn_index].operations[incoming.operation_index].seg_id; - - if (outgoing.turn_index == incoming.turn_index) - { - return process_include(outgoing_seg_id, incoming_seg_id, outgoing.turn_index, turns[outgoing.turn_index], keep_indices, priority); - } - - bool result = false; - std::pair pair = ordered_pair(outgoing_seg_id, incoming_seg_id); - typename boost::range_iterator::type it = turn_segment_indices.find(pair); - if (it != turn_segment_indices.end()) - { - for (std::set::const_iterator sit = it->second.begin(); sit != it->second.end(); ++sit) - { - if (process_include(outgoing_seg_id, incoming_seg_id, *sit, turns[*sit], keep_indices, priority)) - { - result = true; - } - } - } - return result; -} - -template -inline bool corresponds(Turn const& turn, segment_identifier const& seg_id) -{ - return turn.operations[Index].operation == detail::overlay::operation_union - && turn.operations[Index].seg_id == seg_id; -} - - -template -inline bool prefer_by_other(Turns const& turns, - TurnSegmentIndices const& turn_segment_indices, - std::set& indices) -{ - std::map map; - for (std::set::const_iterator sit = indices.begin(); - sit != indices.end(); - ++sit) - { - map[turns[*sit].operations[0].seg_id]++; - map[turns[*sit].operations[1].seg_id]++; - } - - std::set segment_occuring_once; - for (std::map::const_iterator mit = map.begin(); - mit != map.end();++mit) - { - if (mit->second == 1) - { - segment_occuring_once.insert(mit->first); - } -#ifdef BOOST_GEOMETRY_DEBUG_BUFFER_PREFER - std::cout << si(mit->first) << " " << mit->second << std::endl; -#endif - } - - if (segment_occuring_once.size() == 2) - { - // Try to find within all turns a turn with these two segments - - std::set::const_iterator soo_it = segment_occuring_once.begin(); - segment_identifier front = *soo_it; - soo_it++; - segment_identifier back = *soo_it; - - std::pair pair = ordered_pair(front, back); - - typename boost::range_iterator::type it = turn_segment_indices.find(pair); - if (it != turn_segment_indices.end()) - { - // debug_turns_by_indices("Found", it->second); - // Check which is the union/continue - segment_identifier good; - for (std::set::const_iterator sit = it->second.begin(); sit != it->second.end(); ++sit) - { - if (turns[*sit].operations[0].operation == detail::overlay::operation_union) - { - good = turns[*sit].operations[0].seg_id; - } - else if (turns[*sit].operations[1].operation == detail::overlay::operation_union) - { - good = turns[*sit].operations[1].seg_id; - } - } - -#ifdef BOOST_GEOMETRY_DEBUG_BUFFER_PREFER - std::cout << "Good: " << si(good) << std::endl; -#endif - - // Find in indexes-to-keep this segment with the union. Discard the other one - std::set ok_indices; - for (std::set::const_iterator sit = indices.begin(); sit != indices.end(); ++sit) - { - if (corresponds<0>(turns[*sit], good) || corresponds<1>(turns[*sit], good)) - { - ok_indices.insert(*sit); - } - } - if (ok_indices.size() > 0 && ok_indices.size() < indices.size()) - { - indices = ok_indices; - std::cout << "^"; - return true; - } - } } return false; } -template -inline void prefer_by_priority(Turns const& turns, std::set& indices) -{ - // Find max prio - int min_prio = 1024, max_prio = 0; - for (std::set::const_iterator sit = indices.begin(); sit != indices.end(); ++sit) - { - if (turns[*sit].priority > max_prio) - { - max_prio = turns[*sit].priority; - } - if (turns[*sit].priority < min_prio) - { - min_prio = turns[*sit].priority; - } - } - if (min_prio == max_prio) - { - return; - } - - // Only keep indices with high prio - std::set ok_indices; - for (std::set::const_iterator sit = indices.begin(); sit != indices.end(); ++sit) - { - if (turns[*sit].priority >= max_prio) - { - ok_indices.insert(*sit); - } - } - if (ok_indices.size() > 0 && ok_indices.size() < indices.size()) - { - indices = ok_indices; - std::cout << "%"; - } -} - -template -inline void calculate_left_turns(Angles const& angles, - Turns& turns, TurnSegmentIndices const& turn_segment_indices, - std::set& keep_indices) -{ - bool debug_indicate_size = false; - - typedef typename strategy::side::services::default_strategy - < - typename cs_tag::type - >::type side_strategy; - - std::size_t i = 0; - std::size_t n = boost::size(angles); - - typedef geometry::ever_circling_range_iterator circling_iterator; - circling_iterator cit(angles); - - debug_left_turn(*cit, *cit); - for(circling_iterator prev = cit++; i < n; prev = cit++, i++) - { - debug_left_turn(*cit, *prev); - - bool const include = ! geometry::math::equals(prev->angle, cit->angle) - && ! prev->incoming - && cit->incoming; - - if (include) - { - // Go back to possibly include more same left outgoing angles: - // Because we check on side too we can take a large "epsilon" - circling_iterator back = prev - 1; - - typename AngleInfo::angle_type eps = 0.00001; - int b = 1; - for(std::size_t d = 0; - math::abs(prev->angle - back->angle) < eps - && ! back->incoming - && d < n; - d++) - { - --back; - ++b; - } - - // Same but forward to possibly include more incoming angles - int f = 1; - circling_iterator forward = cit + 1; - for(std::size_t d = 0; - math::abs(cit->angle - forward->angle) < eps - && forward->incoming - && d < n; - d++) - { - ++forward; - ++f; - } - -#ifdef BOOST_GEOMETRY_DEBUG_BUFFER_OCCUPATION - std::cout << "HANDLE " << b << "/" << f << " ANGLES" << std::endl; -#endif - for(circling_iterator bit = prev; bit != back; --bit) - { - int code = side_strategy::apply(bit->direction_point, prev->intersection_point, prev->direction_point); - int code2 = side_strategy::apply(prev->direction_point, bit->intersection_point, bit->direction_point); - for(circling_iterator fit = cit; fit != forward; ++fit) - { - int code3 = side_strategy::apply(fit->direction_point, cit->intersection_point, cit->direction_point); - int code4 = side_strategy::apply(cit->direction_point, fit->intersection_point, fit->direction_point); - - int priority = 2; - if (code == -1 && code2 == 1) - { - // This segment is lying right of the other one. - // Cannot ignore it (because of robustness, see a.o. #rt_p21 from unit test). - // But if we find more we can prefer later by priority - // (a.o. necessary for #rt_o2 from unit test) - priority = 1; - } - - bool included = include_left_turn_of_all(*bit, *fit, turns, turn_segment_indices, keep_indices, priority); - debug_left_turn(included ? "KEEP" : "SKIP", *fit, *bit, code, code2, code3, code4); - } - } - } - } - - if (debug_indicate_size) - { - std::cout << " size=" << keep_indices.size(); - } - - if (keep_indices.size() >= 2) - { - prefer_by_other(turns, turn_segment_indices, keep_indices); - } - if (keep_indices.size() >= 2) - { - prefer_by_priority(turns, keep_indices); - } -} +} // namespace left_turns } // namespace detail #endif // DOXYGEN_NO_DETAIL diff --git a/3party/boost/boost/geometry/algorithms/detail/get_max_size.hpp b/3party/boost/boost/geometry/algorithms/detail/get_max_size.hpp new file mode 100644 index 0000000000..8ac43e78b8 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/get_max_size.hpp @@ -0,0 +1,64 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2014 Bruno Lalande, Paris, France. +// Copyright (c) 2014 Mateusz Loskot, London, UK. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_GET_MAX_SIZE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_GET_MAX_SIZE_HPP + + +#include + +#include +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +template +struct get_max_size_box +{ + static inline typename coordinate_type::type apply(Box const& box) + { + typename coordinate_type::type s + = geometry::math::abs(geometry::get<1, Dimension>(box) - geometry::get<0, Dimension>(box)); + + return (std::max)(s, get_max_size_box::apply(box)); + } +}; + +template +struct get_max_size_box +{ + static inline typename coordinate_type::type apply(Box const& box) + { + return geometry::math::abs(geometry::get<1, 0>(box) - geometry::get<0, 0>(box)); + } +}; + +// This might be implemented later on for other geometries too. +// Not dispatched yet. +template +inline typename coordinate_type::type get_max_size(Box const& box) +{ + return get_max_size_box::value - 1>::apply(box); +} + +} // namespace detail +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_GET_MAX_SIZE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/has_self_intersections.hpp b/3party/boost/boost/geometry/algorithms/detail/has_self_intersections.hpp index 1e6215ed93..24746ac627 100644 --- a/3party/boost/boost/geometry/algorithms/detail/has_self_intersections.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/has_self_intersections.hpp @@ -17,7 +17,10 @@ #include #include -#include +#include +#include +#include +#include #ifdef BOOST_GEOMETRY_DEBUG_HAS_SELF_INTERSECTIONS # include @@ -56,26 +59,33 @@ namespace detail { namespace overlay { -template -inline bool has_self_intersections(Geometry const& geometry) +template +inline bool has_self_intersections(Geometry const& geometry, + RobustPolicy const& robust_policy, + bool throw_on_self_intersection = true) { typedef typename point_type::type point_type; - typedef detail::overlay::turn_info turn_info; + typedef turn_info + < + point_type, + typename segment_ratio_type::type + > turn_info; std::deque turns; detail::disjoint::disjoint_interrupt_policy policy; - geometry::self_turns(geometry, turns, policy); - + + geometry::self_turns(geometry, robust_policy, turns, policy); + #ifdef BOOST_GEOMETRY_DEBUG_HAS_SELF_INTERSECTIONS bool first = true; -#endif - for(typename std::deque::const_iterator it = boost::begin(turns); +#endif + for(typename std::deque::const_iterator it = boost::begin(turns); it != boost::end(turns); ++it) { turn_info const& info = *it; - bool const both_union_turn = + bool const both_union_turn = info.operations[0].operation == detail::overlay::operation_union && info.operations[1].operation == detail::overlay::operation_union; - bool const both_intersection_turn = + bool const both_intersection_turn = info.operations[0].operation == detail::overlay::operation_intersection && info.operations[1].operation == detail::overlay::operation_intersection; @@ -95,19 +105,40 @@ inline bool has_self_intersections(Geometry const& geometry) for (int i = 0; i < 2; i++) { std::cout << " " << operation_char(info.operations[i].operation); + std::cout << " " << info.operations[i].seg_id; } std::cout << " " << geometry::dsv(info.point) << std::endl; #endif #if ! defined(BOOST_GEOMETRY_OVERLAY_NO_THROW) - throw overlay_invalid_input_exception(); + if (throw_on_self_intersection) + { + throw overlay_invalid_input_exception(); + } #endif + return true; } } return false; } +// For backward compatibility +template +inline bool has_self_intersections(Geometry const& geometry, + bool throw_on_self_intersection = true) +{ + typedef typename geometry::point_type::type point_type; + typedef typename geometry::rescale_policy_type::type + rescale_policy_type; + + rescale_policy_type robust_policy + = geometry::get_rescale_policy(geometry); + + return has_self_intersections(geometry, robust_policy, + throw_on_self_intersection); +} + }} // namespace detail::overlay #endif // DOXYGEN_NO_DETAIL diff --git a/3party/boost/boost/geometry/algorithms/detail/interior_iterator.hpp b/3party/boost/boost/geometry/algorithms/detail/interior_iterator.hpp new file mode 100644 index 0000000000..3582773c3d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/interior_iterator.hpp @@ -0,0 +1,71 @@ +// Boost.Geometry + +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_INTERIOR_ITERATOR_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_INTERIOR_ITERATOR_HPP + +#include +#include + +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +/*! +\brief Structure defining the type of interior rings iterator +\note If the Geometry is const, const iterator is defined. +\tparam Geometry \tparam_geometry + */ +template +struct interior_iterator +{ + typedef typename boost::range_iterator + < + typename geometry::interior_type::type + >::type type; +}; + +template +struct copy_const +{ + typedef T type; +}; + +template +struct copy_const +{ + typedef T const type; +}; + +template +struct interior_ring_iterator +{ + typedef typename boost::range_iterator + < + typename copy_const + < + typename geometry::interior_type::type, + typename boost::range_value + < + typename geometry::interior_type::type + >::type + >::type + >::type type; +}; + +} // namespace detail +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_INTERIOR_ITERATOR_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_simple/always_simple.hpp b/3party/boost/boost/geometry/algorithms/detail/is_simple/always_simple.hpp new file mode 100644 index 0000000000..91e2ef76bd --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_simple/always_simple.hpp @@ -0,0 +1,83 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_ALWAYS_SIMPLE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_ALWAYS_SIMPLE_HPP + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_simple +{ + + +template +struct always_simple +{ + static inline bool apply(Geometry const&) + { + return true; + } +}; + + +}} // namespace detail::is_simple +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// A point is always simple +template +struct is_simple + : detail::is_simple::always_simple +{}; + + +// A valid segment is always simple. +// A segment is a curve. +// A curve is simple if it does not pass through the same point twice, +// with the possible exception of its two endpoints +// +// Reference: OGC 06-103r4 (6.1.6.1) +template +struct is_simple + : detail::is_simple::always_simple +{}; + + +// A valid box is always simple +// A box is a Polygon, and it satisfies the conditions for Polygon validity. +// +// Reference (for polygon validity): OGC 06-103r4 (6.1.11.1) +template +struct is_simple + : detail::is_simple::always_simple +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_ALWAYS_SIMPLE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_simple/areal.hpp b/3party/boost/boost/geometry/algorithms/detail/is_simple/areal.hpp new file mode 100644 index 0000000000..9a1a16507a --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_simple/areal.hpp @@ -0,0 +1,141 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_AREAL_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_AREAL_HPP + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_simple +{ + + +template +struct is_simple_ring +{ + static inline bool apply(Ring const& ring) + { + return + !detail::is_valid::has_duplicates + < + Ring, geometry::closure::value + >::apply(ring); + } +}; + + +template +class is_simple_polygon +{ +private: + template + static inline + bool are_simple_interior_rings(InteriorRings const& interior_rings) + { + return + detail::check_iterator_range + < + is_simple_ring + < + typename boost::range_value::type + > + >::apply(boost::begin(interior_rings), + boost::end(interior_rings)); + } + +public: + static inline bool apply(Polygon const& polygon) + { + return + is_simple_ring + < + typename ring_type::type + >::apply(exterior_ring(polygon)) + && + are_simple_interior_rings(geometry::interior_rings(polygon)); + } +}; + + +}} // namespace detail::is_simple +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// A Ring is a Polygon. +// A Polygon is always a simple geometric object provided that it is valid. +// +// Reference (for polygon validity): OGC 06-103r4 (6.1.11.1) +template +struct is_simple + : detail::is_simple::is_simple_ring +{}; + + +// A Polygon is always a simple geometric object provided that it is valid. +// +// Reference (for validity of Polygons): OGC 06-103r4 (6.1.11.1) +template +struct is_simple + : detail::is_simple::is_simple_polygon +{}; + + +// Not clear what the definition is. +// Right now we consider a MultiPolygon as simple if it is valid. +// +// Reference (for validity of MultiPolygons): OGC 06-103r4 (6.1.14) +template +struct is_simple +{ + static inline bool apply(MultiPolygon const& multipolygon) + { + return + detail::check_iterator_range + < + detail::is_simple::is_simple_polygon + < + typename boost::range_value::type + >, + false // do not allow empty multi-polygon + >::apply(boost::begin(multipolygon), boost::end(multipolygon)); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_AREAL_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp b/3party/boost/boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp new file mode 100644 index 0000000000..75c37c68f8 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_simple/debug_print_boundary_points.hpp @@ -0,0 +1,82 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_DEBUG_PRINT_BOUNDARY_POINTS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_DEBUG_PRINT_BOUNDARY_POINTS_HPP + +#ifdef BOOST_GEOMETRY_TEST_DEBUG +#include +#include +#include + +#include + +#include + +#include + +#include + +#include + +#include +#endif + + +namespace boost { namespace geometry +{ + +namespace detail { namespace is_simple +{ + + +#ifdef BOOST_GEOMETRY_TEST_DEBUG +template +inline void debug_print_boundary_points(MultiLinestring const& multilinestring) +{ + typedef typename point_type::type point_type; + typedef std::vector point_vector; + + point_vector boundary_points; + for (typename boost::range_iterator::type it + = boost::begin(multilinestring); + it != boost::end(multilinestring); ++it) + { + if ( boost::size(*it) > 1 + && !geometry::equals(range::front(*it), range::back(*it)) ) + { + boundary_points.push_back( range::front(*it) ); + boundary_points.push_back( range::back(*it) ); + } + } + + std::sort(boundary_points.begin(), boundary_points.end(), + geometry::less()); + + std::cout << "boundary points: "; + for (typename point_vector::const_iterator pit = boundary_points.begin(); + pit != boundary_points.end(); ++pit) + { + std::cout << " " << geometry::dsv(*pit); + } + std::cout << std::endl << std::endl; +} +#else +template +inline void debug_print_boundary_points(MultiLinestring const&) +{ +} +#endif // BOOST_GEOMETRY_TEST_DEBUG + + +}} // namespace detail::is_simple + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_DEBUG_PRINT_BOUNDARY_POINTS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_simple/implementation.hpp b/3party/boost/boost/geometry/algorithms/detail/is_simple/implementation.hpp new file mode 100644 index 0000000000..e69b273ce3 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_simple/implementation.hpp @@ -0,0 +1,18 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_IMPLEMENTATION_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_IMPLEMENTATION_HPP + +#include +#include +#include +#include + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_IMPLEMENTATION_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_simple/interface.hpp b/3party/boost/boost/geometry/algorithms/detail/is_simple/interface.hpp new file mode 100644 index 0000000000..4239664ed1 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_simple/interface.hpp @@ -0,0 +1,80 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_INTERFACE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_INTERFACE_HPP + +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +namespace resolve_variant { + +template +struct is_simple +{ + static inline bool apply(Geometry const& geometry) + { + concept::check(); + return dispatch::is_simple::apply(geometry); + } +}; + +template +struct is_simple > +{ + struct visitor : boost::static_visitor + { + template + bool operator()(Geometry const& geometry) const + { + return is_simple::apply(geometry); + } + }; + + static inline bool + apply(boost::variant const& geometry) + { + return boost::apply_visitor(visitor(), geometry); + } +}; + +} // namespace resolve_variant + + + +/*! +\brief \brief_check{is simple} +\ingroup is_simple +\tparam Geometry \tparam_geometry +\param geometry \param_geometry +\return \return_check{is simple} + +\qbk{[include reference/algorithms/is_simple.qbk]} +*/ +template +inline bool is_simple(Geometry const& geometry) +{ + return resolve_variant::is_simple::apply(geometry); +} + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_INTERFACE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_simple/linear.hpp b/3party/boost/boost/geometry/algorithms/detail/is_simple/linear.hpp new file mode 100644 index 0000000000..18c33bfc3a --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_simple/linear.hpp @@ -0,0 +1,248 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_LINEAR_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_LINEAR_HPP + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_simple +{ + + +template +struct is_simple_linestring +{ + static inline bool apply(Linestring const& linestring) + { + return !detail::is_valid::has_duplicates + < + Linestring, closed + >::apply(linestring) + && !detail::is_valid::has_spikes + < + Linestring, closed + >::apply(linestring) + && !(CheckSelfIntersections && geometry::intersects(linestring)); + } +}; + + + +template +class is_simple_multilinestring +{ +private: + class is_acceptable_turn + { + private: + template + static inline bool is_boundary_point_of(Point const& point, + Linestring const& linestring) + { + BOOST_ASSERT( boost::size(linestring) > 1 ); + return + !geometry::equals(range::front(linestring), + range::back(linestring)) + && + ( geometry::equals(point, range::front(linestring)) + || geometry::equals(point, range::back(linestring)) ); + } + + template + static inline bool have_same_boundary_points(Linestring1 const& ls1, + Linestring2 const& ls2) + { + return + geometry::equals(range::front(ls1), range::front(ls2)) + ? + geometry::equals(range::back(ls1), range::back(ls2)) + : + (geometry::equals(range::front(ls1), range::back(ls2)) + && + geometry::equals(range::back(ls1), range::front(ls2)) + ) + ; + } + + public: + is_acceptable_turn(MultiLinestring const& multilinestring) + : m_multilinestring(multilinestring) + {} + + template + inline bool apply(Turn const& turn) const + { + typedef typename boost::range_value + < + MultiLinestring + >::type linestring; + + linestring const& ls1 = + range::at(m_multilinestring, + turn.operations[0].seg_id.multi_index); + + linestring const& ls2 = + range::at(m_multilinestring, + turn.operations[0].other_id.multi_index); + + return + is_boundary_point_of(turn.point, ls1) + && is_boundary_point_of(turn.point, ls2) + && + ( boost::size(ls1) != 2 + || boost::size(ls2) != 2 + || !have_same_boundary_points(ls1, ls2) ); + } + + private: + MultiLinestring const& m_multilinestring; + }; + + +public: + static inline bool apply(MultiLinestring const& multilinestring) + { + typedef typename boost::range_value::type linestring; + typedef typename point_type::type point_type; + typedef point_type point; + + + // check each of the linestrings for simplicity + if ( !detail::check_iterator_range + < + is_simple_linestring, + false // do not allow empty multilinestring + >::apply(boost::begin(multilinestring), + boost::end(multilinestring)) + ) + { + return false; + } + + + // compute self turns + typedef detail::overlay::turn_info + < + point_type, + geometry::segment_ratio + < + typename geometry::coordinate_type::type + > + > turn_info; + + std::deque turns; + + typedef detail::overlay::get_turn_info + < + detail::disjoint::assign_disjoint_policy + > turn_policy; + + is_acceptable_turn predicate(multilinestring); + detail::overlay::predicate_based_interrupt_policy + < + is_acceptable_turn + > interrupt_policy(predicate); + + detail::self_get_turn_points::get_turns + < + turn_policy + >::apply(multilinestring, + detail::no_rescale_policy(), + turns, + interrupt_policy); + + detail::is_valid::debug_print_turns(turns.begin(), turns.end()); + debug_print_boundary_points(multilinestring); + + return !interrupt_policy.has_intersections; + } + +}; + + + +}} // namespace detail::is_simple +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + +// A linestring is a curve. +// A curve is simple if it does not pass through the same point twice, +// with the possible exception of its two endpoints +// +// Reference: OGC 06-103r4 (6.1.6.1) +template +struct is_simple + : detail::is_simple::is_simple_linestring +{}; + + +// A MultiLinestring is a MultiCurve +// A MultiCurve is simple if all of its elements are simple and the +// only intersections between any two elements occur at Points that +// are on the boundaries of both elements. +// +// Reference: OGC 06-103r4 (6.1.8.1; Fig. 9) +template +struct is_simple + : detail::is_simple::is_simple_multilinestring +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_LINEAR_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_simple/multipoint.hpp b/3party/boost/boost/geometry/algorithms/detail/is_simple/multipoint.hpp new file mode 100644 index 0000000000..d996eb64e9 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_simple/multipoint.hpp @@ -0,0 +1,84 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_MULTIPOINT_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_MULTIPOINT_HPP + +#include + +#include + +#include +#include +#include + +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_simple +{ + + +template +struct is_simple_multipoint +{ + static inline bool apply(MultiPoint const& multipoint) + { + if ( boost::size(multipoint) == 0 ) + { + return false; + } + + MultiPoint mp(multipoint); + std::sort(boost::begin(mp), boost::end(mp), + geometry::less::type>()); + + return !detail::is_valid::has_duplicates::apply(mp); + } +}; + + +}} // namespace detail::is_simple +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// A MultiPoint is simple if no two Points in the MultiPoint are equal +// (have identical coordinate values in X and Y) +// +// Reference: OGC 06-103r4 (6.1.5) +template +struct is_simple + : detail::is_simple::is_simple_multipoint +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_SIMPLE_MULTIPOINT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/box.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/box.hpp new file mode 100644 index 0000000000..f82b3f9bf1 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/box.hpp @@ -0,0 +1,86 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_BOX_HPP + +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + +template +struct has_valid_corners +{ + static inline bool apply(Box const& box) + { + if ( geometry::get(box) + <= + geometry::get(box) ) + { + return false; + } + return has_valid_corners::apply(box); + } +}; + + +template +struct has_valid_corners +{ + static inline bool apply(Box const&) + { + return true; + } +}; + +}} // namespace detail::is_valid +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// A box is always simple +// A box is a Polygon, and it satisfies the conditions for Polygon validity. +// +// The only thing we have to check is whether the max corner lies in +// the upper-right quadrant as defined by the min corner +// +// Reference (for polygon validity): OGC 06-103r4 (6.1.11.1) +template +struct is_valid + : detail::is_valid::has_valid_corners::value> +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/complement_graph.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/complement_graph.hpp new file mode 100644 index 0000000000..2272bbf32f --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/complement_graph.hpp @@ -0,0 +1,239 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_COMPLEMENT_GRAPH_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_COMPLEMENT_GRAPH_HPP + +#include + +#include +#include +#include +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +namespace detail { namespace is_valid +{ + + +template +class complement_graph_vertex +{ +public: + complement_graph_vertex(std::size_t id) + : m_id(id) + , m_turn_point(NULL) + {} + + complement_graph_vertex(TurnPoint const* turn_point, + std::size_t expected_id) + : m_id(expected_id) + , m_turn_point(turn_point) + {} + + inline std::size_t id() const { return m_id; } + + inline bool operator<(complement_graph_vertex const& other) const + { + if ( m_turn_point != NULL && other.m_turn_point != NULL ) + { + return geometry::less + < + TurnPoint + >()(*m_turn_point, *other.m_turn_point); + } + if ( m_turn_point == NULL && other.m_turn_point == NULL ) + { + return m_id < other.m_id; + } + return m_turn_point == NULL; + } + +private: + // the value of m_turn_point determines the type of the vertex + // non-NULL: vertex corresponds to an IP + // NULL : vertex corresponds to a hole or outer space, and the id + // is the ring id of the corresponding ring of the polygon + std::size_t m_id; + TurnPoint const* m_turn_point; +}; + + + + +template +class complement_graph +{ +private: + typedef complement_graph_vertex vertex; + typedef std::set vertex_container; + +public: + typedef typename vertex_container::const_iterator vertex_handle; + +private: + struct vertex_handle_less + { + inline bool operator()(vertex_handle v1, vertex_handle v2) const + { + return v1->id() < v2->id(); + } + }; + + typedef std::set neighbor_container; + + class has_cycles_dfs_data + { + public: + has_cycles_dfs_data(std::size_t num_nodes) + : m_visited(num_nodes, false) + , m_parent_id(num_nodes, -1) + {} + + inline int parent_id(vertex_handle v) const + { + return m_parent_id[v->id()]; + } + + inline void set_parent_id(vertex_handle v, int id) + { + m_parent_id[v->id()] = id; + } + + inline bool visited(vertex_handle v) const + { + return m_visited[v->id()]; + } + + inline void set_visited(vertex_handle v, bool value) + { + m_visited[v->id()] = value; + } + private: + std::vector m_visited; + std::vector m_parent_id; + }; + + + inline bool has_cycles(vertex_handle start_vertex, + has_cycles_dfs_data& data) const + { + std::stack stack; + stack.push(start_vertex); + + while ( !stack.empty() ) + { + vertex_handle v = stack.top(); + stack.pop(); + + data.set_visited(v, true); + for (typename neighbor_container::const_iterator nit + = m_neighbors[v->id()].begin(); + nit != m_neighbors[v->id()].end(); ++nit) + { + if ( static_cast((*nit)->id()) != data.parent_id(v) ) + { + if ( data.visited(*nit) ) + { + return true; + } + else + { + data.set_parent_id(*nit, static_cast(v->id())); + stack.push(*nit); + } + } + } + } + return false; + } + +public: + // num_rings: total number of rings, including the exterior ring + complement_graph(std::size_t num_rings) + : m_num_rings(num_rings) + , m_num_turns(0) + , m_vertices() + , m_neighbors(num_rings) + {} + + // inserts a ring vertex in the graph and returns its handle + // ring id's are zero-based (so the first interior ring has id 1) + inline vertex_handle add_vertex(int id) + { + return m_vertices.insert(vertex(static_cast(id))).first; + } + + // inserts an IP in the graph and returns its id + inline vertex_handle add_vertex(TurnPoint const& turn_point) + { + std::pair res + = m_vertices.insert(vertex(boost::addressof(turn_point), + m_num_rings + m_num_turns) + ); + + if ( res.second ) + { + // a new element is inserted + m_neighbors.push_back(neighbor_container()); + ++m_num_turns; + } + return res.first; + } + + inline void add_edge(vertex_handle v1, vertex_handle v2) + { + BOOST_ASSERT( v1 != m_vertices.end() ); + BOOST_ASSERT( v2 != m_vertices.end() ); + m_neighbors[v1->id()].insert(v2); + m_neighbors[v2->id()].insert(v1); + } + + inline bool has_cycles() const + { + // initialize all vertices as non-visited and with no parent set + // this is done by the constructor of has_cycles_dfs_data + has_cycles_dfs_data data(m_num_rings + m_num_turns); + + // for each non-visited vertex, start a DFS from that vertex + for (vertex_handle it = m_vertices.begin(); + it != m_vertices.end(); ++it) + { + if ( !data.visited(it) && has_cycles(it, data) ) + { + return true; + } + } + return false; + } + + template + friend inline + void debug_print_complement_graph(OStream&, complement_graph const&); + +private: + std::size_t m_num_rings, m_num_turns; + vertex_container m_vertices; + std::vector m_neighbors; +}; + + +}} // namespace detail::is_valid + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_COMPLEMENT_GRAPH_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp new file mode 100644 index 0000000000..60f597e296 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_complement_graph.hpp @@ -0,0 +1,70 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_DEBUG_COMPLEMENT_GRAPH_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_DEBUG_COMPLEMENT_GRAPH_HPP + +#ifdef BOOST_GEOMETRY_TEST_DEBUG +#include +#endif + +namespace boost { namespace geometry +{ + +namespace detail { namespace is_valid +{ + + +#ifdef BOOST_GEOMETRY_TEST_DEBUG +template +inline void +debug_print_complement_graph(OutputStream& os, + complement_graph const& graph) +{ + typedef typename complement_graph::vertex_handle vertex_handle; + + os << "num rings: " << graph.m_num_rings << std::endl; + os << "vertex ids: {"; + for (vertex_handle it = graph.m_vertices.begin(); + it != graph.m_vertices.end(); ++it) + { + os << " " << it->id(); + } + os << " }" << std::endl; + + for (vertex_handle it = graph.m_vertices.begin(); + it != graph.m_vertices.end(); ++it) + { + os << "neighbors of " << it->id() << ": {"; + for (typename complement_graph + < + TurnPoint + >::neighbor_container::const_iterator + nit = graph.m_neighbors[it->id()].begin(); + nit != graph.m_neighbors[it->id()].end(); ++nit) + { + os << " " << (*nit)->id(); + } + os << "}" << std::endl; + } +} +#else +template +inline void debug_print_complement_graph(OutputStream&, + complement_graph const&) +{ +} +#endif + + +}} // namespace detail::is_valid + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_COMPLEMENT_GRAPH_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp new file mode 100644 index 0000000000..b14355639d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_print_turns.hpp @@ -0,0 +1,64 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_DEBUG_PRINT_TURNS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_DEBUG_PRINT_TURNS_HPP + +#ifdef BOOST_GEOMETRY_TEST_DEBUG +#include + +#include +#include +#endif + + +namespace boost { namespace geometry +{ + +namespace detail { namespace is_valid +{ + +#ifdef BOOST_GEOMETRY_TEST_DEBUG +template +inline void debug_print_turns(TurnIterator first, TurnIterator beyond) +{ + std::cout << "turns:"; + for (TurnIterator tit = first; tit != beyond; ++tit) + { + std::cout << " [" + << geometry::method_char(tit->method) + << "," + << geometry::operation_char(tit->operations[0].operation) + << "/" + << geometry::operation_char(tit->operations[1].operation) + << " {" + << tit->operations[0].seg_id.multi_index + << ", " + << tit->operations[0].other_id.multi_index + << "} {" + << tit->operations[0].seg_id.ring_index + << ", " + << tit->operations[0].other_id.ring_index + << "} " + << geometry::dsv(tit->point) + << "]"; + } + std::cout << std::endl << std::endl; +} +#else +template +inline void debug_print_turns(TurnIterator, TurnIterator) +{} +#endif // BOOST_GEOMETRY_TEST_DEBUG + +}} // namespace detail::is_valid + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_DEBUG_PRINT_TURNS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp new file mode 100644 index 0000000000..6f1c263646 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/debug_validity_phase.hpp @@ -0,0 +1,68 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_DEBUG_VALIDITY_PHASE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_DEBUG_VALIDITY_PHASE_HPP + +#ifdef GEOMETRY_TEST_DEBUG +#include + +#include +#include +#endif + + +namespace boost { namespace geometry +{ + +namespace detail { namespace is_valid +{ + +template ::type> +struct debug_validity_phase +{ + static inline void apply(int) + { + } +}; + +#ifdef BOOST_GEOMETRY_TEST_DEBUG +template +struct debug_validity_phase +{ + static inline void apply(int phase) + { + switch (phase) + { + case 1: + std::cout << "checking exterior ring..." << std::endl; + break; + case 2: + std::cout << "checking interior rings..." << std::endl; + break; + case 3: + std::cout << "computing and analyzing turns..." << std::endl; + break; + case 4: + std::cout << "checking if holes are inside the exterior ring..." + << std::endl; + break; + case 5: + std::cout << "checking connectivity of interior..." << std::endl; + break; + } + } +}; +#endif + +}} // namespace detail::is_valid + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_DEBUG_VALIDITY_PHASE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp new file mode 100644 index 0000000000..dd0922bb2b --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/has_duplicates.hpp @@ -0,0 +1,70 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_DUPLICATES_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_DUPLICATES_HPP + +#include + +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + +template +struct has_duplicates +{ + static inline bool apply(Range const& range) + { + typedef typename closeable_view::type view_type; + typedef typename boost::range_iterator::type iterator; + + view_type view(range); + + if ( boost::size(view) < 2 ) + { + return false; + } + + geometry::equal_to::type> equal; + + iterator it = boost::begin(view); + iterator next = ++boost::begin(view); + for (; next != boost::end(view); ++it, ++next) + { + if ( equal(*it, *next) ) + { + return true; + } + } + return false; + } +}; + + + +}} // namespace detail::is_valid +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_DUPLICATES_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/has_spikes.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/has_spikes.hpp new file mode 100644 index 0000000000..9b95017482 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/has_spikes.hpp @@ -0,0 +1,139 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_SPIKES_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_SPIKES_HPP + +#include + +#include + +#include + +#include + +#include + +#include +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + +template +struct equal_to +{ + Point const& m_point; + + equal_to(Point const& point) + : m_point(point) + {} + + template + inline bool operator()(OtherPoint const& other) const + { + return geometry::equals(m_point, other); + } +}; + +template +struct not_equal_to +{ + Point const& m_point; + + not_equal_to(Point const& point) + : m_point(point) + {} + + template + inline bool operator()(OtherPoint const& other) const + { + return !geometry::equals(other, m_point); + } +}; + + + +template +struct has_spikes +{ + static inline bool apply(Range const& range) + { + typedef not_equal_to::type> not_equal; + + typedef typename closeable_view::type view_type; + typedef typename boost::range_iterator::type iterator; + + view_type const view(range); + + iterator prev = boost::begin(view); + + iterator cur = std::find_if(prev, boost::end(view), not_equal(*prev)); + if ( cur == boost::end(view) ) + { + // the range has only one distinct point, so it + // cannot have a spike + return false; + } + + iterator next = std::find_if(cur, boost::end(view), not_equal(*cur)); + if ( next == boost::end(view) ) + { + // the range has only two distinct points, so it + // cannot have a spike + return false; + } + + while ( next != boost::end(view) ) + { + if ( geometry::detail::point_is_spike_or_equal(*prev, + *next, + *cur) ) + { + return true; + } + prev = cur; + cur = next; + next = std::find_if(cur, boost::end(view), not_equal(*cur)); + } + + if ( geometry::equals(range::front(view), range::back(view)) ) + { + iterator cur = boost::begin(view); + typename boost::range_reverse_iterator + < + view_type const + >::type prev = std::find_if(boost::rbegin(view), + boost::rend(view), + not_equal(range::back(view))); + iterator next = + std::find_if(cur, boost::end(view), not_equal(*cur)); + return detail::point_is_spike_or_equal(*prev, *next, *cur); + } + + return false; + } +}; + + + +}} // namespace detail::is_valid +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_SPIKES_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp new file mode 100644 index 0000000000..220a67bcd1 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/has_valid_self_turns.hpp @@ -0,0 +1,93 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_VALID_SELF_TURNS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_VALID_SELF_TURNS_HPP + +#include + +#include +#include +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + + +template +< + typename Geometry, + typename IsAcceptableTurn = is_acceptable_turn +> +class has_valid_self_turns +{ +private: + typedef typename point_type::type point_type; + + typedef typename geometry::rescale_policy_type + < + point_type + >::type rescale_policy_type; + + typedef detail::overlay::get_turn_info + < + detail::overlay::assign_null_policy + > turn_policy; + +public: + typedef detail::overlay::turn_info + < + point_type, + typename geometry::segment_ratio_type + < + point_type, + rescale_policy_type + >::type + > turn_type; + + // returns true if all turns are valid + template + static inline bool apply(Geometry const& geometry, Turns& turns) + { + rescale_policy_type robust_policy + = geometry::get_rescale_policy(geometry); + + detail::overlay::stateless_predicate_based_interrupt_policy + < + IsAcceptableTurn + > interrupt_policy; + + geometry::self_turns(geometry, + robust_policy, + turns, + interrupt_policy); + + return !interrupt_policy.has_intersections; + } +}; + + +}} // namespace detail::is_valid +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_HAS_VALID_SELF_TURNS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/implementation.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/implementation.hpp new file mode 100644 index 0000000000..4a515a3073 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/implementation.hpp @@ -0,0 +1,21 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_IMPLEMENTATION_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_IMPLEMENTATION_HPP + +#include +#include +#include +#include +#include +#include +#include + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_IMPLEMENTATION_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/interface.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/interface.hpp new file mode 100644 index 0000000000..4b232fd436 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/interface.hpp @@ -0,0 +1,78 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_INTERFACE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_INTERFACE_HPP + +#include +#include +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + +namespace resolve_variant { + +template +struct is_valid +{ + static inline bool apply(Geometry const& geometry) + { + concept::check(); + return dispatch::is_valid::apply(geometry); + } +}; + +template +struct is_valid > +{ + struct visitor : boost::static_visitor + { + template + bool operator()(Geometry const& geometry) const + { + return is_valid::apply(geometry); + } + }; + + static inline bool + apply(boost::variant const& geometry) + { + return boost::apply_visitor(visitor(), geometry); + } +}; + +} // namespace resolve_variant + + +/*! +\brief \brief_check{is valid (in the OGC sense)} +\ingroup is_valid +\tparam Geometry \tparam_geometry +\param geometry \param_geometry +\return \return_check{is valid (in the OGC sense)} + +\qbk{[include reference/algorithms/is_valid.qbk]} +*/ +template +inline bool is_valid(Geometry const& geometry) +{ + return resolve_variant::is_valid::apply(geometry); +} + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_INTERFACE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp new file mode 100644 index 0000000000..9841aafd27 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/is_acceptable_turn.hpp @@ -0,0 +1,144 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_IS_ACCEPTABLE_TURN_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_IS_ACCEPTABLE_TURN_HPP + +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + + +template +< + typename Geometry, + order_selector Order = geometry::point_order::value, + typename Tag = typename tag::type +> +struct acceptable_operation +{}; + +template +struct acceptable_operation +{ + static const detail::overlay::operation_type value = + detail::overlay::operation_union; +}; + +template +struct acceptable_operation +{ + static const detail::overlay::operation_type value = + detail::overlay::operation_intersection; +}; + +template +struct acceptable_operation +{ + static const detail::overlay::operation_type value = + detail::overlay::operation_intersection; +}; + +template +struct acceptable_operation +{ + static const detail::overlay::operation_type value = + detail::overlay::operation_union; +}; + + + + +template ::type> +struct is_acceptable_turn +{}; + +template +class is_acceptable_turn +{ +protected: + template + static inline bool check_turn(Turn const& turn, + Method method, + Operation operation) + { + return turn.method == method + && turn.operations[0].operation == operation + && turn.operations[1].operation == operation; + } + + +public: + template + static inline bool apply(Turn const& turn) + { + using namespace detail::overlay; + + if ( turn.operations[0].seg_id.ring_index + == turn.operations[0].other_id.ring_index ) + { + return false; + } + + operation_type const op = acceptable_operation::value; + + return check_turn(turn, method_touch_interior, op) + || check_turn(turn, method_touch, op) + ; + } +}; + +template +class is_acceptable_turn + : is_acceptable_turn::type> +{ +private: + typedef typename boost::range_value::type polygon; + typedef is_acceptable_turn base; + +public: + template + static inline bool apply(Turn const& turn) + { + using namespace detail::overlay; + + if ( turn.operations[0].seg_id.multi_index + == turn.operations[0].other_id.multi_index ) + { + return base::apply(turn); + } + + operation_type const op = acceptable_operation::value; + + return base::check_turn(turn, method_touch_interior, op) + || base::check_turn(turn, method_touch, op) + ; + } +}; + + +}} // namespace detail::is_valid +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_IS_ACCEPTABLE_TURN_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/linear.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/linear.hpp new file mode 100644 index 0000000000..244df9b035 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/linear.hpp @@ -0,0 +1,125 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_LINEAR_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_LINEAR_HPP + +#include + +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + + +template +struct is_valid_linestring +{ + static inline bool apply(Linestring const& linestring) + { + std::size_t num_distinct = detail::num_distinct_consecutive_points + < + Linestring, + 3u, + true, + not_equal_to::type> + >::apply(linestring); + + if ( num_distinct < 2u ) + { + return false; + } + + return num_distinct == 2u + || AllowSpikes + || !has_spikes::apply(linestring); + } +}; + + +}} // namespace detail::is_valid +#endif // DOXYGEN_NO_DETAIL + + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// A linestring is a curve. +// A curve is 1-dimensional so it has to have at least two distinct +// points. +// A curve is simple if it does not pass through the same point twice, +// with the possible exception of its two endpoints +// +// There is an option here as to whether spikes are allowed for linestrings; +// here we pass this as an additional template parameter: allow_spikes +// If allow_spikes is set to true, spikes are allowed, false otherwise. +// By default, spikes are disallowed +// +// Reference: OGC 06-103r4 (6.1.6.1) +template +struct is_valid + : detail::is_valid::is_valid_linestring +{}; + + +// A MultiLinestring is a MultiCurve +// A MultiCurve is simple if all of its elements are simple and the +// only intersections between any two elements occur at Points that +// are on the boundaries of both elements. +// +// Reference: OGC 06-103r4 (6.1.8.1; Fig. 9) +template +struct is_valid +{ + static inline bool apply(MultiLinestring const& multilinestring) + { + return detail::check_iterator_range + < + detail::is_valid::is_valid_linestring + < + typename boost::range_value::type, + AllowSpikes + >, + false // do not allow empty multilinestring + >::apply(boost::begin(multilinestring), + boost::end(multilinestring)); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_LINEAR_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/multipolygon.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/multipolygon.hpp new file mode 100644 index 0000000000..373825f232 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/multipolygon.hpp @@ -0,0 +1,292 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_MULTIPOLYGON_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_MULTIPOLYGON_HPP + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include + +#include + +#include +#include +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + + +template +class is_valid_multipolygon + : is_valid_polygon + < + typename boost::range_value::type, + AllowDuplicates, + true // check only the validity of rings + > +{ +private: + typedef is_valid_polygon + < + typename boost::range_value::type, + AllowDuplicates, + true + > base; + + + + template + static inline + bool are_polygon_interiors_disjoint(PolygonIterator polygons_first, + PolygonIterator polygons_beyond, + TurnIterator turns_first, + TurnIterator turns_beyond) + { + std::set multi_indices; + for (TurnIterator tit = turns_first; tit != turns_beyond; ++tit) + { + multi_indices.insert(tit->operations[0].seg_id.multi_index); + multi_indices.insert(tit->operations[0].other_id.multi_index); + } + + int multi_index = 0; + for (PolygonIterator it1 = polygons_first; it1 != polygons_beyond; + ++it1, ++multi_index) + { + if ( multi_indices.find(multi_index) != multi_indices.end() ) + { + continue; + } + + for (PolygonIterator it2 = polygons_first; + it2 != polygons_beyond; ++it2) + { + if ( it1 != it2 + && + geometry::within(range::front(exterior_ring(*it1)), *it2) + ) + { + return false; + } + } + } + return true; + } + + + + class has_multi_index + { + public: + has_multi_index(int multi_index) + : m_multi_index(multi_index) + {} + + template + inline bool operator()(Turn const& turn) const + { + return turn.operations[0].seg_id.multi_index == m_multi_index + && turn.operations[0].other_id.multi_index == m_multi_index; + } + + private: + int const m_multi_index; + }; + + + + template + struct has_property_per_polygon + { + template + static inline bool apply(PolygonIterator polygons_first, + PolygonIterator polygons_beyond, + TurnIterator turns_first, + TurnIterator turns_beyond) + { + int multi_index = 0; + for (PolygonIterator it = polygons_first; it != polygons_beyond; + ++it, ++multi_index) + { + has_multi_index index_predicate(multi_index); + + typedef boost::filter_iterator + < + has_multi_index, TurnIterator + > filtered_turn_iterator; + + filtered_turn_iterator filtered_turns_first(index_predicate, + turns_first, + turns_beyond); + + filtered_turn_iterator filtered_turns_beyond(index_predicate, + turns_beyond, + turns_beyond); + + if ( !Predicate::apply(*it, + filtered_turns_first, + filtered_turns_beyond) ) + { + return false; + } + } + return true; + } + }; + + + + template + static inline bool have_holes_inside(PolygonIterator polygons_first, + PolygonIterator polygons_beyond, + TurnIterator turns_first, + TurnIterator turns_beyond) + { + return has_property_per_polygon + < + typename base::has_holes_inside + >::apply(polygons_first, polygons_beyond, + turns_first, turns_beyond); + } + + + + template + static inline bool have_connected_interior(PolygonIterator polygons_first, + PolygonIterator polygons_beyond, + TurnIterator turns_first, + TurnIterator turns_beyond) + { + return has_property_per_polygon + < + typename base::has_connected_interior + >::apply(polygons_first, polygons_beyond, + turns_first, turns_beyond); + } + + +public: + static inline bool apply(MultiPolygon const& multipolygon) + { + typedef debug_validity_phase debug_phase; + + // check validity of all polygons ring + debug_phase::apply(1); + + if ( !detail::check_iterator_range + < + base, + false // do not allow empty multi-polygons + >::apply(boost::begin(multipolygon), + boost::end(multipolygon)) ) + { + return false; + } + + + // compute turns and check if all are acceptable + debug_phase::apply(2); + + typedef has_valid_self_turns has_valid_turns; + + std::deque turns; + bool has_invalid_turns = !has_valid_turns::apply(multipolygon, turns); + debug_print_turns(turns.begin(), turns.end()); + + if ( has_invalid_turns ) + { + return false; + } + + + // check if each polygon's interior rings are inside the + // exterior and not one inside the other + debug_phase::apply(3); + + if ( !have_holes_inside(boost::begin(multipolygon), + boost::end(multipolygon), + turns.begin(), + turns.end()) ) + { + return false; + } + + + // check that each polygon's interior is connected + debug_phase::apply(4); + + if ( !have_connected_interior(boost::begin(multipolygon), + boost::end(multipolygon), + turns.begin(), + turns.end()) ) + { + return false; + } + + + // check if polygon interiors are disjoint + debug_phase::apply(5); + return are_polygon_interiors_disjoint(boost::begin(multipolygon), + boost::end(multipolygon), + turns.begin(), + turns.end()); + } +}; + +}} // namespace detail::is_valid +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// Not clear what the definition is. +// Right now we check that each element is simple (in fact valid), and +// that the MultiPolygon is also valid. +// +// Reference (for validity of MultiPolygons): OGC 06-103r4 (6.1.14) +template +struct is_valid + : detail::is_valid::is_valid_multipolygon +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_MULTIPOLYGON_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/pointlike.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/pointlike.hpp new file mode 100644 index 0000000000..8a4818ef15 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/pointlike.hpp @@ -0,0 +1,62 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_POINTLIKE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_POINTLIKE_HPP + +#include + +#include + +#include + + +namespace boost { namespace geometry +{ + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + +// A point is always simple +template +struct is_valid +{ + static inline bool apply(Point const&) + { + return true; + } +}; + + + +// A MultiPoint is simple if no two Points in the MultiPoint are equal +// (have identical coordinate values in X and Y) +// +// Reference: OGC 06-103r4 (6.1.5) +template +struct is_valid +{ + static inline bool apply(MultiPoint const& multipoint) + { + return boost::size(multipoint) > 0; + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_POINTLIKE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/polygon.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/polygon.hpp new file mode 100644 index 0000000000..268b8975e2 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/polygon.hpp @@ -0,0 +1,322 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_POLYGON_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_POLYGON_HPP + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + + +template +< + typename Polygon, + bool AllowDuplicates, + bool CheckRingValidityOnly = false +> +class is_valid_polygon +{ +protected: + typedef debug_validity_phase debug_phase; + + + + template + static bool has_valid_interior_rings(InteriorRings const& interior_rings) + { + return + detail::check_iterator_range + < + detail::is_valid::is_valid_ring + < + typename boost::range_value::type, + AllowDuplicates, + false, // do not check self-intersections + true // indicate that the ring is interior + > + >::apply(boost::begin(interior_rings), + boost::end(interior_rings)); + } + + struct has_valid_rings + { + static inline bool apply(Polygon const& polygon) + { + typedef typename ring_type::type ring_type; + + // check validity of exterior ring + debug_phase::apply(1); + + if ( !detail::is_valid::is_valid_ring + < + ring_type, + AllowDuplicates, + false // do not check self intersections + >::apply(exterior_ring(polygon)) ) + { + return false; + } + + // check validity of interior rings + debug_phase::apply(2); + + return has_valid_interior_rings(geometry::interior_rings(polygon)); + } + }; + + + + + template + < + typename RingIterator, + typename ExteriorRing, + typename TurnIterator + > + static inline bool are_holes_inside(RingIterator rings_first, + RingIterator rings_beyond, + ExteriorRing const& exterior_ring, + TurnIterator turns_first, + TurnIterator turns_beyond) + { + // collect the interior ring indices that have turns with the + // exterior ring + std::set ring_indices; + for (TurnIterator tit = turns_first; tit != turns_beyond; ++tit) + { + if ( tit->operations[0].seg_id.ring_index == -1 ) + { + BOOST_ASSERT( tit->operations[0].other_id.ring_index != -1 ); + ring_indices.insert(tit->operations[0].other_id.ring_index); + } + else if ( tit->operations[0].other_id.ring_index == -1 ) + { + BOOST_ASSERT( tit->operations[0].seg_id.ring_index != -1 ); + ring_indices.insert(tit->operations[0].seg_id.ring_index); + } + } + + int ring_index = 0; + for (RingIterator it = rings_first; it != rings_beyond; + ++it, ++ring_index) + { + // do not examine interior rings that have turns with the + // exterior ring + if ( ring_indices.find(ring_index) == ring_indices.end() + && !geometry::covered_by(range::front(*it), exterior_ring) ) + { + return false; + } + } + + // collect all rings (exterior and/or interior) that have turns + for (TurnIterator tit = turns_first; tit != turns_beyond; ++tit) + { + ring_indices.insert(tit->operations[0].seg_id.ring_index); + ring_indices.insert(tit->operations[0].other_id.ring_index); + } + + ring_index = 0; + for (RingIterator it1 = rings_first; it1 != rings_beyond; + ++it1, ++ring_index) + { + // do not examine rings that are associated with turns + if ( ring_indices.find(ring_index) == ring_indices.end() ) + { + for (RingIterator it2 = rings_first; it2 != rings_beyond; ++it2) + { + if ( it1 != it2 + && geometry::within(range::front(*it1), *it2) ) + { + return false; + } + } + } + } + return true; + } + + template + < + typename InteriorRings, + typename ExteriorRing, + typename TurnIterator + > + static inline bool are_holes_inside(InteriorRings const& interior_rings, + ExteriorRing const& exterior_ring, + TurnIterator first, + TurnIterator beyond) + { + return are_holes_inside(boost::begin(interior_rings), + boost::end(interior_rings), + exterior_ring, + first, + beyond); + } + + struct has_holes_inside + { + template + static inline bool apply(Polygon const& polygon, + TurnIterator first, + TurnIterator beyond) + { + return are_holes_inside(geometry::interior_rings(polygon), + geometry::exterior_ring(polygon), + first, + beyond); + } + }; + + + + + struct has_connected_interior + { + template + static inline bool apply(Polygon const& polygon, + TurnIterator first, + TurnIterator beyond) + { + typedef typename std::iterator_traits + < + TurnIterator + >::value_type turn_type; + typedef complement_graph graph; + + graph g(geometry::num_interior_rings(polygon) + 1); + for (TurnIterator tit = first; tit != beyond; ++tit) + { + typename graph::vertex_handle v1 = g.add_vertex + ( tit->operations[0].seg_id.ring_index + 1 ); + typename graph::vertex_handle v2 = g.add_vertex + ( tit->operations[0].other_id.ring_index + 1 ); + typename graph::vertex_handle vip = g.add_vertex(tit->point); + + g.add_edge(v1, vip); + g.add_edge(v2, vip); + } + + debug_print_complement_graph(std::cout, g); + + return !g.has_cycles(); + } + }; + +public: + static inline bool apply(Polygon const& polygon) + { + if ( !has_valid_rings::apply(polygon) ) + { + return false; + } + + if ( CheckRingValidityOnly ) + { + return true; + } + + // compute turns and check if all are acceptable + debug_phase::apply(3); + + typedef has_valid_self_turns has_valid_turns; + + std::deque turns; + bool has_invalid_turns = !has_valid_turns::apply(polygon, turns); + debug_print_turns(turns.begin(), turns.end()); + + if ( has_invalid_turns ) + { + return false; + } + + // check if all interior rings are inside the exterior ring + debug_phase::apply(4); + + if ( !has_holes_inside::apply(polygon, turns.begin(), turns.end()) ) + { + return false; + } + + // check whether the interior of the polygon is a connected set + debug_phase::apply(5); + + return has_connected_interior::apply(polygon, + turns.begin(), + turns.end()); + } +}; + + +}} // namespace detail::is_valid +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// A Polygon is always a simple geometric object provided that it is valid. +// +// Reference (for validity of Polygons): OGC 06-103r4 (6.1.11.1) +template +struct is_valid + : detail::is_valid::is_valid_polygon +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_POLYGON_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/ring.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/ring.hpp new file mode 100644 index 0000000000..c88df79b05 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/ring.hpp @@ -0,0 +1,173 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_RING_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_RING_HPP + +#include +#include +#include + +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace is_valid +{ + + +// struct to check whether a ring is topologically closed +template +struct is_topologically_closed +{ + static inline bool apply(Ring const&) + { + return true; + } +}; + +template +struct is_topologically_closed +{ + static inline bool apply(Ring const& ring) + { + return geometry::equals(range::front(ring), range::back(ring)); + } +}; + + + +template +struct ring_area_predicate +{ + typedef std::greater type; +}; + +template +struct ring_area_predicate +{ + typedef std::less type; +}; + + + +template +struct is_properly_oriented +{ + typedef typename point_type::type point_type; + + typedef typename strategy::area::services::default_strategy + < + typename cs_tag::type, + point_type + >::type strategy_type; + + typedef detail::area::ring_area + < + order_as_direction::value>::value, + geometry::closure::value + > ring_area_type; + + typedef typename default_area_result::type area_result_type; + + static inline bool apply(Ring const& ring) + { + typename ring_area_predicate + < + area_result_type, IsInteriorRing + >::type predicate; + + // Check area + area_result_type const zero = area_result_type(); + return predicate(ring_area_type::apply(ring, strategy_type()), zero); + } +}; + + + +template +< + typename Ring, + bool AllowDuplicates, + bool CheckSelfIntersections = true, + bool IsInteriorRing = false +> +struct is_valid_ring +{ + static inline bool apply(Ring const& ring) + { + // return invalid if any of the following condition holds: + // (a) the ring's size is below the minimal one + // (b) the ring is not topologically closed + // (c) the ring has spikes + // (d) the ring has duplicate points (if AllowDuplicates is false) + // (e) the boundary of the ring has self-intersections + // (f) the order of the points is inconsistent with the defined order + // + // Note: no need to check if the area is zero. If this is the + // case, then the ring must have at least two spikes, which is + // checked by condition (c). + + closure_selector const closure = geometry::closure::value; + + return + ( boost::size(ring) + >= core_detail::closure::minimum_ring_size::value ) + && is_topologically_closed::apply(ring) + && (AllowDuplicates || !has_duplicates::apply(ring)) + && !has_spikes::apply(ring) + && !(CheckSelfIntersections && geometry::intersects(ring)) + && is_properly_oriented::apply(ring); + } +}; + + +}} // namespace dispatch +#endif // DOXYGEN_NO_DETAIL + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + +// A Ring is a Polygon with exterior boundary only. +// The Ring's boundary must be a LinearRing (see OGC 06-103-r4, +// 6.1.7.1, for the definition of LinearRing) +// +// Reference (for polygon validity): OGC 06-103r4 (6.1.11.1) +template +struct is_valid + : detail::is_valid::is_valid_ring +{}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_RING_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/is_valid/segment.hpp b/3party/boost/boost/geometry/algorithms/detail/is_valid/segment.hpp new file mode 100644 index 0000000000..486289dabe --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/is_valid/segment.hpp @@ -0,0 +1,61 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_SEGMENT_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_SEGMENT_HPP + +#include +#include + +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + + +// A segment is a curve. +// A curve is simple if it does not pass through the same point twice, +// with the possible exception of its two endpoints +// A curve is 1-dimensional, hence we have to check is the two +// endpoints of the segment coincide, since in this case it is +// 0-dimensional. +// +// Reference: OGC 06-103r4 (6.1.6.1) +template +struct is_valid +{ + static inline bool apply(Segment const& segment) + { + typename point_type::type p[2]; + detail::assign_point_from_index<0>(segment, p[0]); + detail::assign_point_from_index<1>(segment, p[1]); + + return !geometry::equals(p[0], p[1]); + } +}; + + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_IS_VALID_SEGMENT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/multi_modify.hpp b/3party/boost/boost/geometry/algorithms/detail/multi_modify.hpp new file mode 100644 index 0000000000..f0b9ddd3e6 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/multi_modify.hpp @@ -0,0 +1,53 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_MODIFY_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_MODIFY_HPP + + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + + +template +struct multi_modify +{ + static inline void apply(MultiGeometry& multi) + { + typedef typename boost::range_iterator::type iterator_type; + for (iterator_type it = boost::begin(multi); + it != boost::end(multi); + ++it) + { + Policy::apply(*it); + } + } +}; + + +} // namespace detail +#endif + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_MODIFY_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp b/3party/boost/boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp new file mode 100644 index 0000000000..c3787f9a10 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/multi_modify_with_predicate.hpp @@ -0,0 +1,52 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_MODIFY_WITH_PREDICATE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_MODIFY_WITH_PREDICATE_HPP + + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +template +struct multi_modify_with_predicate +{ + static inline void apply(MultiGeometry& multi, Predicate const& predicate) + { + typedef typename boost::range_iterator::type iterator_type; + for (iterator_type it = boost::begin(multi); + it != boost::end(multi); + ++it) + { + Policy::apply(*it, predicate); + } + } +}; + + +} // namespace detail +#endif + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_MODIFY_WITH_PREDICATE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/multi_sum.hpp b/3party/boost/boost/geometry/algorithms/detail/multi_sum.hpp new file mode 100644 index 0000000000..af3f425c9c --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/multi_sum.hpp @@ -0,0 +1,52 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2012 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2012 Mateusz Loskot, London, UK. + +// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library +// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_SUM_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_SUM_HPP + +#include + + +namespace boost { namespace geometry +{ +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +struct multi_sum +{ + template + static inline ReturnType apply(MultiGeometry const& geometry, Strategy const& strategy) + { + ReturnType sum = ReturnType(); + for (typename boost::range_iterator + < + MultiGeometry const + >::type it = boost::begin(geometry); + it != boost::end(geometry); + ++it) + { + sum += Policy::apply(*it, strategy); + } + return sum; + } +}; + + +} // namespace detail +#endif + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_MULTI_SUM_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp b/3party/boost/boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp new file mode 100644 index 0000000000..16fba72fe0 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/num_distinct_consecutive_points.hpp @@ -0,0 +1,93 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_NUM_DISTINCT_CONSECUTIVE_POINTS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_NUM_DISTINCT_CONSECUTIVE_POINTS_HPP + +#include + +#include + +#include + + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + + +// returns the number of distinct values in the range; +// return values are 0u through MaximumNumber, where MaximumNumber +// corresponds to MaximumNumber or more distinct values +// +// FUTURE: take into account topologically closed ranges; +// add appropriate template parameter(s) to control whether +// the closing point for topologically closed ranges is to be +// accounted for separately or not +template +< + typename Range, + std::size_t MaximumNumber, + bool AllowDuplicates /* true */, + typename NotEqualTo +> +struct num_distinct_consecutive_points +{ + static inline std::size_t apply(Range const& range) + { + typedef typename boost::range_iterator::type iterator; + + std::size_t const size = boost::size(range); + + if ( size < 2u ) + { + return (size < MaximumNumber) ? size : MaximumNumber; + } + + iterator current = boost::begin(range); + std::size_t counter(0); + do + { + ++counter; + iterator next = std::find_if(current, + boost::end(range), + NotEqualTo(*current)); + current = next; + } + while ( current != boost::end(range) && counter <= MaximumNumber ); + + return counter; + } +}; + + +template +struct num_distinct_consecutive_points +{ + static inline std::size_t apply(Range const& range) + { + std::size_t const size = boost::size(range); + return (size < MaximumNumber) ? size : MaximumNumber; + } +}; + + +} // namespace detail +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_NUM_DISTINCT_CONSECUTIVE_POINTS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/occupation_info.hpp b/3party/boost/boost/geometry/algorithms/detail/occupation_info.hpp index f4d5adac8a..92c07006f2 100644 --- a/3party/boost/boost/geometry/algorithms/detail/occupation_info.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/occupation_info.hpp @@ -1,6 +1,6 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -9,17 +9,13 @@ #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OCCUPATION_INFO_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OCCUPATION_INFO_HPP -#if ! defined(NDEBUG) -// #define BOOST_GEOMETRY_DEBUG_BUFFER_OCCUPATION -#endif - #include #include #include #include -#include +#include #include #include @@ -33,80 +29,6 @@ namespace boost { namespace geometry namespace detail { -template -class relaxed_less -{ - typedef typename geometry::coordinate_type

::type coordinate_type; - - coordinate_type epsilon; - -public : - - inline relaxed_less() - { - // TODO: adapt for ttmath, and maybe build the map in another way - // (e.g. exact constellations of segment-id's), maybe adaptive. - epsilon = std::numeric_limits::epsilon() * 100.0; - } - - inline bool operator()(P const& a, P const& b) const - { - coordinate_type const dx = math::abs(geometry::get<0>(a) - geometry::get<0>(b)); - coordinate_type const dy = math::abs(geometry::get<1>(a) - geometry::get<1>(b)); - - - if (dx < epsilon && dy < epsilon) - { - return false; - } - if (dx < epsilon) - { - return geometry::get<1>(a) < geometry::get<1>(b); - } - - return geometry::get<0>(a) < geometry::get<0>(b); - } - - inline bool equals(P const& a, P const& b) const - { - typedef typename geometry::coordinate_type

::type coordinate_type; - - coordinate_type const dx = math::abs(geometry::get<0>(a) - geometry::get<0>(b)); - coordinate_type const dy = math::abs(geometry::get<1>(a) - geometry::get<1>(b)); - - return dx < epsilon && dy < epsilon; - }; -}; - - -template -inline T calculate_angle(P1 const& from_point, P2 const& to_point) -{ - typedef P1 vector_type; - vector_type v = from_point; - geometry::subtract_point(v, to_point); - return atan2(geometry::get<1>(v), geometry::get<0>(v)); -} - -template -inline Iterator advance_circular(Iterator it, Vector const& vector, segment_identifier& seg_id, bool forward = true) -{ - int const increment = forward ? 1 : -1; - if (it == boost::begin(vector) && increment < 0) - { - it = boost::end(vector); - seg_id.segment_index = boost::size(vector); - } - it += increment; - seg_id.segment_index += increment; - if (it == boost::end(vector)) - { - seg_id.segment_index = 0; - it = boost::begin(vector); - } - return it; -} - template struct angle_info { @@ -117,207 +39,160 @@ struct angle_info int turn_index; int operation_index; Point intersection_point; - Point direction_point; - T angle; + Point point; // either incoming or outgoing point bool incoming; + bool blocked; + bool included; + + inline angle_info() + : blocked(false) + , included(false) + {} }; template class occupation_info { +public : typedef std::vector collection_type; + typedef std::vector + < + detail::left_turns::turn_angle_info + > turn_vector_type; - struct angle_sort - { - inline bool operator()(AngleInfo const& left, AngleInfo const& right) const - { - // In this case we can compare even double using equals - // return geometry::math::equals(left.angle, right.angle) - return left.angle == right.angle - ? int(left.incoming) < int(right.incoming) - : left.angle < right.angle - ; - } - }; + collection_type angles; // each turn splitted in incoming/outgoing vectors + turn_vector_type turns; + int count; -public : - collection_type angles; -private : - bool m_occupied; - bool m_calculated; - inline bool is_occupied() - { - if (boost::size(angles) <= 1) - { - return false; - } - - std::sort(angles.begin(), angles.end(), angle_sort()); - - typedef geometry::closing_iterator closing_iterator; - closing_iterator vit(angles); - closing_iterator end(angles, true); - - closing_iterator prev = vit++; - for( ; vit != end; prev = vit++) - { - if (! geometry::math::equals(prev->angle, vit->angle) - && ! prev->incoming - && vit->incoming) - { - return false; - } - } - return true; - } - -public : inline occupation_info() - : m_occupied(false) - , m_calculated(false) + : count(0) {} - template - inline void add(PointC const& map_point, Point1 const& direction_point, Point2 const& intersection_point, + template + inline void add(RobustPoint const& incoming_point, + RobustPoint const& outgoing_point, + RobustPoint const& intersection_point, int turn_index, int operation_index, - segment_identifier const& seg_id, bool incoming) + segment_identifier const& seg_id) { - //std::cout << "-> adding angle " << geometry::wkt(direction_point) << " .. " << geometry::wkt(intersection_point) << " " << int(incoming) << std::endl; - if (geometry::equals(direction_point, intersection_point)) + geometry::equal_to comparator; + if (comparator(incoming_point, intersection_point)) + { + return; + } + if (comparator(outgoing_point, intersection_point)) { - //std::cout << "EQUAL! Skipping" << std::endl; return; } AngleInfo info; - info.incoming = incoming; - info.angle = calculate_angle(direction_point, map_point); info.seg_id = seg_id; info.turn_index = turn_index; info.operation_index = operation_index; info.intersection_point = intersection_point; - info.direction_point = direction_point; - angles.push_back(info); - m_calculated = false; - } - - inline bool occupied() - { - if (! m_calculated) { - m_occupied = is_occupied(); - m_calculated = true; + info.point = incoming_point; + info.incoming = true; + angles.push_back(info); } - return m_occupied; + { + info.point = outgoing_point; + info.incoming = false; + angles.push_back(info); + } + detail::left_turns::turn_angle_info turn(seg_id, incoming_point, outgoing_point); + turn.turn_index = turn_index; + turns.push_back(turn); } - template - inline void get_left_turns( - Turns& turns, TurnSegmentIndices const& turn_segment_indices, - std::set& keep_indices) + template + inline void get_left_turns(RobustPoint const& origin, + std::vector& turns_to_keep) { - std::sort(angles.begin(), angles.end(), angle_sort()); - calculate_left_turns(angles, turns, turn_segment_indices, keep_indices); + // Sort on angle + std::sort(angles.begin(), angles.end(), + detail::left_turns::angle_less(origin)); + + // Block all turns on the right side of any turn + detail::left_turns::block_turns_on_right_sides(turns, angles); + + detail::left_turns::get_left_turns(angles, origin, turns_to_keep); + } + + template + inline bool has_rounding_issues(RobustPoint const& origin) const + { + return detail::left_turns::has_rounding_issues(angles, origin); } }; +template +inline void move_index(Pieces const& pieces, int& index, int& piece_index, int direction) +{ + BOOST_ASSERT(direction == 1 || direction == -1); + BOOST_ASSERT(piece_index >= 0 && piece_index < static_cast(boost::size(pieces)) ); + BOOST_ASSERT(index >= 0 && index < static_cast(boost::size(pieces[piece_index].robust_ring))); -template -inline void add_incoming_and_outgoing_angles(Point const& map_point, Point const& intersection_point, - Ring const& ring, + index += direction; + if (direction == -1 && index < 0) + { + piece_index--; + if (piece_index < 0) + { + piece_index = boost::size(pieces) - 1; + } + index = boost::size(pieces[piece_index].robust_ring) - 1; + } + if (direction == 1 + && index >= static_cast(boost::size(pieces[piece_index].robust_ring))) + { + piece_index++; + if (piece_index >= static_cast(boost::size(pieces))) + { + piece_index = 0; + } + index = 0; + } +} + + +template +< + typename RobustPoint, + typename Turn, + typename Pieces, + typename Info +> +inline void add_incoming_and_outgoing_angles( + RobustPoint const& intersection_point, // rescaled + Turn const& turn, + Pieces const& pieces, // using rescaled offsets of it int turn_index, int operation_index, segment_identifier seg_id, Info& info) { - typedef typename boost::range_iterator - < - Ring const - >::type iterator_type; - - int const n = boost::size(ring); - if (seg_id.segment_index >= n || seg_id.segment_index < 0) - { - return; - } - segment_identifier real_seg_id = seg_id; - iterator_type it = boost::begin(ring) + seg_id.segment_index; + geometry::equal_to comparator; - // TODO: if we use turn-info ("to", "middle"), we know if to advance without resorting to equals - relaxed_less comparator; - - if (comparator.equals(intersection_point, *it)) + // Move backward and forward + RobustPoint direction_points[2]; + for (int i = 0; i < 2; i++) { - // It should be equal only once. But otherwise we skip it (in "add") - it = advance_circular(it, ring, seg_id, false); - } - - info.add(map_point, *it, intersection_point, turn_index, operation_index, real_seg_id, true); - - if (comparator.equals(intersection_point, *it)) - { - it = advance_circular(it, ring, real_seg_id); - } - else - { - // Don't upgrade the ID - it = advance_circular(it, ring, seg_id); - } - for (int defensive_check = 0; - comparator.equals(intersection_point, *it) && defensive_check < n; - defensive_check++) - { - it = advance_circular(it, ring, real_seg_id); - } - - info.add(map_point, *it, intersection_point, turn_index, operation_index, real_seg_id, false); -} - - -// Map in two senses of the word: it is a std::map where the key is a point. -// Per point an "occupation_info" record is kept -// Used for the buffer (but will also be used for intersections/unions having complex self-tangencies) -template -class occupation_map -{ -public : - typedef std::map > map_type; - - map_type map; - std::set turn_indices; - - inline OccupationInfo& find_or_insert(Point const& point, Point& mapped_point) - { - typename map_type::iterator it = map.find(point); - if (it == boost::end(map)) + int index = turn.operations[operation_index].index_in_robust_ring; + int piece_index = turn.operations[operation_index].piece_index; + while(comparator(pieces[piece_index].robust_ring[index], intersection_point)) { - std::pair pair - = map.insert(std::make_pair(point, OccupationInfo())); - it = pair.first; + move_index(pieces, index, piece_index, i == 0 ? -1 : 1); } - mapped_point = it->first; - return it->second; + direction_points[i] = pieces[piece_index].robust_ring[index]; } - inline bool contains(Point const& point) const - { - typename map_type::const_iterator it = map.find(point); - return it != boost::end(map); - } - - inline bool contains_turn_index(int index) const - { - return turn_indices.count(index) > 0; - } - - inline void insert_turn_index(int index) - { - turn_indices.insert(index); - } -}; + info.add(direction_points[0], direction_points[1], intersection_point, + turn_index, operation_index, real_seg_id); +} } // namespace detail diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp index 2c0f88e2aa..0fd1fe4de9 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/append_no_duplicates.hpp @@ -13,7 +13,7 @@ #include #include -#include +#include @@ -29,7 +29,7 @@ template inline void append_no_duplicates(Range& range, Point const& point, bool force = false) { if (boost::size(range) == 0 - || force + || force || ! geometry::detail::equals::equals_point_point(*(boost::end(range)-1), point)) { #ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp new file mode 100644 index 0000000000..d44db17ad3 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/append_no_dups_or_spikes.hpp @@ -0,0 +1,160 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014 Oracle and/or its affiliates. + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_APPEND_NO_DUPS_OR_SPIKES_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_APPEND_NO_DUPS_OR_SPIKES_HPP + +#include + +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay +{ + +// TODO: move this / rename this +template +inline bool points_equal_or_close(Point1 const& point1, + Point2 const& point2, + RobustPolicy const& robust_policy) +{ + if (detail::equals::equals_point_point(point1, point2)) + { + return true; + } + + if (! RobustPolicy::enabled) + { + return false; + } + + // Try using specified robust policy + typedef typename geometry::robust_point_type + < + Point1, + RobustPolicy + >::type robust_point_type; + + robust_point_type point1_rob, point2_rob; + geometry::recalculate(point1_rob, point1, robust_policy); + geometry::recalculate(point2_rob, point2, robust_policy); + + return detail::equals::equals_point_point(point1_rob, point2_rob); +} + + +template +inline void append_no_dups_or_spikes(Range& range, Point const& point, + RobustPolicy const& robust_policy) +{ +#ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION + std::cout << " add: (" + << geometry::get<0>(point) << ", " << geometry::get<1>(point) << ")" + << std::endl; +#endif + // The code below thies condition checks all spikes/dups + // for geometries >= 3 points. + // So we have to check the first potential duplicate differently + if (boost::size(range) == 1 + && points_equal_or_close(*(boost::begin(range)), point, robust_policy)) + { + return; + } + + traits::push_back::apply(range, point); + + // If a point is equal, or forming a spike, remove the pen-ultimate point + // because this one caused the spike. + // If so, the now-new-pen-ultimate point can again cause a spike + // (possibly at a corner). So keep doing this. + // Besides spikes it will also avoid adding duplicates. + while(boost::size(range) >= 3 + && point_is_spike_or_equal(point, + *(boost::end(range) - 3), + *(boost::end(range) - 2), + robust_policy)) + { + // Use the Concept/traits, so resize and append again + traits::resize::apply(range, boost::size(range) - 2); + traits::push_back::apply(range, point); + } +} + +template +inline void clean_closing_dups_and_spikes(Range& range, + RobustPolicy const& robust_policy) +{ + std::size_t const minsize + = core_detail::closure::minimum_ring_size + < + geometry::closure::value + >::value; + + if (boost::size(range) <= minsize) + { + return; + } + + typedef typename boost::range_iterator::type iterator_type; + static bool const closed = geometry::closure::value == geometry::closed; + +// TODO: the following algorithm could be rewritten to first look for spikes +// and then erase some number of points from the beginning of the Range + + bool found = false; + do + { + found = false; + iterator_type first = boost::begin(range); + iterator_type second = first + 1; + iterator_type ultimate = boost::end(range) - 1; + if (closed) + { + ultimate--; + } + + // Check if closing point is a spike (this is so if the second point is + // considered as a spike w.r.t. the last segment) + if (point_is_spike_or_equal(*second, *ultimate, *first, robust_policy)) + { + range::erase(range, first); + if (closed) + { + // Remove closing last point + range::resize(range, boost::size(range) - 1); + // Add new closing point + range::push_back(range, range::front(range)); + } + found = true; + } + } while(found && boost::size(range) > minsize); +} + + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_APPEND_NO_DUPS_OR_SPIKES_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/assign_parents.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/assign_parents.hpp index 5063f49eb4..a7cbd038d2 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/assign_parents.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/assign_parents.hpp @@ -18,6 +18,10 @@ #include +#ifdef BOOST_GEOMETRY_TIME_OVERLAY +# include +#endif + namespace boost { namespace geometry { @@ -243,7 +247,7 @@ inline void assign_parents(Geometry1 const& geometry1, // a dramatic improvement (factor 5 for star_comb testcase) ring_identifier id_of_positive = vector[index_positive].id; ring_info_type& outer = ring_map[id_of_positive]; - std::size_t index = 0; + index = 0; for (vector_iterator_type it = boost::begin(vector); it != boost::end(vector); ++it, ++index) { diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp index 012b3aca30..90901dee70 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/backtrack_check_si.hpp @@ -55,8 +55,8 @@ inline void clear_visit_info(Turns& turns) struct backtrack_state { bool m_good; - - inline backtrack_state() : m_good(true) {} + + inline backtrack_state() : m_good(true) {} inline void reset() { m_good = true; } inline bool good() const { return m_good; } }; @@ -79,29 +79,30 @@ class backtrack_check_self_intersections public : typedef state state_type; - template - static inline void apply(std::size_t size_at_start, - Rings& rings, typename boost::range_value::type& ring, + template + static inline void apply(std::size_t size_at_start, + Rings& rings, Ring& ring, Turns& turns, Operation& operation, std::string const& , Geometry1 const& geometry1, Geometry2 const& geometry2, + RobustPolicy const& robust_policy, state_type& state ) { state.m_good = false; - + // Check self-intersections and throw exception if appropriate if (! state.m_checked) { state.m_checked = true; - has_self_intersections(geometry1); - has_self_intersections(geometry2); + has_self_intersections(geometry1, robust_policy); + has_self_intersections(geometry2, robust_policy); } // Make bad output clean rings.resize(size_at_start); - ring.clear(); + geometry::traits::clear::type>::apply(ring); // Reject this as a starting point operation.visited.set_rejected(); @@ -123,7 +124,7 @@ public : typedef backtrack_state state_type; template - static inline void apply(std::size_t size_at_start, + static inline void apply(std::size_t size_at_start, Rings& rings, typename boost::range_value::type& ring, Turns& turns, Operation& operation, std::string const& reason, @@ -133,7 +134,7 @@ public : ) { std::cout << " REJECT " << reason << std::endl; - + state.m_good = false; rings.resize(size_at_start); diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp deleted file mode 100644 index a365ccf90a..0000000000 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/calculate_distance_policy.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_CALCULATE_DISTANCE_POLICY_HPP -#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_CALCULATE_DISTANCE_POLICY_HPP - - -#include - - -namespace boost { namespace geometry -{ - - -#ifndef DOXYGEN_NO_DETAIL -namespace detail { namespace overlay -{ - - -/*! - \brief Policy calculating distance - \details get_turn_info has an optional policy to get some - extra information. - This policy calculates the distance (using default distance strategy) - */ -struct calculate_distance_policy -{ - static bool const include_no_turn = false; - static bool const include_degenerate = false; - static bool const include_opposite = false; - - template - < - typename Info, - typename Point1, - typename Point2, - typename IntersectionInfo, - typename DirInfo - > - static inline void apply(Info& info, Point1 const& p1, Point2 const& p2, - IntersectionInfo const&, DirInfo const&) - { - info.operations[0].enriched.distance - = geometry::comparable_distance(info.point, p1); - info.operations[1].enriched.distance - = geometry::comparable_distance(info.point, p2); - } - -}; - - -}} // namespace detail::overlay -#endif //DOXYGEN_NO_DETAIL - - -}} // namespace boost::geometry - - -#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_CALCULATE_DISTANCE_POLICY_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/check_enrich.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/check_enrich.hpp index b210fd04b1..03be18e07a 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/check_enrich.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/check_enrich.hpp @@ -137,7 +137,7 @@ inline bool check_graph(TurnPoints& turn_points, operation_type for_operation) it != boost::end(meta_turns); ++it) { - if (! (it->turn->blocked() || it->turn->is_discarded())) + if (! (it->turn->blocked() || it->turn->discarded)) { for (int i = 0 ; i < 2; i++) { diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp index 5e18d0453a..4040fbe6b1 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/copy_segment_point.hpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -124,6 +125,30 @@ struct copy_segment_point_box }; +template +< + typename MultiGeometry, + typename SegmentIdentifier, + typename PointOut, + typename Policy +> +struct copy_segment_point_multi +{ + static inline bool apply(MultiGeometry const& multi, + SegmentIdentifier const& seg_id, bool second, + PointOut& point) + { + + BOOST_ASSERT + ( + seg_id.multi_index >= 0 + && seg_id.multi_index < int(boost::size(multi)) + ); + + // Call the single-version + return Policy::apply(multi[seg_id.multi_index], seg_id, second, point); + } +}; }} // namespace detail::copy_segments @@ -188,6 +213,66 @@ struct copy_segment_point {}; +template +< + typename MultiGeometry, + bool Reverse, + typename SegmentIdentifier, + typename PointOut +> +struct copy_segment_point + < + multi_polygon_tag, + MultiGeometry, + Reverse, + SegmentIdentifier, + PointOut + > + : detail::copy_segments::copy_segment_point_multi + < + MultiGeometry, + SegmentIdentifier, + PointOut, + detail::copy_segments::copy_segment_point_polygon + < + typename boost::range_value::type, + Reverse, + SegmentIdentifier, + PointOut + > + > +{}; + +template +< + typename MultiGeometry, + bool Reverse, + typename SegmentIdentifier, + typename PointOut +> +struct copy_segment_point + < + multi_linestring_tag, + MultiGeometry, + Reverse, + SegmentIdentifier, + PointOut + > + : detail::copy_segments::copy_segment_point_multi + < + MultiGeometry, + SegmentIdentifier, + PointOut, + detail::copy_segments::copy_segment_point_range + < + typename boost::range_value::type, + Reverse, + SegmentIdentifier, + PointOut + > + > +{}; + } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/copy_segments.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/copy_segments.hpp index 805f3923e3..d4bf0a90f4 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/copy_segments.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/copy_segments.hpp @@ -1,6 +1,11 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014 Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -10,24 +15,30 @@ #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_COPY_SEGMENTS_HPP -#include -#include #include +#include #include +#include #include +#include #include #include #include #include +#include +#include +#include #include #include #include #include #include +#include + namespace boost { namespace geometry { @@ -38,34 +49,37 @@ namespace detail { namespace copy_segments { -template -< - typename Ring, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut -> +template struct copy_segments_ring { - typedef typename closeable_view + template + < + typename Ring, + typename SegmentIdentifier, + typename RobustPolicy, + typename RangeOut + > + static inline void apply(Ring const& ring, + SegmentIdentifier const& seg_id, int to_index, + RobustPolicy const& robust_policy, + RangeOut& current_output) + { + typedef typename closeable_view < Ring const, closure::value >::type cview_type; - typedef typename reversible_view + typedef typename reversible_view < cview_type const, Reverse ? iterate_reverse : iterate_forward >::type rview_type; - typedef typename boost::range_iterator::type iterator; - typedef geometry::ever_circling_iterator ec_iterator; + typedef typename boost::range_iterator::type iterator; + typedef geometry::ever_circling_iterator ec_iterator; + - static inline void apply(Ring const& ring, - SegmentIdentifier const& seg_id, int to_index, - RangeOut& current_output) - { cview_type cview(ring); rview_type view(cview); @@ -93,31 +107,55 @@ struct copy_segments_ring for (size_type i = 0; i < count; ++i, ++it) { - detail::overlay::append_no_duplicates(current_output, *it); + detail::overlay::append_no_dups_or_spikes(current_output, *it, robust_policy); } } }; -template -< - typename LineString, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut -> -struct copy_segments_linestring +template +class copy_segments_linestring { +private: + // remove spikes + template + static inline void append_to_output(RangeOut& current_output, + Point const& point, + RobustPolicy const& robust_policy, + boost::true_type const&) + { + detail::overlay::append_no_dups_or_spikes(current_output, point, + robust_policy); + } - typedef typename boost::range_iterator::type iterator; + // keep spikes + template + static inline void append_to_output(RangeOut& current_output, + Point const& point, + RobustPolicy const&, + boost::false_type const&) + { + detail::overlay::append_no_duplicates(current_output, point); + } +public: + template + < + typename LineString, + typename SegmentIdentifier, + typename RobustPolicy, + typename RangeOut + > static inline void apply(LineString const& ls, SegmentIdentifier const& seg_id, int to_index, + RobustPolicy const& robust_policy, RangeOut& current_output) { int const from_index = seg_id.segment_index + 1; // Sanity check - if (from_index > to_index || from_index < 0 || to_index >= int(boost::size(ls))) + if ( from_index > to_index + || from_index < 0 + || to_index >= int(boost::size(ls)) ) { return; } @@ -125,58 +163,59 @@ struct copy_segments_linestring typedef typename boost::range_difference::type size_type; size_type const count = to_index - from_index + 1; - typename boost::range_iterator::type it = boost::begin(ls) + from_index; + typename boost::range_iterator::type + it = boost::begin(ls) + from_index; for (size_type i = 0; i < count; ++i, ++it) { - detail::overlay::append_no_duplicates(current_output, *it); + append_to_output(current_output, *it, robust_policy, + boost::integral_constant()); } } }; -template -< - typename Polygon, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut -> +template struct copy_segments_polygon { + template + < + typename Polygon, + typename SegmentIdentifier, + typename RobustPolicy, + typename RangeOut + > static inline void apply(Polygon const& polygon, SegmentIdentifier const& seg_id, int to_index, + RobustPolicy const& robust_policy, RangeOut& current_output) { // Call ring-version with the right ring - copy_segments_ring - < - typename geometry::ring_type::type, - Reverse, - SegmentIdentifier, - RangeOut - >::apply - ( - seg_id.ring_index < 0 - ? geometry::exterior_ring(polygon) - : geometry::interior_rings(polygon)[seg_id.ring_index], - seg_id, to_index, - current_output - ); + copy_segments_ring::apply + ( + seg_id.ring_index < 0 + ? geometry::exterior_ring(polygon) + : geometry::interior_rings(polygon)[seg_id.ring_index], + seg_id, to_index, + robust_policy, + current_output + ); } }; -template -< - typename Box, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut -> +template struct copy_segments_box { + template + < + typename Box, + typename SegmentIdentifier, + typename RobustPolicy, + typename RangeOut + > static inline void apply(Box const& box, SegmentIdentifier const& seg_id, int to_index, + RobustPolicy const& robust_policy, RangeOut& current_output) { int index = seg_id.segment_index + 1; @@ -195,13 +234,45 @@ struct copy_segments_box // (see comments in ring-version) for (int i = 0; i < count; i++, index++) { - detail::overlay::append_no_duplicates(current_output, bp[index % 5]); + detail::overlay::append_no_dups_or_spikes(current_output, + bp[index % 5], robust_policy); } } }; +template +struct copy_segments_multi +{ + template + < + typename MultiGeometry, + typename SegmentIdentifier, + typename RobustPolicy, + typename RangeOut + > + static inline void apply(MultiGeometry const& multi_geometry, + SegmentIdentifier const& seg_id, int to_index, + RobustPolicy const& robust_policy, + RangeOut& current_output) + { + + BOOST_ASSERT + ( + seg_id.multi_index >= 0 + && seg_id.multi_index < int(boost::size(multi_geometry)) + ); + + // Call the single-version + Policy::apply(multi_geometry[seg_id.multi_index], + seg_id, to_index, + robust_policy, + current_output); + } +}; + + }} // namespace detail::copy_segments #endif // DOXYGEN_NO_DETAIL @@ -213,80 +284,42 @@ namespace dispatch template < typename Tag, - typename GeometryIn, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut + bool Reverse > -struct copy_segments -{ - BOOST_MPL_ASSERT_MSG - ( - false, NOT_OR_NOT_YET_IMPLEMENTED_FOR_THIS_GEOMETRY_TYPE - , (types) - ); -}; - - -template -< - typename Ring, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut -> -struct copy_segments - : detail::copy_segments::copy_segments_ring - < - Ring, Reverse, SegmentIdentifier, RangeOut - > +struct copy_segments : not_implemented {}; - -template -< - typename LineString, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut -> -struct copy_segments - : detail::copy_segments::copy_segments_linestring - < - LineString, Reverse, SegmentIdentifier, RangeOut - > -{}; - -template -< - typename Polygon, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut -> -struct copy_segments - : detail::copy_segments::copy_segments_polygon - < - Polygon, Reverse, SegmentIdentifier, RangeOut - > +template +struct copy_segments + : detail::copy_segments::copy_segments_ring {}; -template -< - typename Box, - bool Reverse, - typename SegmentIdentifier, - typename RangeOut -> -struct copy_segments - : detail::copy_segments::copy_segments_box - < - Box, Reverse, SegmentIdentifier, RangeOut - > +template +struct copy_segments + : detail::copy_segments::copy_segments_linestring {}; +template +struct copy_segments + : detail::copy_segments::copy_segments_polygon +{}; + + +template +struct copy_segments + : detail::copy_segments::copy_segments_box +{}; + + +template +struct copy_segments + : detail::copy_segments::copy_segments_multi + < + detail::copy_segments::copy_segments_polygon + > +{}; } // namespace dispatch @@ -303,10 +336,12 @@ template bool Reverse, typename Geometry, typename SegmentIdentifier, + typename RobustPolicy, typename RangeOut > inline void copy_segments(Geometry const& geometry, SegmentIdentifier const& seg_id, int to_index, + RobustPolicy const& robust_policy, RangeOut& range_out) { concept::check(); @@ -314,11 +349,8 @@ inline void copy_segments(Geometry const& geometry, dispatch::copy_segments < typename tag::type, - Geometry, - Reverse, - SegmentIdentifier, - RangeOut - >::apply(geometry, seg_id, to_index, range_out); + Reverse + >::apply(geometry, seg_id, to_index, robust_policy, range_out); } diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/do_reverse.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/do_reverse.hpp new file mode 100644 index 0000000000..15100f8d0b --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/do_reverse.hpp @@ -0,0 +1,47 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_DO_REVERSE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_DO_REVERSE_HPP + +#include + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay +{ + +// Metafunction helper for intersection and union +template +struct do_reverse {}; + +template <> +struct do_reverse : boost::false_type {}; + +template <> +struct do_reverse : boost::true_type {}; + +template <> +struct do_reverse : boost::true_type {}; + +template <> +struct do_reverse : boost::false_type {}; + + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_DO_REVERSE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp index 00b7a5c3a9..9f4dd218de 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/enrich_intersection_points.hpp @@ -29,6 +29,7 @@ #include #include #include +#include #ifdef BOOST_GEOMETRY_DEBUG_ENRICH # include #endif @@ -75,19 +76,22 @@ template typename TurnPoints, typename Indexed, typename Geometry1, typename Geometry2, + typename RobustPolicy, bool Reverse1, bool Reverse2, typename Strategy > -struct sort_on_segment_and_distance +struct sort_on_segment_and_ratio { - inline sort_on_segment_and_distance(TurnPoints const& turn_points + inline sort_on_segment_and_ratio(TurnPoints const& turn_points , Geometry1 const& geometry1 , Geometry2 const& geometry2 + , RobustPolicy const& robust_policy , Strategy const& strategy , bool* clustered) : m_turn_points(turn_points) , m_geometry1(geometry1) , m_geometry2(geometry2) + , m_robust_policy(robust_policy) , m_strategy(strategy) , m_clustered(clustered) { @@ -98,13 +102,25 @@ private : TurnPoints const& m_turn_points; Geometry1 const& m_geometry1; Geometry2 const& m_geometry2; + RobustPolicy const& m_robust_policy; Strategy const& m_strategy; mutable bool* m_clustered; - inline bool consider_relative_order(Indexed const& left, - Indexed const& right) const + typedef typename geometry::point_type::type point_type; + typedef typename geometry::robust_point_type + < + point_type, + RobustPolicy + >::type robust_point_type; + + // TODO: this function is shared with handle_tangencies + // The one in handle_tangencies will go as soon as we have + // reliable "cluster_info" (using occupation_map, get_left_turns) + inline void get_situation_map(Indexed const& left, Indexed const& right, + robust_point_type& pi_rob, robust_point_type& pj_rob, + robust_point_type& ri_rob, robust_point_type& rj_rob, + robust_point_type& si_rob, robust_point_type& sj_rob) const { - typedef typename geometry::point_type::type point_type; point_type pi, pj, ri, rj, si, sj; geometry::copy_segment_points(m_geometry1, m_geometry2, @@ -117,10 +133,23 @@ private : right.subject.other_id, si, sj); + geometry::recalculate(pi_rob, pi, m_robust_policy); + geometry::recalculate(pj_rob, pj, m_robust_policy); + geometry::recalculate(ri_rob, ri, m_robust_policy); + geometry::recalculate(rj_rob, rj, m_robust_policy); + geometry::recalculate(si_rob, si, m_robust_policy); + geometry::recalculate(sj_rob, sj, m_robust_policy); + } + + inline bool consider_relative_order(Indexed const& left, + Indexed const& right) const + { + robust_point_type pi, pj, ri, rj, si, sj; + get_situation_map(left, right, pi, pj, ri, rj, si, sj); int const order = get_relative_order < - point_type - >::apply(pi, pj,ri, rj, si, sj); + robust_point_type + >::apply(pi, pj, ri, rj, si, sj); //debug("r/o", order == -1); return order == -1; } @@ -137,12 +166,13 @@ public : if (sl == sr) { // Both left and right are located on the SAME segment. - typedef typename geometry::coordinate_type::type coordinate_type; - coordinate_type diff = geometry::math::abs(left.subject.enriched.distance - right.subject.enriched.distance); - if (diff < geometry::math::relaxed_epsilon(10)) + if (left.subject.fraction == right.subject.fraction) { // First check "real" intersection (crosses) // -> distance zero due to precision, solve it by sorting + // TODO: reconsider this. Using integer maths, this will + // ALWAYS return 0 because either fractions are different, or + // the (currently calculated) relative-order is identical if (m_turn_points[left.index].method == method_crosses && m_turn_points[right.index].method == method_crosses) { @@ -152,14 +182,11 @@ public : // If that is not the case, cluster it later on. // Indicate that this is necessary. *m_clustered = true; - - return left.subject.enriched.distance < right.subject.enriched.distance; } } return sl == sr - ? left.subject.enriched.distance < right.subject.enriched.distance + ? left.subject.fraction < right.subject.fraction : sl < sr; - } }; @@ -197,12 +224,14 @@ template typename Container, typename TurnPoints, typename Geometry1, typename Geometry2, + typename RobustPolicy, typename Strategy > inline void enrich_sort(Container& operations, TurnPoints& turn_points, operation_type for_operation, Geometry1 const& geometry1, Geometry2 const& geometry2, + RobustPolicy const& robust_policy, Strategy const& strategy) { typedef typename IndexType::type operations_type; @@ -210,14 +239,15 @@ inline void enrich_sort(Container& operations, bool clustered = false; std::sort(boost::begin(operations), boost::end(operations), - sort_on_segment_and_distance + sort_on_segment_and_ratio < TurnPoints, IndexType, Geometry1, Geometry2, + RobustPolicy, Reverse1, Reverse2, Strategy - >(turn_points, geometry1, geometry2, strategy, &clustered)); + >(turn_points, geometry1, geometry2, robust_policy, strategy, &clustered)); // DONT'T discard xx / (for union) ix / ii / (for intersection) ux / uu here // It would give way to "lonely" ui turn points, traveling all @@ -240,8 +270,7 @@ inline void enrich_sort(Container& operations, if (prev_op.seg_id == op.seg_id && (turn_points[prev->index].method != method_crosses || turn_points[it->index].method != method_crosses) - && geometry::math::equals(prev_op.enriched.distance, - op.enriched.distance)) + && prev_op.fraction == op.fraction) { if (begin_cluster == boost::end(operations)) { @@ -251,14 +280,14 @@ inline void enrich_sort(Container& operations, else if (begin_cluster != boost::end(operations)) { handle_cluster(begin_cluster, it, turn_points, - for_operation, geometry1, geometry2, strategy); + for_operation, geometry1, geometry2, robust_policy, strategy); begin_cluster = boost::end(operations); } } if (begin_cluster != boost::end(operations)) { handle_cluster(begin_cluster, it, turn_points, - for_operation, geometry1, geometry2, strategy); + for_operation, geometry1, geometry2, robust_policy, strategy); } } @@ -348,7 +377,7 @@ inline void enrich_assign(Container& operations, std::cout << it->index << " meth: " << method_char(turn_points[it->index].method) << " seg: " << op.seg_id - << " dst: " << boost::numeric_cast(op.enriched.distance) + << " dst: " << op.fraction // needs define << " op: " << operation_char(turn_points[it->index].operations[0].operation) << operation_char(turn_points[it->index].operations[1].operation) << " dsc: " << (turn_points[it->index].discarded ? "T" : "F") @@ -424,6 +453,7 @@ inline void create_map(TurnPoints const& turn_points, MappedVector& mapped_vecto \param for_operation operation_type (union or intersection) \param geometry1 \param_geometry \param geometry2 \param_geometry +\param robust_policy policy to handle robustness issues \param strategy strategy */ template @@ -431,11 +461,13 @@ template bool Reverse1, bool Reverse2, typename TurnPoints, typename Geometry1, typename Geometry2, + typename RobustPolicy, typename Strategy > inline void enrich_intersection_points(TurnPoints& turn_points, detail::overlay::operation_type for_operation, Geometry1 const& geometry1, Geometry2 const& geometry2, + RobustPolicy const& robust_policy, Strategy const& strategy) { typedef typename boost::range_value::type turn_point_type; @@ -464,6 +496,10 @@ inline void enrich_intersection_points(TurnPoints& turn_points, { it->discarded = true; } + if (it->both(detail::overlay::operation_none)) + { + it->discarded = true; + } } @@ -486,7 +522,7 @@ inline void enrich_intersection_points(TurnPoints& turn_points, << mit->first << std::endl; #endif detail::overlay::enrich_sort(mit->second, turn_points, for_operation, - geometry1, geometry2, strategy); + geometry1, geometry2, robust_policy, strategy); } for (typename mapped_vector_type::iterator mit diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp index 8c8ed96189..6668c99249 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/enrichment_info.hpp @@ -10,9 +10,6 @@ #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_ENRICHMENT_INFO_HPP -#include - - namespace boost { namespace geometry { @@ -31,23 +28,10 @@ namespace detail { namespace overlay template struct enrichment_info { - typedef typename strategy::distance::services::return_type - < - typename strategy::distance::services::comparable_type - < - typename strategy::distance::services::default_strategy - < - point_tag, - P - >::type - >::type - >::type distance_type; - inline enrichment_info() : travels_to_vertex_index(-1) , travels_to_ip_index(-1) , next_ip_index(-1) - , distance(distance_type()) {} // vertex to which is free travel after this IP, @@ -60,8 +44,6 @@ struct enrichment_info // index of next IP on this segment, -1 if there is no one int next_ip_index; - - distance_type distance; // distance-measurement from segment.first to IP }; diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/follow.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/follow.hpp index b110cc9602..632f79f40e 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/follow.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/follow.hpp @@ -1,6 +1,11 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014 Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -20,6 +25,7 @@ #include #include +#include namespace boost { namespace geometry @@ -32,7 +38,7 @@ namespace detail { namespace overlay namespace following { - + template static inline bool is_entering(Turn const& /* TODO remove this parameter */, Operation const& op) { @@ -44,43 +50,43 @@ static inline bool is_entering(Turn const& /* TODO remove this parameter */, Ope ; } -template +template < - typename Turn, - typename Operation, - typename LineString, + typename Turn, + typename Operation, + typename LineString, typename Polygon > -static inline bool last_covered_by(Turn const& turn, Operation const& op, +static inline bool last_covered_by(Turn const& turn, Operation const& op, LineString const& linestring, Polygon const& polygon) { - // Check any point between the this one and the first IP + // Check any point between the this one and the first IP typedef typename geometry::point_type::type point_type; point_type point_in_between; detail::point_on_border::midpoint_helper < point_type, 0, dimension::value - >::apply(point_in_between, linestring[op.seg_id.segment_index], turn.point); + >::apply(point_in_between, *(::boost::begin(linestring) + op.seg_id.segment_index), turn.point); return geometry::covered_by(point_in_between, polygon); } -template +template < - typename Turn, - typename Operation, - typename LineString, + typename Turn, + typename Operation, + typename LineString, typename Polygon > -static inline bool is_leaving(Turn const& turn, Operation const& op, - bool entered, bool first, +static inline bool is_leaving(Turn const& turn, Operation const& op, + bool entered, bool first, LineString const& linestring, Polygon const& polygon) { if (op.operation == operation_union) { - return entered + return entered || turn.method == method_crosses || (first && last_covered_by(turn, op, linestring, polygon)) ; @@ -89,20 +95,20 @@ static inline bool is_leaving(Turn const& turn, Operation const& op, } -template +template < - typename Turn, - typename Operation, - typename LineString, + typename Turn, + typename Operation, + typename LineString, typename Polygon > -static inline bool is_staying_inside(Turn const& turn, Operation const& op, - bool entered, bool first, +static inline bool is_staying_inside(Turn const& turn, Operation const& op, + bool entered, bool first, LineString const& linestring, Polygon const& polygon) { if (turn.method == method_crosses) { - // The normal case, this is completely covered with entering/leaving + // The normal case, this is completely covered with entering/leaving // so stay out of this time consuming "covered_by" return false; } @@ -115,11 +121,11 @@ static inline bool is_staying_inside(Turn const& turn, Operation const& op, return false; } -template +template < - typename Turn, - typename Operation, - typename Linestring, + typename Turn, + typename Operation, + typename Linestring, typename Polygon > static inline bool was_entered(Turn const& turn, Operation const& op, bool first, @@ -134,7 +140,7 @@ static inline bool was_entered(Turn const& turn, Operation const& op, bool first // Template specialization structure to call the right actions for the right type -template +template struct action_selector { // If you get here the overlay type is not intersection or difference @@ -142,51 +148,86 @@ struct action_selector }; // Specialization for intersection, containing the implementation -template<> -struct action_selector +template +struct action_selector { template < - typename OutputIterator, - typename LineStringOut, - typename LineString, - typename Point, - typename Operation + typename OutputIterator, + typename LineStringOut, + typename LineString, + typename Point, + typename Operation, + typename RobustPolicy > static inline void enter(LineStringOut& current_piece, - LineString const& , + LineString const& , segment_identifier& segment_id, int , Point const& point, - Operation const& operation, OutputIterator& ) + Operation const& operation, + RobustPolicy const& , + OutputIterator& ) { // On enter, append the intersection point and remember starting point + // TODO: we don't check on spikes for linestrings (?). Consider this. detail::overlay::append_no_duplicates(current_piece, point); segment_id = operation.seg_id; } template < - typename OutputIterator, - typename LineStringOut, - typename LineString, - typename Point, - typename Operation + typename OutputIterator, + typename LineStringOut, + typename LineString, + typename Point, + typename Operation, + typename RobustPolicy > static inline void leave(LineStringOut& current_piece, LineString const& linestring, segment_identifier& segment_id, int index, Point const& point, - Operation const& , OutputIterator& out) + Operation const& , + RobustPolicy const& robust_policy, + OutputIterator& out) { // On leave, copy all segments from starting point, append the intersection point // and add the output piece - geometry::copy_segments(linestring, segment_id, index, current_piece); + detail::copy_segments::copy_segments_linestring + < + false, RemoveSpikes + >::apply(linestring, segment_id, index, robust_policy, current_piece); detail::overlay::append_no_duplicates(current_piece, point); - if (current_piece.size() > 1) + if (::boost::size(current_piece) > 1) { *out++ = current_piece; } - current_piece.clear(); + + geometry::clear(current_piece); + } + + template + < + typename OutputIterator, + typename LineStringOut, + typename LineString, + typename Point, + typename Operation + > + static inline void isolated_point(LineStringOut&, + LineString const&, + segment_identifier&, + int, Point const& point, + Operation const& , OutputIterator& out) + { + LineStringOut isolated_point_ls; + geometry::append(isolated_point_ls, point); + +#ifndef BOOST_GEOMETRY_ALLOW_ONE_POINT_LINESTRINGS + geometry::append(isolated_point_ls, point); +#endif // BOOST_GEOMETRY_ALLOW_ONE_POINT_LINESTRINGS + + *out++ = isolated_point_ls; } static inline bool is_entered(bool entered) @@ -194,8 +235,15 @@ struct action_selector return entered; } - template - static inline bool included(Point const& point, Geometry const& geometry) + template + < + typename Point, + typename Geometry, + typename RobustPolicy + > + static inline bool included(Point const& point, + Geometry const& geometry, + RobustPolicy const& ) { return geometry::covered_by(point, geometry); } @@ -203,45 +251,67 @@ struct action_selector }; // Specialization for difference, which reverses these actions -template<> -struct action_selector +template +struct action_selector { - typedef action_selector normal_action; + typedef action_selector normal_action; template < - typename OutputIterator, - typename LineStringOut, - typename LineString, - typename Point, - typename Operation + typename OutputIterator, + typename LineStringOut, + typename LineString, + typename Point, + typename Operation, + typename RobustPolicy > - static inline void enter(LineStringOut& current_piece, - LineString const& linestring, - segment_identifier& segment_id, - int index, Point const& point, - Operation const& operation, OutputIterator& out) + static inline void enter(LineStringOut& current_piece, + LineString const& linestring, + segment_identifier& segment_id, + int index, Point const& point, + Operation const& operation, + RobustPolicy const& robust_policy, + OutputIterator& out) { - normal_action::leave(current_piece, linestring, segment_id, index, - point, operation, out); + normal_action::leave(current_piece, linestring, segment_id, index, + point, operation, robust_policy, out); } template < - typename OutputIterator, - typename LineStringOut, - typename LineString, - typename Point, - typename Operation + typename OutputIterator, + typename LineStringOut, + typename LineString, + typename Point, + typename Operation, + typename RobustPolicy > static inline void leave(LineStringOut& current_piece, LineString const& linestring, segment_identifier& segment_id, int index, Point const& point, - Operation const& operation, OutputIterator& out) + Operation const& operation, + RobustPolicy const& robust_policy, + OutputIterator& out) { normal_action::enter(current_piece, linestring, segment_id, index, - point, operation, out); + point, operation, robust_policy, out); + } + + template + < + typename OutputIterator, + typename LineStringOut, + typename LineString, + typename Point, + typename Operation + > + static inline void isolated_point(LineStringOut&, + LineString const&, + segment_identifier&, + int, Point const&, + Operation const&, OutputIterator&) + { } static inline bool is_entered(bool entered) @@ -249,10 +319,17 @@ struct action_selector return ! normal_action::is_entered(entered); } - template - static inline bool included(Point const& point, Geometry const& geometry) + template + < + typename Point, + typename Geometry, + typename RobustPolicy + > + static inline bool included(Point const& point, + Geometry const& geometry, + RobustPolicy const& robust_policy) { - return ! normal_action::included(point, geometry); + return ! normal_action::included(point, geometry, robust_policy); } }; @@ -269,12 +346,13 @@ template typename LineStringOut, typename LineString, typename Polygon, - overlay_type OverlayType + overlay_type OverlayType, + bool RemoveSpikes = true > class follow { - template + template struct sort_on_segment { // In case of turn point at the same location, we want to have continue/blocked LAST @@ -296,15 +374,15 @@ class follow inline bool use_operation(Turn const& left, Turn const& right) const { - // If they are the same, OK. + // If they are the same, OK. return operation_order(left) < operation_order(right); } inline bool use_distance(Turn const& left, Turn const& right) const { - return geometry::math::equals(left.operations[0].enriched.distance, right.operations[0].enriched.distance) + return left.operations[0].fraction == right.operations[0].fraction ? use_operation(left, right) - : left.operations[0].enriched.distance < right.operations[0].enriched.distance + : left.operations[0].fraction < right.operations[0].fraction ; } @@ -325,16 +403,33 @@ class follow public : - template - static inline bool included(Point const& point, Geometry const& geometry) + template + < + typename Point, + typename Geometry, + typename RobustPolicy + > + static inline bool included(Point const& point, + Geometry const& geometry, + RobustPolicy const& robust_policy) { - return following::action_selector::included(point, geometry); + return following::action_selector + < + OverlayType, RemoveSpikes + >::included(point, geometry, robust_policy); } - template + template + < + typename Turns, + typename OutputIterator, + typename RobustPolicy + > static inline OutputIterator apply(LineString const& linestring, Polygon const& polygon, detail::overlay::operation_type , // TODO: this parameter might be redundant - Turns& turns, OutputIterator out) + Turns& turns, + RobustPolicy const& robust_policy, + OutputIterator out) { typedef typename boost::range_iterator::type turn_iterator; typedef typename boost::range_value::type turn_type; @@ -343,7 +438,7 @@ public : typename turn_type::container_type >::type turn_operation_iterator_type; - typedef following::action_selector action; + typedef following::action_selector action; // Sort intersection points on segments-along-linestring, and distance // (like in enrich is done for poly/poly) @@ -376,27 +471,36 @@ public : debug_traverse(*it, *iit, "-> Entering"); entered = true; - action::enter(current_piece, linestring, current_segment_id, iit->seg_id.segment_index, it->point, *iit, out); + action::enter(current_piece, linestring, current_segment_id, + iit->seg_id.segment_index, it->point, *iit, + robust_policy, + out); } else if (following::is_leaving(*it, *iit, entered, first, linestring, polygon)) { debug_traverse(*it, *iit, "-> Leaving"); entered = false; - action::leave(current_piece, linestring, current_segment_id, iit->seg_id.segment_index, it->point, *iit, out); + action::leave(current_piece, linestring, current_segment_id, + iit->seg_id.segment_index, it->point, *iit, + robust_policy, + out); } first = false; } if (action::is_entered(entered)) { - geometry::copy_segments(linestring, current_segment_id, - boost::size(linestring) - 1, - current_piece); + detail::copy_segments::copy_segments_linestring + < + false, RemoveSpikes + >::apply(linestring, current_segment_id, + boost::size(linestring) - 1, robust_policy, + current_piece); } // Output the last one, if applicable - if (current_piece.size() > 1) + if (::boost::size(current_piece) > 1) { *out++ = current_piece; } diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp new file mode 100644 index 0000000000..851162bda8 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/follow_linear_linear.hpp @@ -0,0 +1,534 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_FOLLOW_LINEAR_LINEAR_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_FOLLOW_LINEAR_LINEAR_HPP + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay +{ + +namespace following { namespace linear +{ + + + + +// follower for linear/linear geometries set operations + +template +static inline bool is_entering(Turn const& turn, + Operation const& operation) +{ + if ( turn.method != method_touch && turn.method != method_touch_interior ) + { + return false; + } + return operation.operation == operation_intersection; +} + + + +template +static inline bool is_staying_inside(Turn const& turn, + Operation const& operation, + bool entered) +{ + if ( !entered ) + { + return false; + } + + if ( turn.method != method_equal && turn.method != method_collinear ) + { + return false; + } + return operation.operation == operation_continue; +} + + + +template +static inline bool is_leaving(Turn const& turn, + Operation const& operation, + bool entered) +{ + if ( !entered ) + { + return false; + } + + if ( turn.method != method_touch + && turn.method != method_touch_interior + && turn.method != method_equal + && turn.method != method_collinear ) + { + return false; + } + + if ( operation.operation == operation_blocked ) + { + return true; + } + + if ( operation.operation != operation_union ) + { + return false; + } + + return operation.is_collinear; +} + + + +template +static inline bool is_isolated_point(Turn const& turn, + Operation const& operation, + bool entered) +{ + if ( entered ) + { + return false; + } + + if ( turn.method == method_none ) + { + BOOST_ASSERT( operation.operation == operation_continue ); + return true; + } + + if ( turn.method == method_crosses ) + { + return true; + } + + if ( turn.method != method_touch && turn.method != method_touch_interior ) + { + return false; + } + + if ( operation.operation == operation_blocked ) + { + return true; + } + + if ( operation.operation != operation_union ) + { + return false; + } + + return !operation.is_collinear; +} + + + + + + + + + +template +< + typename LinestringOut, + typename Linestring, + typename Linear, + overlay_type OverlayType, + bool FollowIsolatedPoints, + bool FollowContinueTurns +> +class follow_linestring_linear_linestring +{ +protected: + // allow spikes (false indicates: do not remove spikes) + typedef following::action_selector action; + + template + < + typename TurnIterator, + typename TurnOperationIterator, + typename SegmentIdentifier, + typename OutputIterator + > + static inline OutputIterator + process_turn(TurnIterator it, + TurnOperationIterator op_it, + bool& entered, + std::size_t& enter_count, + Linestring const& linestring, + LinestringOut& current_piece, + SegmentIdentifier& current_segment_id, + OutputIterator oit) + { + // We don't rescale linear/linear + detail::no_rescale_policy robust_policy; + + if ( is_entering(*it, *op_it) ) + { + detail::turns::debug_turn(*it, *op_it, "-> Entering"); + + entered = true; + if ( enter_count == 0 ) + { + action::enter(current_piece, linestring, + current_segment_id, + op_it->seg_id.segment_index, + it->point, *op_it, robust_policy, oit); + } + ++enter_count; + } + else if ( is_leaving(*it, *op_it, entered) ) + { + detail::turns::debug_turn(*it, *op_it, "-> Leaving"); + + --enter_count; + if ( enter_count == 0 ) + { + entered = false; + action::leave(current_piece, linestring, + current_segment_id, + op_it->seg_id.segment_index, + it->point, *op_it, robust_policy, oit); + } + } + else if ( FollowIsolatedPoints + && is_isolated_point(*it, *op_it, entered) ) + { + detail::turns::debug_turn(*it, *op_it, "-> Isolated point"); + + action::isolated_point(current_piece, linestring, + current_segment_id, + op_it->seg_id.segment_index, + it->point, *op_it, oit); + } + else if ( FollowContinueTurns + && is_staying_inside(*it, *op_it, entered) ) + { + detail::turns::debug_turn(*it, *op_it, "-> Staying inside"); + + entered = true; + } + return oit; + } + + template + < + typename SegmentIdentifier, + typename OutputIterator + > + static inline OutputIterator + process_end(bool entered, + Linestring const& linestring, + SegmentIdentifier const& current_segment_id, + LinestringOut& current_piece, + OutputIterator oit) + { + if ( action::is_entered(entered) ) + { + // We don't rescale linear/linear + detail::no_rescale_policy robust_policy; + + detail::copy_segments::copy_segments_linestring + < + false, false // do not reverse; do not remove spikes + >::apply(linestring, current_segment_id, + boost::size(linestring) - 1, robust_policy, + current_piece); + } + + // Output the last one, if applicable + if (::boost::size(current_piece) > 1) + { + *oit++ = current_piece; + } + + return oit; + } + +public: + template + static inline OutputIterator + apply(Linestring const& linestring, Linear const&, + TurnIterator first, TurnIterator beyond, + OutputIterator oit) + { + // Iterate through all intersection points (they are + // ordered along the each line) + + LinestringOut current_piece; + geometry::segment_identifier current_segment_id(0, -1, -1, -1); + + bool entered = false; + std::size_t enter_count = 0; + + for (TurnIterator it = first; it != beyond; ++it) + { + oit = process_turn(it, boost::begin(it->operations), + entered, enter_count, + linestring, + current_piece, current_segment_id, + oit); + } + + BOOST_ASSERT( enter_count == 0 ); + + return process_end(entered, linestring, + current_segment_id, current_piece, + oit); + } +}; + + + + +template +< + typename LinestringOut, + typename MultiLinestring, + typename Linear, + overlay_type OverlayType, + bool FollowIsolatedPoints, + bool FollowContinueTurns +> +class follow_multilinestring_linear_linestring + : follow_linestring_linear_linestring + < + LinestringOut, + typename boost::range_value::type, + Linear, + OverlayType, + FollowIsolatedPoints, + FollowContinueTurns + > +{ +protected: + typedef typename boost::range_value::type Linestring; + + typedef follow_linestring_linear_linestring + < + LinestringOut, Linestring, Linear, + OverlayType, FollowIsolatedPoints, FollowContinueTurns + > Base; + + typedef following::action_selector action; + + typedef typename boost::range_iterator + < + MultiLinestring const + >::type linestring_iterator; + + + template + struct copy_linestrings_in_range + { + static inline OutputIt + apply(linestring_iterator, linestring_iterator, OutputIt oit) + { + return oit; + } + }; + + template + struct copy_linestrings_in_range + { + static inline OutputIt + apply(linestring_iterator first, linestring_iterator beyond, + OutputIt oit) + { + for (linestring_iterator ls_it = first; ls_it != beyond; ++ls_it) + { + LinestringOut line_out; + geometry::convert(*ls_it, line_out); + *oit++ = line_out; + } + return oit; + } + }; + + template + static inline int get_multi_index(TurnIterator it) + { + return boost::begin(it->operations)->seg_id.multi_index; + } + + class has_other_multi_id + { + private: + int m_multi_id; + + public: + has_other_multi_id(int multi_id) + : m_multi_id(multi_id) {} + + template + bool operator()(Turn const& turn) const + { + return boost::begin(turn.operations)->seg_id.multi_index + != m_multi_id; + } + }; + +public: + template + static inline OutputIterator + apply(MultiLinestring const& multilinestring, Linear const& linear, + TurnIterator first, TurnIterator beyond, + OutputIterator oit) + { + BOOST_ASSERT( first != beyond ); + + typedef copy_linestrings_in_range + < + OutputIterator, OverlayType + > copy_linestrings; + + linestring_iterator ls_first = boost::begin(multilinestring); + linestring_iterator ls_beyond = boost::end(multilinestring); + + // Iterate through all intersection points (they are + // ordered along the each linestring) + + int current_multi_id = get_multi_index(first); + + oit = copy_linestrings::apply(ls_first, + ls_first + current_multi_id, + oit); + + TurnIterator per_ls_next = first; + do { + TurnIterator per_ls_current = per_ls_next; + + // find turn with different multi-index + per_ls_next = std::find_if(per_ls_current, beyond, + has_other_multi_id(current_multi_id)); + + oit = Base::apply(*(ls_first + current_multi_id), + linear, per_ls_current, per_ls_next, oit); + + int next_multi_id(-1); + linestring_iterator ls_next = ls_beyond; + if ( per_ls_next != beyond ) + { + next_multi_id = get_multi_index(per_ls_next); + ls_next = ls_first + next_multi_id; + } + oit = copy_linestrings::apply(ls_first + current_multi_id + 1, + ls_next, + oit); + + current_multi_id = next_multi_id; + } + while ( per_ls_next != beyond ); + + return oit; + } +}; + + + + + + +template +< + typename LinestringOut, + typename Geometry1, + typename Geometry2, + overlay_type OverlayType, + bool FollowIsolatedPoints, + bool FollowContinueTurns, + typename TagOut = typename tag::type, + typename TagIn1 = typename tag::type +> +struct follow + : not_implemented +{}; + + + +template +< + typename LinestringOut, + typename Linestring, + typename Linear, + overlay_type OverlayType, + bool FollowIsolatedPoints, + bool FollowContinueTurns +> +struct follow + < + LinestringOut, Linestring, Linear, + OverlayType, FollowIsolatedPoints, FollowContinueTurns, + linestring_tag, linestring_tag + > : follow_linestring_linear_linestring + < + LinestringOut, Linestring, Linear, + OverlayType, FollowIsolatedPoints, FollowContinueTurns + > +{}; + + +template +< + typename LinestringOut, + typename MultiLinestring, + typename Linear, + overlay_type OverlayType, + bool FollowIsolatedPoints, + bool FollowContinueTurns +> +struct follow + < + LinestringOut, MultiLinestring, Linear, + OverlayType, FollowIsolatedPoints, FollowContinueTurns, + linestring_tag, multi_linestring_tag + > : follow_multilinestring_linear_linestring + < + LinestringOut, MultiLinestring, Linear, + OverlayType, FollowIsolatedPoints, FollowContinueTurns + > +{}; + + + +}} // namespace following::linear + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_FOLLOW_LINEAR_LINEAR_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp index 019c3ba3f9..63011c7d48 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_intersection_points.hpp @@ -17,6 +17,7 @@ #include +#include namespace boost { namespace geometry { @@ -35,32 +36,45 @@ template > struct get_turn_without_info { - typedef strategy_intersection - < - typename cs_tag::type, - Point1, - Point2, - typename TurnInfo::point_type - > si; - - typedef typename si::segment_intersection_strategy_type strategy; - - - - template + template static inline OutputIterator apply( - Point1 const& pi, Point1 const& pj, Point1 const& pk, - Point2 const& qi, Point2 const& qj, Point2 const& qk, + Point1 const& pi, Point1 const& pj, Point1 const& /*pk*/, + Point2 const& qi, Point2 const& qj, Point2 const& /*qk*/, + bool /*is_p_first*/, bool /*is_p_last*/, + bool /*is_q_first*/, bool /*is_q_last*/, TurnInfo const& , + RobustPolicy const& robust_policy, OutputIterator out) { + typedef strategy_intersection + < + typename cs_tag::type, + Point1, + Point2, + typename TurnInfo::point_type, + RobustPolicy + > si; + + typedef typename si::segment_intersection_strategy_type strategy; + typedef model::referring_segment segment_type1; typedef model::referring_segment segment_type2; - segment_type1 p1(pi, pj), p2(pj, pk); - segment_type2 q1(qi, qj), q2(qj, qk); + segment_type1 p1(pi, pj); + segment_type2 q1(qi, qj); - // - typename strategy::return_type result = strategy::apply(p1, q1); + typedef typename geometry::robust_point_type + < + Point1, RobustPolicy + >::type robust_point_type; + + robust_point_type pi_rob, pj_rob, qi_rob, qj_rob; + geometry::recalculate(pi_rob, pi, robust_policy); + geometry::recalculate(pj_rob, pj, robust_policy); + geometry::recalculate(qi_rob, qi, robust_policy); + geometry::recalculate(qj_rob, qj, robust_policy); + typename strategy::return_type result + = strategy::apply(p1, q1, robust_policy, + pi_rob, pj_rob, qi_rob, qj_rob); for (std::size_t i = 0; i < result.template get<0>().count; i++) { @@ -84,10 +98,12 @@ template < typename Geometry1, typename Geometry2, + typename RobustPolicy, typename Turns > inline void get_intersection_points(Geometry1 const& geometry1, Geometry2 const& geometry2, + RobustPolicy const& robust_policy, Turns& turns) { concept::check_concepts_and_equal_dimensions(); @@ -99,14 +115,6 @@ inline void get_intersection_points(Geometry1 const& geometry1, typename boost::range_value::type > TurnPolicy; - typedef typename strategy_intersection - < - typename cs_tag::type, - Geometry1, - Geometry2, - typename boost::range_value::type - >::segment_intersection_strategy_type segment_intersection_strategy_type; - detail::get_turns::no_interrupt_policy interrupt_policy; boost::mpl::if_c @@ -118,9 +126,7 @@ inline void get_intersection_points(Geometry1 const& geometry1, typename tag::type, Geometry1, Geometry2, false, false, - Turns, TurnPolicy, - //segment_intersection_strategy_type, - detail::get_turns::no_interrupt_policy + TurnPolicy >, dispatch::get_turns < @@ -128,13 +134,12 @@ inline void get_intersection_points(Geometry1 const& geometry1, typename tag::type, Geometry1, Geometry2, false, false, - Turns, TurnPolicy, - //segment_intersection_strategy_type, - detail::get_turns::no_interrupt_policy + TurnPolicy > >::type::apply( 0, geometry1, 1, geometry2, + robust_policy, turns, interrupt_policy); } diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_relative_order.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_relative_order.hpp index 522ef68382..d71f4ad51f 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/get_relative_order.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_relative_order.hpp @@ -10,8 +10,6 @@ #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_RELATIVE_ORDER_HPP -#include - #include @@ -36,15 +34,10 @@ namespace detail { namespace overlay template struct get_relative_order { - typedef strategy_intersection + typedef typename strategy::side::services::default_strategy < - typename cs_tag::type, - Point1, - Point1, - Point1 - > si; - - typedef typename si::side_strategy_type strategy; + typename cs_tag::type + >::type strategy; template static inline int value_via_product(Point const& ti, Point const& tj, diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_ring.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_ring.hpp index c2c6980577..ab9219a3d5 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/get_ring.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_ring.hpp @@ -13,11 +13,12 @@ #include #include - -#include #include #include +#include +#include #include +#include namespace boost { namespace geometry @@ -92,6 +93,25 @@ struct get_ring }; +template<> +struct get_ring +{ + template + static inline typename ring_type::type const& apply( + ring_identifier const& id, + MultiPolygon const& multi_polygon) + { + BOOST_ASSERT + ( + id.multi_index >= 0 + && id.multi_index < int(boost::size(multi_polygon)) + ); + return get_ring::apply(id, + multi_polygon[id.multi_index]); + } +}; + + }} // namespace detail::overlay #endif // DOXYGEN_NO_DETAIL diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp index 68aa62bb41..5b3a74de5a 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info.hpp @@ -16,14 +16,17 @@ #include #include +#include #include +#include +#include // Silence warning C4127: conditional expression is constant #if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable : 4127) +#pragma warning(push) +#pragma warning(disable : 4127) #endif @@ -37,7 +40,7 @@ class turn_info_exception : public geometry::exception public: // NOTE: "char" will be replaced by enum in future version - inline turn_info_exception(char const method) + inline turn_info_exception(char const method) { message = "Boost.Geometry Turn exception: "; message += method; @@ -57,7 +60,6 @@ public: namespace detail { namespace overlay { - struct base_turn_handler { // Returns true if both sides are opposite @@ -98,13 +100,32 @@ struct base_turn_handler { both(ti, condition ? operation_union : operation_intersection); } + + template + static inline void assign_point(TurnInfo& ti, + method_type method, + IntersectionInfo const& info, int index) + { + ti.method = method; + BOOST_ASSERT(index >= 0 && unsigned(index) < info.count); // TODO remove this + geometry::convert(info.intersections[index], ti.point); + ti.operations[0].fraction = info.fractions[index].robust_ra; + ti.operations[1].fraction = info.fractions[index].robust_rb; + } + + template + static inline int non_opposite_to_index(IntersectionInfo const& info) + { + return info.fractions[0].robust_rb < info.fractions[1].robust_rb + ? 1 : 0; + } + }; template < - typename TurnInfo, - typename SideStrategy + typename TurnInfo > struct touch_interior : public base_turn_handler { @@ -115,17 +136,18 @@ struct touch_interior : public base_turn_handler typename Point1, typename Point2, typename IntersectionInfo, - typename DirInfo + typename DirInfo, + typename SidePolicy > static inline void apply( - Point1 const& pi, Point1 const& pj, Point1 const& , - Point2 const& qi, Point2 const& qj, Point2 const& qk, + Point1 const& , Point1 const& , Point1 const& , + Point2 const& , Point2 const& , Point2 const& , TurnInfo& ti, IntersectionInfo const& intersection_info, - DirInfo const& dir_info) + DirInfo const& dir_info, + SidePolicy const& side) { - ti.method = method_touch_interior; - geometry::convert(intersection_info.intersections[0], ti.point); + assign_point(ti, method_touch_interior, intersection_info, 0); // Both segments of q touch segment p somewhere in its interior // 1) We know: if q comes from LEFT or RIGHT @@ -137,7 +159,7 @@ struct touch_interior : public base_turn_handler static int const index_q = 1 - Index; int const side_qi_p = dir_info.sides.template get(); - int const side_qk_p = SideStrategy::apply(pi, pj, qk); + int const side_qk_p = side.qk_wrt_p1(); if (side_qi_p == -side_qk_p) { @@ -150,7 +172,7 @@ struct touch_interior : public base_turn_handler return; } - int const side_qk_q = SideStrategy::apply(qi, qj, qk); + int const side_qk_q = side.qk_wrt_q1(); if (side_qi_p == -1 && side_qk_p == -1 && side_qk_q == 1) { @@ -210,8 +232,7 @@ struct touch_interior : public base_turn_handler template < - typename TurnInfo, - typename SideStrategy + typename TurnInfo > struct touch : public base_turn_handler { @@ -234,37 +255,34 @@ struct touch : public base_turn_handler typename Point1, typename Point2, typename IntersectionInfo, - typename DirInfo + typename DirInfo, + typename SidePolicy > static inline void apply( - Point1 const& pi, Point1 const& pj, Point1 const& pk, - Point2 const& qi, Point2 const& qj, Point2 const& qk, + Point1 const& , Point1 const& , Point1 const& , + Point2 const& , Point2 const& , Point2 const& , TurnInfo& ti, IntersectionInfo const& intersection_info, - DirInfo const& dir_info) + DirInfo const& dir_info, + SidePolicy const& side) { - ti.method = method_touch; - geometry::convert(intersection_info.intersections[0], ti.point); + assign_point(ti, method_touch, intersection_info, 0); int const side_qi_p1 = dir_info.sides.template get<1, 0>(); - int const side_qk_p1 = SideStrategy::apply(pi, pj, qk); + int const side_qk_p1 = side.qk_wrt_p1(); // If Qi and Qk are both at same side of Pi-Pj, // or collinear (so: not opposite sides) if (! opposite(side_qi_p1, side_qk_p1)) { - int const side_pk_q2 = SideStrategy::apply(qj, qk, pk); - int const side_pk_p = SideStrategy::apply(pi, pj, pk); - int const side_qk_q = SideStrategy::apply(qi, qj, qk); - - bool const both_continue = side_pk_p == 0 && side_qk_q == 0; - bool const robustness_issue_in_continue = both_continue && side_pk_q2 != 0; + int const side_pk_q2 = side.pk_wrt_q2(); + int const side_pk_p = side.pk_wrt_p1(); + int const side_qk_q = side.qk_wrt_q1(); bool const q_turns_left = side_qk_q == 1; bool const block_q = side_qk_p1 == 0 && ! same(side_qi_p1, side_qk_q) - && ! robustness_issue_in_continue ; // If Pk at same side as Qi/Qk @@ -283,7 +301,7 @@ struct touch : public base_turn_handler return; } - int const side_pk_q1 = SideStrategy::apply(qi, qj, pk); + int const side_pk_q1 = side.pk_wrt_q1(); // Collinear opposite case -> block P @@ -336,9 +354,6 @@ struct touch : public base_turn_handler else { // Pk at other side than Qi/Pk - int const side_qk_q = SideStrategy::apply(qi, qj, qk); - bool const q_turns_left = side_qk_q == 1; - ti.operations[0].operation = q_turns_left ? operation_intersection : operation_union; @@ -354,13 +369,13 @@ struct touch : public base_turn_handler else { // From left to right or from right to left - int const side_pk_p = SideStrategy::apply(pi, pj, pk); + int const side_pk_p = side.pk_wrt_p1(); bool const right_to_left = side_qk_p1 == 1; // If p turns into direction of qi (1,2) if (side_pk_p == side_qi_p1) { - int const side_pk_q1 = SideStrategy::apply(qi, qj, pk); + int const side_pk_q1 = side.pk_wrt_q1(); // Collinear opposite case -> block P if (side_pk_q1 == 0) @@ -381,7 +396,7 @@ struct touch : public base_turn_handler // If p turns into direction of qk (4,5) if (side_pk_p == side_qk_p1) { - int const side_pk_q2 = SideStrategy::apply(qj, qk, pk); + int const side_pk_q2 = side.pk_wrt_q2(); // Collinear case -> lines join, continue if (side_pk_q2 == 0) @@ -420,8 +435,7 @@ struct touch : public base_turn_handler template < - typename TurnInfo, - typename SideStrategy + typename TurnInfo > struct equal : public base_turn_handler { @@ -430,22 +444,24 @@ struct equal : public base_turn_handler typename Point1, typename Point2, typename IntersectionInfo, - typename DirInfo + typename DirInfo, + typename SidePolicy > static inline void apply( - Point1 const& pi, Point1 const& pj, Point1 const& pk, - Point2 const& , Point2 const& qj, Point2 const& qk, + Point1 const& , Point1 const& , Point1 const& , + Point2 const& , Point2 const& , Point2 const& , TurnInfo& ti, - IntersectionInfo const& intersection_info, - DirInfo const& ) + IntersectionInfo const& info, + DirInfo const& , + SidePolicy const& side) { - ti.method = method_equal; - // Copy the SECOND intersection point - geometry::convert(intersection_info.intersections[1], ti.point); + // Copy the intersection point in TO direction + assign_point(ti, method_equal, info, non_opposite_to_index(info)); + + int const side_pk_q2 = side.pk_wrt_q2(); + int const side_pk_p = side.pk_wrt_p1(); + int const side_qk_p = side.qk_wrt_p1(); - int const side_pk_q2 = SideStrategy::apply(qj, qk, pk); - int const side_pk_p = SideStrategy::apply(pi, pj, pk); - int const side_qk_p = SideStrategy::apply(pi, pj, qk); // If pk is collinear with qj-qk, they continue collinearly. // This can be on either side of p1 (== q1), or collinear @@ -454,6 +470,7 @@ struct equal : public base_turn_handler if (side_pk_q2 == 0 && side_pk_p == side_qk_p) { both(ti, operation_continue); + return; } @@ -461,8 +478,6 @@ struct equal : public base_turn_handler // If they turn to same side (not opposite sides) if (! opposite(side_pk_p, side_qk_p)) { - int const side_pk_q2 = SideStrategy::apply(qj, qk, pk); - // If pk is left of q2 or collinear: p: union, q: intersection ui_else_iu(side_pk_q2 != -1, ti); } @@ -507,7 +522,7 @@ struct equal_opposite : public base_turn_handler } for (unsigned int i = 0; i < intersection_info.count; i++) { - geometry::convert(intersection_info.intersections[i], tp.point); + assign_point(tp, method_none, intersection_info, i); AssignPolicy::apply(tp, pi, qi, intersection_info, dir_info); *out++ = tp; } @@ -517,8 +532,7 @@ struct equal_opposite : public base_turn_handler template < - typename TurnInfo, - typename SideStrategy + typename TurnInfo > struct collinear : public base_turn_handler { @@ -550,7 +564,7 @@ struct collinear : public base_turn_handler ROBUSTNESS: p and q are collinear, so you would expect that side qk//p1 == pk//q1. But that is not always the case in near-epsilon ranges. Then decision logic is different. - If p arrives, q is further, so the angle qk//p1 is (normally) + If p arrives, q is further, so the angle qk//p1 is (normally) more precise than pk//p1 */ @@ -559,24 +573,26 @@ struct collinear : public base_turn_handler typename Point1, typename Point2, typename IntersectionInfo, - typename DirInfo + typename DirInfo, + typename SidePolicy > static inline void apply( - Point1 const& pi, Point1 const& pj, Point1 const& pk, - Point2 const& qi, Point2 const& qj, Point2 const& qk, + Point1 const& , Point1 const& , Point1 const& , + Point2 const& , Point2 const& , Point2 const& , TurnInfo& ti, - IntersectionInfo const& intersection_info, - DirInfo const& dir_info) + IntersectionInfo const& info, + DirInfo const& dir_info, + SidePolicy const& side) { - ti.method = method_collinear; - geometry::convert(intersection_info.intersections[1], ti.point); + // Copy the intersection point in TO direction + assign_point(ti, method_collinear, info, non_opposite_to_index(info)); int const arrival = dir_info.arrival[0]; // Should not be 0, this is checked before BOOST_ASSERT(arrival != 0); - int const side_p = SideStrategy::apply(pi, pj, pk); - int const side_q = SideStrategy::apply(qi, qj, qk); + int const side_p = side.pk_wrt_p1(); + int const side_q = side.qk_wrt_q1(); // If p arrives, use p, else use q int const side_p_or_q = arrival == 1 @@ -584,9 +600,6 @@ struct collinear : public base_turn_handler : side_q ; - int const side_pk = SideStrategy::apply(qi, qj, pk); - int const side_qk = SideStrategy::apply(pi, pj, qk); - // See comments above, // resulting in a strange sort of mathematic rule here: // The arrival-info multiplied by the relevant side @@ -594,15 +607,7 @@ struct collinear : public base_turn_handler int const product = arrival * side_p_or_q; - // Robustness: side_p is supposed to be equal to side_pk (because p/q are collinear) - // and side_q to side_qk - bool const robustness_issue = side_pk != side_p || side_qk != side_q; - - if (robustness_issue) - { - handle_robustness(ti, arrival, side_p, side_q, side_pk, side_qk); - } - else if(product == 0) + if(product == 0) { both(ti, operation_continue); } @@ -612,43 +617,11 @@ struct collinear : public base_turn_handler } } - static inline void handle_robustness(TurnInfo& ti, int arrival, - int side_p, int side_q, int side_pk, int side_qk) - { - // We take the longer one, i.e. if q arrives in p (arrival == -1), - // then p exceeds q and we should take p for a union... - - bool use_p_for_union = arrival == -1; - - // ... unless one of the sides consistently directs to the other side - int const consistent_side_p = side_p == side_pk ? side_p : 0; - int const consistent_side_q = side_q == side_qk ? side_q : 0; - if (arrival == -1 && (consistent_side_p == -1 || consistent_side_q == 1)) - { - use_p_for_union = false; - } - if (arrival == 1 && (consistent_side_p == 1 || consistent_side_q == -1)) - { - use_p_for_union = true; - } - - //std::cout << "ROBUSTNESS -> Collinear " - // << " arr: " << arrival - // << " dir: " << side_p << " " << side_q - // << " rev: " << side_pk << " " << side_qk - // << " cst: " << cside_p << " " << cside_q - // << std::boolalpha << " " << use_p_for_union - // << std::endl; - - ui_else_iu(use_p_for_union, ti); - } - }; template < typename TurnInfo, - typename SideStrategy, typename AssignPolicy > struct collinear_opposite : public base_turn_handler @@ -684,26 +657,13 @@ private : typename Point, typename IntersectionInfo > - static inline bool set_tp(Point const& ri, Point const& rj, Point const& rk, - bool const handle_robustness, Point const& si, Point const& sj, + static inline bool set_tp(Point const& , Point const& , Point const& , int side_rk_r, + bool const handle_robustness, + Point const& , Point const& , int side_rk_s, TurnInfo& tp, IntersectionInfo const& intersection_info) { - int side_rk_r = SideStrategy::apply(ri, rj, rk); - - if (handle_robustness) - { - int const side_rk_s = SideStrategy::apply(si, sj, rk); - - // For Robustness: also calculate rk w.r.t. the other line. Because they are collinear opposite, that direction should be the reverse of the first direction. - // If this is not the case, we make it all-collinear, so zero - if (side_rk_r != 0 && side_rk_r != -side_rk_s) - { -#ifdef BOOST_GEOMETRY_DEBUG_ROBUSTNESS - std::cout << "Robustness correction: " << side_rk_r << " / " << side_rk_s << std::endl; -#endif - side_rk_r = 0; - } - } + boost::ignore_unused_variable_warning(handle_robustness); + boost::ignore_unused_variable_warning(side_rk_s); operation_type blocked = operation_blocked; switch(side_rk_r) @@ -741,18 +701,21 @@ private : // If P arrives within Q, set info on P (which is done above, index=0), // this turn-info belongs to the second intersection point, index=1 // (see e.g. figure CLO1) - geometry::convert(intersection_info.intersections[1 - Index], tp.point); + assign_point(tp, method_collinear, intersection_info, 1 - Index); return true; } public: + static inline void empty_transformer(TurnInfo &) {} + template < typename Point1, typename Point2, typename OutputIterator, typename IntersectionInfo, - typename DirInfo + typename DirInfo, + typename SidePolicy > static inline void apply( Point1 const& pi, Point1 const& pj, Point1 const& pk, @@ -763,24 +726,57 @@ public: OutputIterator& out, IntersectionInfo const& intersection_info, - DirInfo const& dir_info) + DirInfo const& dir_info, + SidePolicy const& side) + { + apply(pi, pj, pk, qi, qj, qk, tp_model, out, intersection_info, dir_info, side, empty_transformer); + } + +public: + template + < + typename Point1, + typename Point2, + typename OutputIterator, + typename IntersectionInfo, + typename DirInfo, + typename SidePolicy, + typename TurnTransformer + > + static inline void apply( + Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + + // Opposite collinear can deliver 2 intersection points, + TurnInfo const& tp_model, + OutputIterator& out, + + IntersectionInfo const& intersection_info, + DirInfo const& dir_info, + SidePolicy const& side, + TurnTransformer turn_transformer, + bool const is_pk_valid = true, bool const is_qk_valid = true) { TurnInfo tp = tp_model; - tp.method = method_collinear; - // If P arrives within Q, there is a turn dependent on P - if (dir_info.arrival[0] == 1 - && set_tp<0>(pi, pj, pk, true, qi, qj, tp, intersection_info)) + if ( dir_info.arrival[0] == 1 + && is_pk_valid + && set_tp<0>(pi, pj, pk, side.pk_wrt_p1(), true, qi, qj, side.pk_wrt_q1(), tp, intersection_info) ) { + turn_transformer(tp); + AssignPolicy::apply(tp, pi, qi, intersection_info, dir_info); *out++ = tp; } // If Q arrives within P, there is a turn dependent on Q - if (dir_info.arrival[1] == 1 - && set_tp<1>(qi, qj, qk, false, pi, pj, tp, intersection_info)) + if ( dir_info.arrival[1] == 1 + && is_qk_valid + && set_tp<1>(qi, qj, qk, side.qk_wrt_q1(), false, pi, pj, side.qk_wrt_p1(), tp, intersection_info) ) { + turn_transformer(tp); + AssignPolicy::apply(tp, pi, qi, intersection_info, dir_info); *out++ = tp; } @@ -797,7 +793,7 @@ public: } for (unsigned int i = 0; i < intersection_info.count; i++) { - geometry::convert(intersection_info.intersections[i], tp.point); + assign_point(tp, method_collinear, intersection_info, i); AssignPolicy::apply(tp, pi, qi, intersection_info, dir_info); *out++ = tp; } @@ -810,8 +806,7 @@ public: template < - typename TurnInfo, - typename SideStrategy + typename TurnInfo > struct crosses : public base_turn_handler { @@ -829,8 +824,7 @@ struct crosses : public base_turn_handler IntersectionInfo const& intersection_info, DirInfo const& dir_info) { - ti.method = method_crosses; - geometry::convert(intersection_info.intersections[0], ti.point); + assign_point(ti, method_crosses, intersection_info, 0); // In all casees: // If Q crosses P from left to right @@ -844,14 +838,12 @@ struct crosses : public base_turn_handler } }; -template -struct only_convert +struct only_convert : public base_turn_handler { - template + template static inline void apply(TurnInfo& ti, IntersectionInfo const& intersection_info) { - ti.method = method_collinear; - geometry::convert(intersection_info.intersections[0], ti.point); + assign_point(ti, method_none, intersection_info, 0); // was collinear ti.operations[0].operation = operation_continue; ti.operations[1].operation = operation_continue; } @@ -869,7 +861,7 @@ struct assign_null_policy static bool const include_degenerate = false; static bool const include_opposite = false; - template + template < typename Info, typename Point1, @@ -897,48 +889,39 @@ struct assign_null_policy It also defines if a certain class of points (degenerate, non-turns) should be included. */ -template -< - typename Point1, - typename Point2, - typename TurnInfo, - typename AssignPolicy -> +template struct get_turn_info { - typedef strategy_intersection - < - typename cs_tag::type, - Point1, - Point2, - typename TurnInfo::point_type - > si; - - typedef typename si::segment_intersection_strategy_type strategy; - // Intersect pi-pj with qi-qj - // The points pk and qk are only used do determine more information - // about the turn. - template + // The points pk and qk are used do determine more information + // about the turn (turn left/right) + template + < + typename Point1, + typename Point2, + typename TurnInfo, + typename RobustPolicy, + typename OutputIterator + > static inline OutputIterator apply( Point1 const& pi, Point1 const& pj, Point1 const& pk, Point2 const& qi, Point2 const& qj, Point2 const& qk, + bool /*is_p_first*/, bool /*is_p_last*/, + bool /*is_q_first*/, bool /*is_q_last*/, TurnInfo const& tp_model, + RobustPolicy const& robust_policy, OutputIterator out) { - typedef model::referring_segment segment_type1; - typedef model::referring_segment segment_type2; - segment_type1 p1(pi, pj), p2(pj, pk); - segment_type2 q1(qi, qj), q2(qj, qk); + typedef intersection_info + inters_info; - typename strategy::return_type result = strategy::apply(p1, q1); + inters_info inters(pi, pj, pk, qi, qj, qk, robust_policy); - char const method = result.template get<1>().how; + char const method = inters.d_info().how; // Copy, to copy possibly extended fields TurnInfo tp = tp_model; - // Select method and apply switch(method) { @@ -946,11 +929,10 @@ struct get_turn_info case 'f' : // collinear, "from" case 's' : // starts from the middle if (AssignPolicy::include_no_turn - && result.template get<0>().count > 0) + && inters.i_info().count > 0) { - only_convert::apply(tp, - result.template get<0>()); - AssignPolicy::apply(tp, pi, qi, result.template get<0>(), result.template get<1>()); + only_convert::apply(tp, inters.i_info()); + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); *out++ = tp; } break; @@ -962,70 +944,59 @@ struct get_turn_info { typedef touch_interior < - TurnInfo, - typename si::side_strategy_type + TurnInfo > policy; // If Q (1) arrives (1) - if (result.template get<1>().arrival[1] == 1) + if ( inters.d_info().arrival[1] == 1 ) { policy::template apply<0>(pi, pj, pk, qi, qj, qk, - tp, result.template get<0>(), result.template get<1>()); + tp, inters.i_info(), inters.d_info(), + inters.sides()); } else { // Swap p/q + side_calculator + < + typename inters_info::robust_point2_type, + typename inters_info::robust_point1_type + > swapped_side_calc(inters.rqi(), inters.rqj(), inters.rqk(), + inters.rpi(), inters.rpj(), inters.rpk()); policy::template apply<1>(qi, qj, qk, pi, pj, pk, - tp, result.template get<0>(), result.template get<1>()); + tp, inters.i_info(), inters.d_info(), + swapped_side_calc); } - AssignPolicy::apply(tp, pi, qi, result.template get<0>(), result.template get<1>()); + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); *out++ = tp; } break; case 'i' : { - typedef crosses - < - TurnInfo, - typename si::side_strategy_type - > policy; - - policy::apply(pi, pj, pk, qi, qj, qk, - tp, result.template get<0>(), result.template get<1>()); - AssignPolicy::apply(tp, pi, qi, result.template get<0>(), result.template get<1>()); + crosses::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info()); + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); *out++ = tp; } break; case 't' : { // Both touch (both arrive there) - typedef touch - < - TurnInfo, - typename si::side_strategy_type - > policy; - - policy::apply(pi, pj, pk, qi, qj, qk, - tp, result.template get<0>(), result.template get<1>()); - AssignPolicy::apply(tp, pi, qi, result.template get<0>(), result.template get<1>()); + touch::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); *out++ = tp; } break; case 'e': { - if (! result.template get<1>().opposite) + if ( ! inters.d_info().opposite ) { // Both equal // or collinear-and-ending at intersection point - typedef equal - < - TurnInfo, - typename si::side_strategy_type - > policy; - - policy::apply(pi, pj, pk, qi, qj, qk, - tp, result.template get<0>(), result.template get<1>()); - AssignPolicy::apply(tp, pi, qi, result.template get<0>(), result.template get<1>()); + equal::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); *out++ = tp; } else @@ -1035,40 +1006,32 @@ struct get_turn_info TurnInfo, AssignPolicy >::apply(pi, qi, - tp, out, result.template get<0>(), result.template get<1>()); + tp, out, inters.i_info(), inters.d_info()); } } break; case 'c' : { // Collinear - if (! result.template get<1>().opposite) + if ( ! inters.d_info().opposite ) { - if (result.template get<1>().arrival[0] == 0) + if ( inters.d_info().arrival[0] == 0 ) { // Collinear, but similar thus handled as equal - equal - < - TurnInfo, - typename si::side_strategy_type - >::apply(pi, pj, pk, qi, qj, qk, - tp, result.template get<0>(), result.template get<1>()); + equal::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); // override assigned method tp.method = method_collinear; } else { - collinear - < - TurnInfo, - typename si::side_strategy_type - >::apply(pi, pj, pk, qi, qj, qk, - tp, result.template get<0>(), result.template get<1>()); + collinear::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); } - AssignPolicy::apply(tp, pi, qi, result.template get<0>(), result.template get<1>()); + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); *out++ = tp; } else @@ -1076,10 +1039,9 @@ struct get_turn_info collinear_opposite < TurnInfo, - typename si::side_strategy_type, AssignPolicy >::apply(pi, pj, pk, qi, qj, qk, - tp, out, result.template get<0>(), result.template get<1>()); + tp, out, inters.i_info(), inters.d_info(), inters.sides()); } } break; @@ -1088,14 +1050,17 @@ struct get_turn_info // degenerate points if (AssignPolicy::include_degenerate) { - only_convert::apply(tp, result.template get<0>()); - AssignPolicy::apply(tp, pi, qi, result.template get<0>(), result.template get<1>()); + only_convert::apply(tp, inters.i_info()); + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); *out++ = tp; } } break; default : { +#if defined(BOOST_GEOMETRY_DEBUG_ROBUSTNESS) + std::cout << "TURN: Unknown method: " << method << std::endl; +#endif #if ! defined(BOOST_GEOMETRY_OVERLAY_NO_THROW) throw turn_info_exception(method); #endif @@ -1116,7 +1081,7 @@ struct get_turn_info #if defined(_MSC_VER) -#pragma warning(pop) +#pragma warning(pop) #endif #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp new file mode 100644 index 0000000000..6cf4d25abb --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_for_endpoint.hpp @@ -0,0 +1,661 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_FOR_ENDPOINT_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_FOR_ENDPOINT_HPP + +#include +#include + +namespace boost { namespace geometry { + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay { + +// SEGMENT_INTERSECTION RESULT + +// C H0 H1 A0 A1 O IP1 IP2 + +// D0 and D1 == 0 + +// |--------> 2 0 0 0 0 F i/i x/x +// |--------> +// +// |--------> 2 0 0 0 0 T i/x x/i +// <--------| +// +// |-----> 1 0 0 0 0 T x/x +// <-----| +// + +// |---------> 2 0 0 0 1 T i/x x/i +// <----| +// +// |---------> 2 0 0 0 0 F i/i x/x +// |----> +// +// |---------> 2 0 0 -1 1 F i/i u/x +// |----> +// +// |---------> 2 0 0 -1 0 T i/x u/i +// <----| + +// |-------> 2 0 0 1 -1 F and i/i x/u +// |-------> 2 0 0 -1 1 F symetric i/i u/x +// |-------> +// +// |-------> 2 0 0 -1 -1 T i/u u/i +// <-------| +// +// |-------> 2 0 0 1 1 T i/x x/i +// <-------| +// +// |--------> 2 0 0 -1 1 F i/i u/x +// |----> +// +// |--------> 2 0 0 -1 1 T i/x u/i +// <----| + +// |-----> 1 -1 -1 -1 -1 T u/u +// <-----| +// +// |-----> 1 -1 0 -1 0 F and u/x +// |-----> 1 0 -1 0 -1 F symetric x/u +// |-----> + +// D0 or D1 != 0 + +// ^ +// | +// + 1 -1 1 -1 1 F and u/x (P is vertical) +// |--------> 1 1 -1 1 -1 F symetric x/u (P is horizontal) +// ^ +// | +// + +// +// + +// | +// v +// |--------> 1 1 1 1 1 F x/x (P is vertical) +// +// ^ +// | +// + +// |--------> 1 -1 -1 -1 -1 F u/u (P is vertical) +// +// ^ +// | +// + +// |--------> 1 0 -1 0 -1 F u/u (P is vertical) +// +// + +// | +// v +// |--------> 1 0 1 0 1 F u/x (P is vertical) +// + +class linear_intersections +{ +public: + template + linear_intersections(Point1 const& pi, + Point2 const& qi, + IntersectionResult const& result, + bool is_p_last, bool is_q_last) + { + int arrival_a = result.template get<1>().arrival[0]; + int arrival_b = result.template get<1>().arrival[1]; + bool same_dirs = result.template get<1>().dir_a == 0 + && result.template get<1>().dir_b == 0; + + if ( same_dirs ) + { + if ( result.template get<0>().count == 2 ) + { + if ( ! result.template get<1>().opposite ) + { + ips[0].p_operation = operation_intersection; + ips[0].q_operation = operation_intersection; + ips[1].p_operation = union_or_blocked_same_dirs(arrival_a, is_p_last); + ips[1].q_operation = union_or_blocked_same_dirs(arrival_b, is_q_last); + + ips[0].is_pi + = equals::equals_point_point( + pi, result.template get<0>().intersections[0]); + ips[0].is_qi + = equals::equals_point_point( + qi, result.template get<0>().intersections[0]); + ips[1].is_pj = arrival_a != -1; + ips[1].is_qj = arrival_b != -1; + } + else + { + ips[0].p_operation = operation_intersection; + ips[0].q_operation = union_or_blocked_same_dirs(arrival_b, is_q_last); + ips[1].p_operation = union_or_blocked_same_dirs(arrival_a, is_p_last); + ips[1].q_operation = operation_intersection; + + ips[0].is_pi = arrival_b != 1; + ips[0].is_qj = arrival_b != -1; + ips[1].is_pj = arrival_a != -1; + ips[1].is_qi = arrival_a != 1; + } + } + else + { + BOOST_ASSERT(result.template get<0>().count == 1); + ips[0].p_operation = union_or_blocked_same_dirs(arrival_a, is_p_last); + ips[0].q_operation = union_or_blocked_same_dirs(arrival_b, is_q_last); + + ips[0].is_pi = arrival_a == -1; + ips[0].is_qi = arrival_b == -1; + ips[0].is_pj = arrival_a == 0; + ips[0].is_qj = arrival_b == 0; + } + } + else + { + ips[0].p_operation = union_or_blocked_different_dirs(arrival_a, is_p_last); + ips[0].q_operation = union_or_blocked_different_dirs(arrival_b, is_q_last); + + ips[0].is_pi = arrival_a == -1; + ips[0].is_qi = arrival_b == -1; + ips[0].is_pj = arrival_a == 1; + ips[0].is_qj = arrival_b == 1; + } + } + + struct ip_info + { + inline ip_info() + : p_operation(operation_none), q_operation(operation_none) + , is_pi(false), is_pj(false), is_qi(false), is_qj(false) + {} + + operation_type p_operation, q_operation; + bool is_pi, is_pj, is_qi, is_qj; + }; + + template + ip_info const& get() const + { + BOOST_STATIC_ASSERT(I < 2); + return ips[I]; + } + +private: + + // only if collinear (same_dirs) + static inline operation_type union_or_blocked_same_dirs(int arrival, bool is_last) + { + if ( arrival == 1 ) + return operation_blocked; + else if ( arrival == -1 ) + return operation_union; + else + return is_last ? operation_blocked : operation_union; + //return operation_blocked; + } + + // only if not collinear (!same_dirs) + static inline operation_type union_or_blocked_different_dirs(int arrival, bool is_last) + { + if ( arrival == 1 ) + //return operation_blocked; + return is_last ? operation_blocked : operation_union; + else + return operation_union; + } + + ip_info ips[2]; +}; + +template +struct get_turn_info_for_endpoint +{ + BOOST_STATIC_ASSERT(EnableFirst || EnableLast); + + template + static inline bool apply(Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + bool is_p_first, bool is_p_last, + bool is_q_first, bool is_q_last, + TurnInfo const& tp_model, + IntersectionInfo const& inters, + method_type /*method*/, + OutputIterator out) + { + std::size_t ip_count = inters.i_info().count; + // no intersection points + if ( ip_count == 0 ) + return false; + + int segment_index0 = tp_model.operations[0].seg_id.segment_index; + int segment_index1 = tp_model.operations[1].seg_id.segment_index; + BOOST_ASSERT(segment_index0 >= 0 && segment_index1 >= 0); + + if ( !is_p_first && !is_p_last && !is_q_first && !is_q_last ) + return false; + + linear_intersections intersections(pi, qi, inters.result(), is_p_last, is_q_last); + + bool append0_last + = analyse_segment_and_assign_ip(pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + intersections.template get<0>(), + tp_model, inters, 0, out); + + // NOTE: opposite && ip_count == 1 may be true! + bool opposite = inters.d_info().opposite; + + // don't ignore only for collinear opposite + bool result_ignore_ip0 = append0_last && ( ip_count == 1 || !opposite ); + + if ( intersections.template get<1>().p_operation == operation_none ) + return result_ignore_ip0; + + bool append1_last + = analyse_segment_and_assign_ip(pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + intersections.template get<1>(), + tp_model, inters, 1, out); + + // don't ignore only for collinear opposite + bool result_ignore_ip1 = append1_last && !opposite /*&& ip_count == 2*/; + + return result_ignore_ip0 || result_ignore_ip1; + } + + template + static inline + bool analyse_segment_and_assign_ip(Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + bool is_p_first, bool is_p_last, + bool is_q_first, bool is_q_last, + linear_intersections::ip_info const& ip_info, + TurnInfo const& tp_model, + IntersectionInfo const& inters, + int ip_index, + OutputIterator out) + { +#ifdef BOOST_GEOMETRY_DEBUG_GET_TURNS_LINEAR_LINEAR + // may this give false positives for INTs? + typename IntersectionResult::point_type const& + inters_pt = result.template get<0>().intersections[ip_index]; + BOOST_ASSERT(ip_info.is_pi == equals::equals_point_point(pi, inters_pt)); + BOOST_ASSERT(ip_info.is_qi == equals::equals_point_point(qi, inters_pt)); + BOOST_ASSERT(ip_info.is_pj == equals::equals_point_point(pj, inters_pt)); + BOOST_ASSERT(ip_info.is_qj == equals::equals_point_point(qj, inters_pt)); +#endif + + // TODO - calculate first/last only if needed + bool is_p_first_ip = is_p_first && ip_info.is_pi; + bool is_p_last_ip = is_p_last && ip_info.is_pj; + bool is_q_first_ip = is_q_first && ip_info.is_qi; + bool is_q_last_ip = is_q_last && ip_info.is_qj; + bool append_first = EnableFirst && (is_p_first_ip || is_q_first_ip); + bool append_last = EnableLast && (is_p_last_ip || is_q_last_ip); + + operation_type p_operation = ip_info.p_operation; + operation_type q_operation = ip_info.q_operation; + + if ( append_first || append_last ) + { + bool handled = handle_internal<0>(pi, pj, pk, qi, qj, qk, + inters.rpi(), inters.rpj(), inters.rpk(), + inters.rqi(), inters.rqj(), inters.rqk(), + is_p_first_ip, is_p_last_ip, + is_q_first_ip, is_q_last_ip, + ip_info.is_qi, ip_info.is_qj, + tp_model, inters, ip_index, + p_operation, q_operation); + if ( !handled ) + { + handle_internal<1>(qi, qj, qk, pi, pj, pk, + inters.rqi(), inters.rqj(), inters.rqk(), + inters.rpi(), inters.rpj(), inters.rpk(), + is_q_first_ip, is_q_last_ip, + is_p_first_ip, is_p_last_ip, + ip_info.is_pi, ip_info.is_pj, + tp_model, inters, ip_index, + q_operation, p_operation); + } + + if ( p_operation != operation_none ) + { + method_type method = endpoint_ip_method(ip_info.is_pi, ip_info.is_pj, + ip_info.is_qi, ip_info.is_qj); + turn_position p_pos = ip_position(is_p_first_ip, is_p_last_ip); + turn_position q_pos = ip_position(is_q_first_ip, is_q_last_ip); + + // handle spikes + + // P is spike and should be handled + if ( !is_p_last + && ip_info.is_pj // this check is redundant (also in is_spike_p) but faster + && inters.i_info().count == 2 + && inters.is_spike_p() ) + { + assign(pi, qi, inters.result(), ip_index, method, operation_blocked, q_operation, + p_pos, q_pos, is_p_first_ip, is_q_first_ip, true, false, tp_model, out); + assign(pi, qi, inters.result(), ip_index, method, operation_intersection, q_operation, + p_pos, q_pos, is_p_first_ip, is_q_first_ip, true, false, tp_model, out); + } + // Q is spike and should be handled + else if ( !is_q_last + && ip_info.is_qj // this check is redundant (also in is_spike_q) but faster + && inters.i_info().count == 2 + && inters.is_spike_q() ) + { + assign(pi, qi, inters.result(), ip_index, method, p_operation, operation_blocked, + p_pos, q_pos, is_p_first_ip, is_q_first_ip, false, true, tp_model, out); + assign(pi, qi, inters.result(), ip_index, method, p_operation, operation_intersection, + p_pos, q_pos, is_p_first_ip, is_q_first_ip, false, true, tp_model, out); + } + // no spikes + else + { + assign(pi, qi, inters.result(), ip_index, method, p_operation, q_operation, + p_pos, q_pos, is_p_first_ip, is_q_first_ip, false, false, tp_model, out); + } + } + } + + return append_last; + } + + // TODO: IT'S ALSO PROBABLE THAT ALL THIS FUNCTION COULD BE INTEGRATED WITH handle_segment + // however now it's lazily calculated and then it would be always calculated + + template + static inline bool handle_internal(Point1 const& /*i1*/, Point1 const& /*j1*/, Point1 const& /*k1*/, + Point2 const& i2, Point2 const& j2, Point2 const& /*k2*/, + RobustPoint1 const& ri1, RobustPoint1 const& rj1, RobustPoint1 const& /*rk1*/, + RobustPoint2 const& ri2, RobustPoint2 const& rj2, RobustPoint2 const& rk2, + bool first1, bool last1, bool first2, bool last2, + bool ip_i2, bool ip_j2, TurnInfo const& tp_model, + IntersectionInfo const& inters, int ip_index, + operation_type & op1, operation_type & op2) + { + boost::ignore_unused_variable_warning(i2); + boost::ignore_unused_variable_warning(j2); + boost::ignore_unused_variable_warning(ip_index); + boost::ignore_unused_variable_warning(tp_model); + + if ( !first2 && !last2 ) + { + if ( first1 ) + { +#ifdef BOOST_GEOMETRY_DEBUG_GET_TURNS_LINEAR_LINEAR + // may this give false positives for INTs? + typename IntersectionResult::point_type const& + inters_pt = inters.i_info().intersections[ip_index]; + BOOST_ASSERT(ip_i2 == equals::equals_point_point(i2, inters_pt)); + BOOST_ASSERT(ip_j2 == equals::equals_point_point(j2, inters_pt)); +#endif + if ( ip_i2 ) + { + // don't output this IP - for the first point of other geometry segment + op1 = operation_none; + op2 = operation_none; + return true; + } + else if ( ip_j2 ) + { + side_calculator + side_calc(ri2, ri1, rj1, ri2, rj2, rk2); + + std::pair + operations = operations_of_equal(side_calc); + +// TODO: must the above be calculated? +// wouldn't it be enough to check if segments are collinear? + + if ( operations_both(operations, operation_continue) ) + { + if ( op1 != operation_union + || op2 != operation_union + || ! ( G1Index == 0 ? inters.is_spike_q() : inters.is_spike_p() ) ) + { + // THIS IS WRT THE ORIGINAL SEGMENTS! NOT THE ONES ABOVE! + bool opposite = inters.d_info().opposite; + + op1 = operation_intersection; + op2 = opposite ? operation_union : operation_intersection; + } + } + else + { + BOOST_ASSERT(operations_combination(operations, operation_intersection, operation_union)); + //op1 = operation_union; + //op2 = operation_union; + } + + return true; + } + // else do nothing - shouldn't be handled this way + } + else if ( last1 ) + { +#ifdef BOOST_GEOMETRY_DEBUG_GET_TURNS_LINEAR_LINEAR + // may this give false positives for INTs? + typename IntersectionResult::point_type const& + inters_pt = inters.i_info().intersections[ip_index]; + BOOST_ASSERT(ip_i2 == equals::equals_point_point(i2, inters_pt)); + BOOST_ASSERT(ip_j2 == equals::equals_point_point(j2, inters_pt)); +#endif + if ( ip_i2 ) + { + // don't output this IP - for the first point of other geometry segment + op1 = operation_none; + op2 = operation_none; + return true; + } + else if ( ip_j2 ) + { + side_calculator + side_calc(ri2, rj1, ri1, ri2, rj2, rk2); + + std::pair + operations = operations_of_equal(side_calc); + +// TODO: must the above be calculated? +// wouldn't it be enough to check if segments are collinear? + + if ( operations_both(operations, operation_continue) ) + { + if ( op1 != operation_blocked + || op2 != operation_union + || ! ( G1Index == 0 ? inters.is_spike_q() : inters.is_spike_p() ) ) + { + // THIS IS WRT THE ORIGINAL SEGMENTS! NOT THE ONES ABOVE! + bool second_going_out = inters.i_info().count > 1; + + op1 = operation_blocked; + op2 = second_going_out ? operation_union : operation_intersection; + } + } + else + { + BOOST_ASSERT(operations_combination(operations, operation_intersection, operation_union)); + //op1 = operation_blocked; + //op2 = operation_union; + } + + return true; + } + // else do nothing - shouldn't be handled this way + } + // else do nothing - shouldn't be handled this way + } + + return false; + } + + static inline method_type endpoint_ip_method(bool ip_pi, bool ip_pj, bool ip_qi, bool ip_qj) + { + if ( (ip_pi || ip_pj) && (ip_qi || ip_qj) ) + return method_touch; + else + return method_touch_interior; + } + + static inline turn_position ip_position(bool is_ip_first_i, bool is_ip_last_j) + { + return is_ip_first_i ? position_front : + ( is_ip_last_j ? position_back : position_middle ); + } + + template + static inline void assign(Point1 const& pi, Point2 const& qi, + IntersectionResult const& result, + int ip_index, + method_type method, + operation_type op0, operation_type op1, + turn_position pos0, turn_position pos1, + bool is_p_first_ip, bool is_q_first_ip, + bool is_p_spike, bool is_q_spike, + TurnInfo const& tp_model, + OutputIterator out) + { + TurnInfo tp = tp_model; + + //geometry::convert(ip, tp.point); + //tp.method = method; + base_turn_handler::assign_point(tp, method, result.template get<0>(), ip_index); + + tp.operations[0].operation = op0; + tp.operations[1].operation = op1; + tp.operations[0].position = pos0; + tp.operations[1].position = pos1; + + if ( result.template get<0>().count > 1 ) + { + // NOTE: is_collinear is NOT set for the first endpoint + // for which there is no preceding segment + + //BOOST_ASSERT( result.template get<1>().dir_a == 0 && result.template get<1>().dir_b == 0 ); + if ( ! is_p_first_ip ) + { + tp.operations[0].is_collinear = op0 != operation_intersection + || is_p_spike; + } + + if ( ! is_q_first_ip ) + { + tp.operations[1].is_collinear = op1 != operation_intersection + || is_q_spike; + } + } + else //if ( result.template get<0>().count == 1 ) + { + if ( op0 == operation_blocked && op1 == operation_intersection ) + { + tp.operations[0].is_collinear = true; + } + else if ( op0 == operation_intersection && op1 == operation_blocked ) + { + tp.operations[1].is_collinear = true; + } + } + + AssignPolicy::apply(tp, pi, qi, result.template get<0>(), result.template get<1>()); + *out++ = tp; + } + + template + static inline std::pair operations_of_equal(SidePolicy const& side) + { + int const side_pk_q2 = side.pk_wrt_q2(); + int const side_pk_p = side.pk_wrt_p1(); + int const side_qk_p = side.qk_wrt_p1(); + + // If pk is collinear with qj-qk, they continue collinearly. + // This can be on either side of p1 (== q1), or collinear + // The second condition checks if they do not continue + // oppositely + if ( side_pk_q2 == 0 && side_pk_p == side_qk_p ) + { + return std::make_pair(operation_continue, operation_continue); + } + + // If they turn to same side (not opposite sides) + if ( ! base_turn_handler::opposite(side_pk_p, side_qk_p) ) + { + // If pk is left of q2 or collinear: p: union, q: intersection + if ( side_pk_q2 != -1 ) + { + return std::make_pair(operation_union, operation_intersection); + } + else + { + return std::make_pair(operation_intersection, operation_union); + } + } + else + { + // They turn opposite sides. If p turns left (or collinear), + // p: union, q: intersection + if ( side_pk_p != -1 ) + { + return std::make_pair(operation_union, operation_intersection); + } + else + { + return std::make_pair(operation_intersection, operation_union); + } + } + } + + static inline bool operations_both( + std::pair const& operations, + operation_type const op) + { + return operations.first == op && operations.second == op; + } + + static inline bool operations_combination( + std::pair const& operations, + operation_type const op1, operation_type const op2) + { + return ( operations.first == op1 && operations.second == op2 ) + || ( operations.first == op2 && operations.second == op1 ); + } +}; + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_FOR_ENDPOINT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp new file mode 100644 index 0000000000..eead0d719b --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_helpers.hpp @@ -0,0 +1,329 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_HELPERS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_HELPERS_HPP + +#include + +namespace boost { namespace geometry { + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay { + +enum turn_position { position_middle, position_front, position_back }; + +template +struct turn_operation_linear + : public turn_operation +{ + turn_operation_linear() + : position(position_middle) + , is_collinear(false) + {} + + turn_position position; + bool is_collinear; // valid only for Linear geometry +}; + +template +struct side_calculator +{ + typedef boost::geometry::strategy::side::side_by_triangle<> side; // todo: get from coordinate system + + inline side_calculator(Pi const& pi, Pj const& pj, Pk const& pk, + Qi const& qi, Qj const& qj, Qk const& qk) + : m_pi(pi), m_pj(pj), m_pk(pk) + , m_qi(qi), m_qj(qj), m_qk(qk) + {} + + inline int pk_wrt_p1() const { return side::apply(m_pi, m_pj, m_pk); } + inline int pk_wrt_q1() const { return side::apply(m_qi, m_qj, m_pk); } + inline int qk_wrt_p1() const { return side::apply(m_pi, m_pj, m_qk); } + inline int qk_wrt_q1() const { return side::apply(m_qi, m_qj, m_qk); } + + inline int pk_wrt_q2() const { return side::apply(m_qj, m_qk, m_pk); } + inline int qk_wrt_p2() const { return side::apply(m_pj, m_pk, m_qk); } + + Pi const& m_pi; + Pj const& m_pj; + Pk const& m_pk; + Qi const& m_qi; + Qj const& m_qj; + Qk const& m_qk; +}; + +template +struct robust_points +{ + typedef typename geometry::robust_point_type + < + Point1, RobustPolicy + >::type robust_point1_type; + // TODO: define robust_point2_type using Point2? + typedef robust_point1_type robust_point2_type; + + inline robust_points(Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + RobustPolicy const& robust_policy) + { + geometry::recalculate(m_rpi, pi, robust_policy); + geometry::recalculate(m_rpj, pj, robust_policy); + geometry::recalculate(m_rpk, pk, robust_policy); + geometry::recalculate(m_rqi, qi, robust_policy); + geometry::recalculate(m_rqj, qj, robust_policy); + geometry::recalculate(m_rqk, qk, robust_policy); + } + + robust_point1_type m_rpi, m_rpj, m_rpk; + robust_point2_type m_rqi, m_rqj, m_rqk; +}; + +template +class intersection_info_base + : private robust_points +{ + typedef robust_points base_t; + +public: + typedef Point1 point1_type; + typedef Point2 point2_type; + + typedef typename base_t::robust_point1_type robust_point1_type; + typedef typename base_t::robust_point2_type robust_point2_type; + + typedef side_calculator side_calculator_type; + + intersection_info_base(Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + RobustPolicy const& robust_policy) + : base_t(pi, pj, pk, qi, qj, qk, robust_policy) + , m_side_calc(base_t::m_rpi, base_t::m_rpj, base_t::m_rpk, + base_t::m_rqi, base_t::m_rqj, base_t::m_rqk) + , m_pi(pi), m_pj(pj), m_pk(pk) + , m_qi(qi), m_qj(qj), m_qk(qk) + {} + + inline Point1 const& pi() const { return m_pi; } + inline Point1 const& pj() const { return m_pj; } + inline Point1 const& pk() const { return m_pk; } + + inline Point2 const& qi() const { return m_qi; } + inline Point2 const& qj() const { return m_qj; } + inline Point2 const& qk() const { return m_qk; } + + inline robust_point1_type const& rpi() const { return base_t::m_rpi; } + inline robust_point1_type const& rpj() const { return base_t::m_rpj; } + inline robust_point1_type const& rpk() const { return base_t::m_rpk; } + + inline robust_point2_type const& rqi() const { return base_t::m_rqi; } + inline robust_point2_type const& rqj() const { return base_t::m_rqj; } + inline robust_point2_type const& rqk() const { return base_t::m_rqk; } + + inline side_calculator_type const& sides() const { return m_side_calc; } + +private: + side_calculator_type m_side_calc; + + point1_type const& m_pi; + point1_type const& m_pj; + point1_type const& m_pk; + point2_type const& m_qi; + point2_type const& m_qj; + point2_type const& m_qk; +}; + +template +class intersection_info_base +{ +public: + typedef Point1 point1_type; + typedef Point2 point2_type; + + typedef Point1 robust_point1_type; + typedef Point2 robust_point2_type; + + typedef side_calculator side_calculator_type; + + intersection_info_base(Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + no_rescale_policy const& /*robust_policy*/) + : m_side_calc(pi, pj, pk, qi, qj, qk) + {} + + inline Point1 const& pi() const { return m_side_calc.m_pi; } + inline Point1 const& pj() const { return m_side_calc.m_pj; } + inline Point1 const& pk() const { return m_side_calc.m_pk; } + + inline Point2 const& qi() const { return m_side_calc.m_qi; } + inline Point2 const& qj() const { return m_side_calc.m_qj; } + inline Point2 const& qk() const { return m_side_calc.m_qk; } + + inline Point1 const& rpi() const { return pi(); } + inline Point1 const& rpj() const { return pj(); } + inline Point1 const& rpk() const { return pk(); } + + inline Point2 const& rqi() const { return qi(); } + inline Point2 const& rqj() const { return qj(); } + inline Point2 const& rqk() const { return qk(); } + + inline side_calculator_type const& sides() const { return m_side_calc; } + +private: + side_calculator_type m_side_calc; +}; + + +template +class intersection_info + : public intersection_info_base +{ + typedef intersection_info_base base_t; + + typedef typename strategy_intersection + < + typename cs_tag::type, + Point1, + Point2, + TurnPoint, + RobustPolicy + >::segment_intersection_strategy_type strategy; + +public: + typedef model::referring_segment segment_type1; + typedef model::referring_segment segment_type2; + typedef typename base_t::side_calculator_type side_calculator_type; + + typedef typename strategy::return_type result_type; + typedef typename boost::tuples::element<0, result_type>::type i_info_type; // intersection_info + typedef typename boost::tuples::element<1, result_type>::type d_info_type; // dir_info + + intersection_info(Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + RobustPolicy const& robust_policy) + : base_t(pi, pj, pk, qi, qj, qk, robust_policy) + , m_result(strategy::apply(segment_type1(pi, pj), + segment_type2(qi, qj), + robust_policy)) + , m_robust_policy(robust_policy) + {} + + inline result_type const& result() const { return m_result; } + inline i_info_type const& i_info() const { return m_result.template get<0>(); } + inline d_info_type const& d_info() const { return m_result.template get<1>(); } + + // TODO: it's more like is_spike_ip_p + inline bool is_spike_p() const + { + if ( base_t::sides().pk_wrt_p1() == 0 ) + { + if ( ! is_ip_j<0>() ) + return false; + + int const qk_p1 = base_t::sides().qk_wrt_p1(); + int const qk_p2 = base_t::sides().qk_wrt_p2(); + + if ( qk_p1 == -qk_p2 ) + { + if ( qk_p1 == 0 ) + { + return is_spike_of_collinear(base_t::pi(), base_t::pj(), base_t::pk()); + } + + return true; + } + } + + return false; + } + + // TODO: it's more like is_spike_ip_q + inline bool is_spike_q() const + { + if ( base_t::sides().qk_wrt_q1() == 0 ) + { + if ( ! is_ip_j<1>() ) + return false; + + int const pk_q1 = base_t::sides().pk_wrt_q1(); + int const pk_q2 = base_t::sides().pk_wrt_q2(); + + if ( pk_q1 == -pk_q2 ) + { + if ( pk_q1 == 0 ) + { + return is_spike_of_collinear(base_t::qi(), base_t::qj(), base_t::qk()); + } + + return true; + } + } + + return false; + } + +private: + template + inline bool is_spike_of_collinear(Point const& i, Point const& j, Point const& k) const + { + typedef model::referring_segment seg_t; + + typedef strategy_intersection + < + typename cs_tag::type, Point, Point, Point, RobustPolicy + > si; + + typedef typename si::segment_intersection_strategy_type strategy; + + typename strategy::return_type result + = strategy::apply(seg_t(i, j), seg_t(j, k), m_robust_policy); + + return result.template get<0>().count == 2; + } + + template + bool is_ip_j() const + { + int arrival = d_info().arrival[OpId]; + bool same_dirs = d_info().dir_a == 0 && d_info().dir_b == 0; + + if ( same_dirs ) + { + if ( i_info().count == 2 ) + { + return arrival != -1; + } + else + { + return arrival == 0; + } + } + else + { + return arrival == 1; + } + } + + result_type m_result; + RobustPolicy const& m_robust_policy; +}; + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_HELPERS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp new file mode 100644 index 0000000000..20340a6080 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_la.hpp @@ -0,0 +1,809 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_LA_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_LA_HPP + +#include +#include + +// TEMP, for spikes detector +//#include + +namespace boost { namespace geometry { + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay { + +template +struct get_turn_info_linear_areal +{ + static const bool handle_spikes = true; + + template + < + typename Point1, + typename Point2, + typename TurnInfo, + typename RobustPolicy, + typename OutputIterator + > + static inline OutputIterator apply( + Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + bool is_p_first, bool is_p_last, + bool is_q_first, bool is_q_last, + TurnInfo const& tp_model, + RobustPolicy const& robust_policy, + OutputIterator out) + { + typedef intersection_info + inters_info; + + inters_info inters(pi, pj, pk, qi, qj, qk, robust_policy); + + char const method = inters.d_info().how; + + // Copy, to copy possibly extended fields + TurnInfo tp = tp_model; + + // Select method and apply + switch(method) + { + case 'a' : // collinear, "at" + case 'f' : // collinear, "from" + case 's' : // starts from the middle + get_turn_info_for_endpoint( + pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_none, out); + break; + + case 'd' : // disjoint: never do anything + break; + + case 'm' : + { + if ( get_turn_info_for_endpoint( + pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_touch_interior, out) ) + { + // do nothing + } + else + { + typedef touch_interior + < + TurnInfo + > policy; + + // If Q (1) arrives (1) + if ( inters.d_info().arrival[1] == 1 ) + { + policy::template apply<0>(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), + inters.sides()); + } + else + { + // Swap p/q + side_calculator + < + typename inters_info::robust_point2_type, + typename inters_info::robust_point1_type + > swapped_side_calc(inters.rqi(), inters.rqj(), inters.rqk(), + inters.rpi(), inters.rpj(), inters.rpk()); + policy::template apply<1>(qi, qj, qk, pi, pj, pk, + tp, inters.i_info(), inters.d_info(), + swapped_side_calc); + } + + if ( tp.operations[1].operation == operation_blocked ) + { + tp.operations[0].is_collinear = true; + } + + replace_method_and_operations_tm(tp.method, + tp.operations[0].operation, + tp.operations[1].operation); + + // this function assumes that 'u' must be set for a spike + calculate_spike_operation(tp.operations[0].operation, + inters, is_p_last); + + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + + *out++ = tp; + } + } + break; + case 'i' : + { + crosses::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info()); + + replace_operations_i(tp.operations[0].operation, tp.operations[1].operation); + + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + *out++ = tp; + } + break; + case 't' : + { + // Both touch (both arrive there) + if ( get_turn_info_for_endpoint( + pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_touch, out) ) + { + // do nothing + } + else + { + touch::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + + if ( tp.operations[1].operation == operation_blocked ) + { + tp.operations[0].is_collinear = true; + } + + // workarounds for touch<> not taking spikes into account starts here + // those was discovered empirically + // touch<> is not symmetrical! + // P spikes and Q spikes may produce various operations! + // Only P spikes are valid for L/A + // TODO: this is not optimal solution - think about rewriting touch<> + + if ( tp.operations[0].operation == operation_blocked ) + { + // a spike on P on the same line with Q1 + if ( inters.is_spike_p() ) + { + if ( inters.sides().qk_wrt_p1() == 0 ) + { + tp.operations[0].is_collinear = true; + } + else + { + tp.operations[0].operation = operation_union; + } + } + } + else if ( tp.operations[0].operation == operation_continue + && tp.operations[1].operation == operation_continue ) + { + // P spike on the same line with Q2 (opposite) + if ( inters.sides().pk_wrt_q1() == -inters.sides().qk_wrt_q1() + && inters.is_spike_p() ) + { + tp.operations[0].operation = operation_union; + tp.operations[1].operation = operation_union; + } + } + else if ( tp.operations[0].operation == operation_none + && tp.operations[1].operation == operation_none ) + { + // spike not handled by touch<> + if ( inters.is_spike_p() ) + { + tp.operations[0].operation = operation_intersection; + tp.operations[1].operation = operation_union; + + if ( inters.sides().pk_wrt_q2() == 0 ) + { + tp.operations[0].operation = operation_continue; // will be converted to i + tp.operations[0].is_collinear = true; + } + } + } + + // workarounds for touch<> not taking spikes into account ends here + + replace_method_and_operations_tm(tp.method, + tp.operations[0].operation, + tp.operations[1].operation); + + bool ignore_spike + = calculate_spike_operation(tp.operations[0].operation, + inters, is_p_last); + +// TODO: move this into the append_xxx and call for each turn? + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + + if ( ! handle_spikes + || ignore_spike + || ! append_opposite_spikes( // for 'i' or 'c' i??? + tp, inters, is_p_last, is_q_last, out) ) + { + *out++ = tp; + } + } + } + break; + case 'e': + { + if ( get_turn_info_for_endpoint( + pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_equal, out) ) + { + // do nothing + } + else + { + tp.operations[0].is_collinear = true; + + if ( ! inters.d_info().opposite ) + { + // Both equal + // or collinear-and-ending at intersection point + equal::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + + turn_transformer_ec transformer(method_touch); + transformer(tp); + +// TODO: move this into the append_xxx and call for each turn? + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + + // conditionally handle spikes + if ( ! handle_spikes + || ! append_collinear_spikes(tp, inters, is_p_last, is_q_last, + method_touch, append_equal, out) ) + { + *out++ = tp; // no spikes + } + } + else + { + equal_opposite + < + TurnInfo, + AssignPolicy + >::apply(pi, qi, + tp, out, inters.i_info(), inters.d_info()); + } + } + } + break; + case 'c' : + { + // Collinear + if ( get_turn_info_for_endpoint( + pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_collinear, out) ) + { + // do nothing + } + else + { + tp.operations[0].is_collinear = true; + + if ( ! inters.d_info().opposite ) + { + method_type method_replace = method_touch_interior; + append_version_c version = append_collinear; + + if ( inters.d_info().arrival[0] == 0 ) + { + // Collinear, but similar thus handled as equal + equal::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + + method_replace = method_touch; + version = append_equal; + } + else + { + collinear::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + + //method_replace = method_touch_interior; + //version = append_collinear; + } + + turn_transformer_ec transformer(method_replace); + transformer(tp); + +// TODO: move this into the append_xxx and call for each turn? + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + + // conditionally handle spikes + if ( ! handle_spikes + || ! append_collinear_spikes(tp, inters, is_p_last, is_q_last, + method_replace, version, out) ) + { + // no spikes + *out++ = tp; + } + } + else + { + // Is this always 'm' ? + turn_transformer_ec transformer(method_touch_interior); + + // conditionally handle spikes + if ( handle_spikes ) + { + append_opposite_spikes( + tp, inters, is_p_last, is_q_last, out); + } + + // TODO: ignore for spikes? + // E.g. pass is_p_valid = !is_p_last && !is_pj_spike, + // the same with is_q_valid + + collinear_opposite + < + TurnInfo, + AssignPolicy + >::apply(pi, pj, pk, qi, qj, qk, + tp, out, inters.i_info(), inters.d_info(), + inters.sides(), transformer); + } + } + } + break; + case '0' : + { + // degenerate points + if (AssignPolicy::include_degenerate) + { + only_convert::apply(tp, inters.i_info()); + + if ( is_p_first + && equals::equals_point_point(pi, tp.point) ) + { + tp.operations[0].position = position_front; + } + else if ( is_p_last + && equals::equals_point_point(pj, tp.point) ) + { + tp.operations[0].position = position_back; + } + // tp.operations[1].position = position_middle; + + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + *out++ = tp; + } + } + break; + default : + { +#if defined(BOOST_GEOMETRY_DEBUG_ROBUSTNESS) + std::cout << "TURN: Unknown method: " << method << std::endl; +#endif +#if ! defined(BOOST_GEOMETRY_OVERLAY_NO_THROW) + throw turn_info_exception(method); +#endif + } + break; + } + + return out; + } + + template + static inline bool calculate_spike_operation(Operation & op, + IntersectionInfo const& inters, + bool is_p_last) + { + bool is_p_spike = ( op == operation_union || op == operation_intersection ) + && ! is_p_last + && inters.is_spike_p(); + + if ( is_p_spike ) + { + bool going_in = false, going_out = false; + + int const pk_q1 = inters.sides().pk_wrt_q1(); + int const pk_q2 = inters.sides().pk_wrt_q2(); + + if ( inters.sides().qk_wrt_q1() <= 0 ) // Q turning R or C + { + going_in = pk_q1 < 0 && pk_q2 < 0; // Pk on the right of both + going_out = pk_q1 > 0 || pk_q2 > 0; // Pk on the left of one of them + } + else + { + going_in = pk_q1 < 0 || pk_q2 < 0; // Pk on the right of one of them + going_out = pk_q1 > 0 && pk_q2 > 0; // Pk on the left of both + } + + if ( going_in ) + { + op = operation_intersection; + return true; + } + else if ( going_out ) + { + op = operation_union; + return true; + } + } + + return false; + } + + enum append_version_c { append_equal, append_collinear }; + + template + static inline bool append_collinear_spikes(TurnInfo & tp, + IntersectionInfo const& inters, + bool is_p_last, bool /*is_q_last*/, + method_type method, append_version_c version, + OutIt out) + { + // method == touch || touch_interior + // both position == middle + + bool is_p_spike = ( version == append_equal ? + ( tp.operations[0].operation == operation_union + || tp.operations[0].operation == operation_intersection ) : + tp.operations[0].operation == operation_continue ) + && ! is_p_last + && inters.is_spike_p(); + + // TODO: throw an exception for spike in Areal? + /*bool is_q_spike = tp.operations[1].operation == spike_op + && ! is_q_last + && inters.is_spike_q();*/ + + if ( is_p_spike ) + { + tp.method = method; + tp.operations[0].operation = operation_blocked; + tp.operations[1].operation = operation_union; + *out++ = tp; + tp.operations[0].operation = operation_continue; // boundary + //tp.operations[1].operation = operation_union; + *out++ = tp; + + return true; + } + + return false; + } + + enum append_version_o { append_touches, append_collinear_opposite }; + + template + static inline bool append_opposite_spikes(TurnInfo & tp, + IntersectionInfo const& inters, + bool is_p_last, bool /*is_q_last*/, + OutIt out) + { + bool is_p_spike = ( Version == append_touches ? + ( tp.operations[0].operation == operation_continue + || tp.operations[0].operation == operation_intersection ) : // i ??? + true ) + && ! is_p_last + && inters.is_spike_p(); + // TODO: throw an exception for spike in Areal? + /*bool is_q_spike = ( Version == append_touches ? + ( tp.operations[1].operation == operation_continue + || tp.operations[1].operation == operation_intersection ) : + true ) + && ! is_q_last + && inters.is_spike_q();*/ + + if ( is_p_spike && ( Version == append_touches || inters.d_info().arrival[0] == 1 ) ) + { + if ( Version == append_touches ) + { + tp.operations[0].is_collinear = true; + //tp.operations[1].is_collinear = false; + tp.method = method_touch; + } + else + { + tp.operations[0].is_collinear = true; + //tp.operations[1].is_collinear = false; + + BOOST_ASSERT(inters.i_info().count > 1); + base_turn_handler::assign_point(tp, method_touch_interior, inters.i_info(), 1); + + AssignPolicy::apply(tp, inters.pi(), inters.qi(), inters.i_info(), inters.d_info()); + } + + tp.operations[0].operation = operation_blocked; + tp.operations[1].operation = operation_continue; // boundary + *out++ = tp; + tp.operations[0].operation = operation_continue; // boundary + //tp.operations[1].operation = operation_continue; // boundary + *out++ = tp; + + return true; + } + + return false; + } + + static inline void replace_method_and_operations_tm(method_type & method, + operation_type & op0, + operation_type & op1) + { + if ( op0 == operation_blocked && op1 == operation_blocked ) + { + // NOTE: probably only if methods are WRT IPs, not segments! + method = (method == method_touch ? method_equal : method_collinear); + } + + // Assuming G1 is always Linear + if ( op0 == operation_blocked ) + { + op0 = operation_continue; + } + + if ( op1 == operation_blocked ) + { + op1 = operation_continue; + } + else if ( op1 == operation_intersection ) + { + op1 = operation_union; + } + + // spikes in 'm' + if ( method == method_error ) + { + method = method_touch_interior; + op0 = operation_union; + op1 = operation_union; + } + } + + template + class turn_transformer_ec + { + public: + explicit turn_transformer_ec(method_type method_t_or_m) + : m_method(method_t_or_m) + {} + + template + void operator()(Turn & turn) const + { + operation_type & op0 = turn.operations[0].operation; + operation_type & op1 = turn.operations[1].operation; + + // NOTE: probably only if methods are WRT IPs, not segments! + if ( IsFront + || op0 == operation_intersection || op0 == operation_union + || op1 == operation_intersection || op1 == operation_union ) + { + turn.method = m_method; + } + + turn.operations[0].is_collinear = op0 != operation_blocked; + + // Assuming G1 is always Linear + if ( op0 == operation_blocked ) + { + op0 = operation_continue; + } + + if ( op1 == operation_blocked ) + { + op1 = operation_continue; + } + else if ( op1 == operation_intersection ) + { + op1 = operation_union; + } + } + + private: + method_type m_method; + }; + + static inline void replace_operations_i(operation_type & /*op0*/, operation_type & op1) + { + // assuming Linear is always the first one + op1 = operation_union; + } + + // NOTE: Spikes may NOT be handled for Linear endpoints because it's not + // possible to define a spike on an endpoint. Areal geometries must + // NOT have spikes at all. One thing that could be done is to throw + // an exception when spike is detected in Areal geometry. + + template + static inline bool get_turn_info_for_endpoint( + Point1 const& pi, Point1 const& /*pj*/, Point1 const& /*pk*/, + Point2 const& qi, Point2 const& /*qj*/, Point2 const& /*qk*/, + bool is_p_first, bool is_p_last, + bool /*is_q_first*/, bool is_q_last, + TurnInfo const& tp_model, + IntersectionInfo const& inters, + method_type /*method*/, + OutputIterator out) + { + namespace ov = overlay; + typedef ov::get_turn_info_for_endpoint get_info_e; + + const std::size_t ip_count = inters.i_info().count; + // no intersection points + if ( ip_count == 0 ) + return false; + + const int segment_index0 = tp_model.operations[0].seg_id.segment_index; + const int segment_index1 = tp_model.operations[1].seg_id.segment_index; + BOOST_ASSERT(segment_index0 >= 0 && segment_index1 >= 0); + + if ( !is_p_first && !is_p_last ) + return false; + +// TODO: is_q_last could probably be replaced by false and removed from parameters + + linear_intersections intersections(pi, qi, inters.result(), is_p_last, is_q_last); + linear_intersections::ip_info const& ip0 = intersections.template get<0>(); + linear_intersections::ip_info const& ip1 = intersections.template get<1>(); + + const bool opposite = inters.d_info().opposite; + + // ANALYSE AND ASSIGN FIRST + + // IP on the first point of Linear Geometry + if ( EnableFirst && is_p_first && ip0.is_pi && !ip0.is_qi ) // !q0i prevents duplication + { + TurnInfo tp = tp_model; + tp.operations[0].position = position_front; + tp.operations[1].position = position_middle; + + if ( opposite ) // opposite -> collinear + { + tp.operations[0].operation = operation_continue; + tp.operations[1].operation = operation_union; + tp.method = ip0.is_qj ? method_touch : method_touch_interior; + } + else + { + method_type replaced_method = method_touch_interior; + + if ( ip0.is_qj ) + { + side_calculator + < + typename IntersectionInfo::robust_point1_type, + typename IntersectionInfo::robust_point2_type, + typename IntersectionInfo::robust_point2_type + > side_calc(inters.rqi(), inters.rpi(), inters.rpj(), + inters.rqi(), inters.rqj(), inters.rqk()); + + std::pair + operations = get_info_e::operations_of_equal(side_calc); + + tp.operations[0].operation = operations.first; + tp.operations[1].operation = operations.second; + + replaced_method = method_touch; + } + else + { + side_calculator + < + typename IntersectionInfo::robust_point1_type, + typename IntersectionInfo::robust_point2_type, + typename IntersectionInfo::robust_point2_type, + typename IntersectionInfo::robust_point1_type, + typename IntersectionInfo::robust_point1_type, + typename IntersectionInfo::robust_point2_type, + typename IntersectionInfo::robust_point1_type, + typename IntersectionInfo::robust_point2_type + > side_calc(inters.rqi(), inters.rpi(), inters.rpj(), + inters.rqi(), inters.rpi(), inters.rqj()); + + std::pair + operations = get_info_e::operations_of_equal(side_calc); + + tp.operations[0].operation = operations.first; + tp.operations[1].operation = operations.second; + } + + turn_transformer_ec transformer(replaced_method); + transformer(tp); + } + + // equals<> or collinear<> will assign the second point, + // we'd like to assign the first one + base_turn_handler::assign_point(tp, tp.method, inters.i_info(), 0); + + // NOTE: is_collinear is not set for the first endpoint of L + // for which there is no preceding segment + // here is_p_first_ip == true + tp.operations[0].is_collinear = false; + + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + *out++ = tp; + } + + // ANALYSE AND ASSIGN LAST + + // IP on the last point of Linear Geometry + if ( EnableLast + && is_p_last + && ( ip_count > 1 ? (ip1.is_pj && !ip1.is_qi) : (ip0.is_pj && !ip0.is_qi) ) ) // prevents duplication + { + TurnInfo tp = tp_model; + + if ( inters.i_info().count > 1 ) + { + //BOOST_ASSERT( result.template get<1>().dir_a == 0 && result.template get<1>().dir_b == 0 ); + tp.operations[0].is_collinear = true; + tp.operations[1].operation = opposite ? operation_continue : operation_union; + } + else //if ( result.template get<0>().count == 1 ) + { + side_calculator + < + typename IntersectionInfo::robust_point1_type, + typename IntersectionInfo::robust_point2_type, + typename IntersectionInfo::robust_point2_type + > side_calc(inters.rqi(), inters.rpj(), inters.rpi(), + inters.rqi(), inters.rqj(), inters.rqk()); + + std::pair + operations = get_info_e::operations_of_equal(side_calc); + + tp.operations[0].operation = operations.first; + tp.operations[1].operation = operations.second; + + turn_transformer_ec transformer(method_none); + transformer(tp); + + tp.operations[0].is_collinear = tp.both(operation_continue); + } + + tp.method = ( ip_count > 1 ? ip1.is_qj : ip0.is_qj ) ? method_touch : method_touch_interior; + tp.operations[0].operation = operation_blocked; + tp.operations[0].position = position_back; + tp.operations[1].position = position_middle; + + // equals<> or collinear<> will assign the second point, + // we'd like to assign the first one + int ip_index = ip_count > 1 ? 1 : 0; + base_turn_handler::assign_point(tp, tp.method, inters.i_info(), ip_index); + + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + *out++ = tp; + + return true; + } + + // don't ignore anything for now + return false; + } +}; + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_LA_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp new file mode 100644 index 0000000000..4f0384877f --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turn_info_ll.hpp @@ -0,0 +1,720 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_LL_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_LL_HPP + +#include +#include + +namespace boost { namespace geometry { + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay { + +template +struct get_turn_info_linear_linear +{ + static const bool handle_spikes = true; + + template + < + typename Point1, + typename Point2, + typename TurnInfo, + typename RobustPolicy, + typename OutputIterator + > + static inline OutputIterator apply( + Point1 const& pi, Point1 const& pj, Point1 const& pk, + Point2 const& qi, Point2 const& qj, Point2 const& qk, + bool is_p_first, bool is_p_last, + bool is_q_first, bool is_q_last, + TurnInfo const& tp_model, + RobustPolicy const& robust_policy, + OutputIterator out) + { + typedef intersection_info + inters_info; + + inters_info inters(pi, pj, pk, qi, qj, qk, robust_policy); + + char const method = inters.d_info().how; + + // Copy, to copy possibly extended fields + TurnInfo tp = tp_model; + + // Select method and apply + switch(method) + { + case 'a' : // collinear, "at" + case 'f' : // collinear, "from" + case 's' : // starts from the middle + get_turn_info_for_endpoint + ::apply(pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_none, out); + break; + + case 'd' : // disjoint: never do anything + break; + + case 'm' : + { + if ( get_turn_info_for_endpoint + ::apply(pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_touch_interior, out) ) + { + // do nothing + } + else + { + typedef touch_interior + < + TurnInfo + > policy; + + // If Q (1) arrives (1) + if ( inters.d_info().arrival[1] == 1) + { + policy::template apply<0>(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), + inters.sides()); + } + else + { + // Swap p/q + side_calculator + < + typename inters_info::robust_point2_type, + typename inters_info::robust_point1_type + > swapped_side_calc(inters.rqi(), inters.rqj(), inters.rqk(), + inters.rpi(), inters.rpj(), inters.rpk()); + + policy::template apply<1>(qi, qj, qk, pi, pj, pk, + tp, inters.i_info(), inters.d_info(), + swapped_side_calc); + } + + if ( tp.operations[0].operation == operation_blocked ) + { + tp.operations[1].is_collinear = true; + } + if ( tp.operations[1].operation == operation_blocked ) + { + tp.operations[0].is_collinear = true; + } + + replace_method_and_operations_tm(tp.method, + tp.operations[0].operation, + tp.operations[1].operation); + + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + *out++ = tp; + } + } + break; + case 'i' : + { + crosses::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info()); + + replace_operations_i(tp.operations[0].operation, tp.operations[1].operation); + + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + *out++ = tp; + } + break; + case 't' : + { + // Both touch (both arrive there) + if ( get_turn_info_for_endpoint + ::apply(pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_touch, out) ) + { + // do nothing + } + else + { + touch::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + + // workarounds for touch<> not taking spikes into account starts here + // those was discovered empirically + // touch<> is not symmetrical! + // P spikes and Q spikes may produce various operations! + // TODO: this is not optimal solution - think about rewriting touch<> + + if ( tp.operations[0].operation == operation_blocked + && tp.operations[1].operation == operation_blocked ) + { + // two touching spikes on the same line + if ( inters.is_spike_p() && inters.is_spike_q() ) + { + tp.operations[0].operation = operation_union; + tp.operations[1].operation = operation_union; + } + else + { + tp.operations[0].is_collinear = true; + tp.operations[1].is_collinear = true; + } + } + else if ( tp.operations[0].operation == operation_blocked ) + { + // a spike on P on the same line with Q1 + if ( inters.is_spike_p() ) + { + if ( inters.sides().qk_wrt_p1() == 0 ) + { + tp.operations[0].is_collinear = true; + } + else + { + tp.operations[0].operation = operation_union; + } + } + else + { + tp.operations[1].is_collinear = true; + } + } + else if ( tp.operations[1].operation == operation_blocked ) + { + // a spike on Q on the same line with P1 + if ( inters.is_spike_q() ) + { + if ( inters.sides().pk_wrt_q1() == 0 ) + { + tp.operations[1].is_collinear = true; + } + else + { + tp.operations[1].operation = operation_union; + } + } + else + { + tp.operations[0].is_collinear = true; + } + } + else if ( tp.operations[0].operation == operation_continue + && tp.operations[1].operation == operation_continue ) + { + // P spike on the same line with Q2 (opposite) + if ( inters.sides().pk_wrt_q1() == -inters.sides().qk_wrt_q1() + && inters.is_spike_p() ) + { + tp.operations[0].operation = operation_union; + tp.operations[1].operation = operation_union; + } + } + else if ( tp.operations[0].operation == operation_none + && tp.operations[1].operation == operation_none ) + { + // spike not handled by touch<> + bool const is_p = inters.is_spike_p(); + bool const is_q = inters.is_spike_q(); + + if ( is_p || is_q ) + { + tp.operations[0].operation = operation_union; + tp.operations[1].operation = operation_union; + + if ( inters.sides().pk_wrt_q2() == 0 ) + { + tp.operations[0].operation = operation_continue; // will be converted to i + if ( is_p ) + { + tp.operations[0].is_collinear = true; + } + } + + if ( inters.sides().qk_wrt_p2() == 0 ) + { + tp.operations[1].operation = operation_continue; // will be converted to i + if ( is_q ) + { + tp.operations[1].is_collinear = true; + } + } + } + } + + // workarounds for touch<> not taking spikes into account ends here + + replace_method_and_operations_tm(tp.method, + tp.operations[0].operation, + tp.operations[1].operation); + +// TODO: move this into the append_xxx and call for each turn? + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + + if ( ! handle_spikes + || ! append_opposite_spikes(tp, inters, + is_p_last, is_q_last, + out) ) + { + *out++ = tp; + } + } + } + break; + case 'e': + { + if ( get_turn_info_for_endpoint + ::apply(pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_equal, out) ) + { + // do nothing + } + else + { + tp.operations[0].is_collinear = true; + tp.operations[1].is_collinear = true; + + if ( ! inters.d_info().opposite ) + { + // Both equal + // or collinear-and-ending at intersection point + equal::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + + // transform turn + turn_transformer_ec transformer(method_touch); + transformer(tp); + +// TODO: move this into the append_xxx and call for each turn? + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + + // conditionally handle spikes + if ( ! handle_spikes + || ! append_collinear_spikes(tp, inters, + is_p_last, is_q_last, + method_touch, operation_union, + out) ) + { + *out++ = tp; // no spikes + } + } + else + { + // TODO: ignore for spikes or generate something else than opposite? + + equal_opposite + < + TurnInfo, + AssignPolicy + >::apply(pi, qi, tp, out, inters.i_info(), inters.d_info()); + } + } + } + break; + case 'c' : + { + // Collinear + if ( get_turn_info_for_endpoint + ::apply(pi, pj, pk, qi, qj, qk, + is_p_first, is_p_last, is_q_first, is_q_last, + tp_model, inters, method_collinear, out) ) + { + // do nothing + } + else + { + // NOTE: this is for spikes since those are set in the turn_transformer_ec + tp.operations[0].is_collinear = true; + tp.operations[1].is_collinear = true; + + if ( ! inters.d_info().opposite ) + { + method_type method_replace = method_touch_interior; + operation_type spike_op = operation_continue; + + if ( inters.d_info().arrival[0] == 0 ) + { + // Collinear, but similar thus handled as equal + equal::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + + method_replace = method_touch; + spike_op = operation_union; + } + else + { + collinear::apply(pi, pj, pk, qi, qj, qk, + tp, inters.i_info(), inters.d_info(), inters.sides()); + + //method_replace = method_touch_interior; + //spike_op = operation_continue; + } + + // transform turn + turn_transformer_ec transformer(method_replace); + transformer(tp); + +// TODO: move this into the append_xxx and call for each turn? + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + + // conditionally handle spikes + if ( ! handle_spikes + || ! append_collinear_spikes(tp, inters, + is_p_last, is_q_last, + method_replace, spike_op, + out) ) + { + // no spikes + *out++ = tp; + } + } + else + { + // If this always 'm' ? + turn_transformer_ec transformer(method_touch_interior); + + // conditionally handle spikes + if ( handle_spikes ) + { + append_opposite_spikes(tp, inters, + is_p_last, is_q_last, + out); + } + + // TODO: ignore for spikes? + // E.g. pass is_p_valid = !is_p_last && !is_pj_spike, + // the same with is_q_valid + + collinear_opposite + < + TurnInfo, + AssignPolicy + >::apply(pi, pj, pk, qi, qj, qk, + tp, out, inters.i_info(), inters.d_info(), inters.sides(), + transformer, !is_p_last, !is_q_last); + } + } + } + break; + case '0' : + { + // degenerate points + if (AssignPolicy::include_degenerate) + { + only_convert::apply(tp, inters.i_info()); + + // if any, only one of those should be true + if ( is_p_first + && equals::equals_point_point(pi, tp.point) ) + { + tp.operations[0].position = position_front; + } + else if ( is_p_last + && equals::equals_point_point(pj, tp.point) ) + { + tp.operations[0].position = position_back; + } + else if ( is_q_first + && equals::equals_point_point(qi, tp.point) ) + { + tp.operations[1].position = position_front; + } + else if ( is_q_last + && equals::equals_point_point(qj, tp.point) ) + { + tp.operations[1].position = position_back; + } + + AssignPolicy::apply(tp, pi, qi, inters.i_info(), inters.d_info()); + *out++ = tp; + } + } + break; + default : + { +#if defined(BOOST_GEOMETRY_DEBUG_ROBUSTNESS) + std::cout << "TURN: Unknown method: " << method << std::endl; +#endif +#if ! defined(BOOST_GEOMETRY_OVERLAY_NO_THROW) + throw turn_info_exception(method); +#endif + } + break; + } + + return out; + } + + template + static inline bool append_collinear_spikes(TurnInfo & tp, + IntersectionInfo const& inters_info, + bool is_p_last, bool is_q_last, + method_type method, operation_type spike_op, + OutIt out) + { + // method == touch || touch_interior + // both position == middle + + bool is_p_spike = tp.operations[0].operation == spike_op + && ! is_p_last + && inters_info.is_spike_p(); + bool is_q_spike = tp.operations[1].operation == spike_op + && ! is_q_last + && inters_info.is_spike_q(); + + if ( is_p_spike && is_q_spike ) + { + tp.method = method; + tp.operations[0].operation = operation_blocked; + tp.operations[1].operation = operation_blocked; + *out++ = tp; + tp.operations[0].operation = operation_intersection; + tp.operations[1].operation = operation_intersection; + *out++ = tp; + + return true; + } + else if ( is_p_spike ) + { + tp.method = method; + tp.operations[0].operation = operation_blocked; + tp.operations[1].operation = operation_union; + *out++ = tp; + tp.operations[0].operation = operation_intersection; + //tp.operations[1].operation = operation_union; + *out++ = tp; + + return true; + } + else if ( is_q_spike ) + { + tp.method = method; + tp.operations[0].operation = operation_union; + tp.operations[1].operation = operation_blocked; + *out++ = tp; + //tp.operations[0].operation = operation_union; + tp.operations[1].operation = operation_intersection; + *out++ = tp; + + return true; + } + + return false; + } + + enum append_version { append_touches, append_collinear_opposite }; + + template + static inline bool append_opposite_spikes(TurnInfo & tp, + IntersectionInfo const& inters, + bool is_p_last, bool is_q_last, + OutIt out) + { + bool is_p_spike = ( Version == append_touches ? + ( tp.operations[0].operation == operation_continue + || tp.operations[0].operation == operation_intersection ) : + true ) + && ! is_p_last + && inters.is_spike_p(); + bool is_q_spike = ( Version == append_touches ? + ( tp.operations[1].operation == operation_continue + || tp.operations[1].operation == operation_intersection ) : + true ) + && ! is_q_last + && inters.is_spike_q(); + + bool res = false; + + if ( is_p_spike && ( Version == append_touches || inters.d_info().arrival[0] == 1 ) ) + { + if ( Version == append_touches ) + { + tp.operations[0].is_collinear = true; + tp.operations[1].is_collinear = false; + tp.method = method_touch; + } + else // Version == append_collinear_opposite + { + tp.operations[0].is_collinear = true; + tp.operations[1].is_collinear = false; + + BOOST_ASSERT(inters.i_info().count > 1); + + base_turn_handler::assign_point(tp, method_touch_interior, + inters.i_info(), 1); + + AssignPolicy::apply(tp, inters.pi(), inters.qi(), + inters.i_info(), inters.d_info()); + } + + tp.operations[0].operation = operation_blocked; + tp.operations[1].operation = operation_intersection; + *out++ = tp; + tp.operations[0].operation = operation_intersection; + //tp.operations[1].operation = operation_intersection; + *out++ = tp; + + res = true; + } + + if ( is_q_spike && ( Version == append_touches || inters.d_info().arrival[1] == 1 ) ) + { + if ( Version == append_touches ) + { + tp.operations[0].is_collinear = false; + tp.operations[1].is_collinear = true; + tp.method = method_touch; + } + else // Version == append_collinear_opposite + { + tp.operations[0].is_collinear = false; + tp.operations[1].is_collinear = true; + + BOOST_ASSERT(inters.i_info().count > 0); + + base_turn_handler::assign_point(tp, method_touch_interior, inters.i_info(), 0); + + AssignPolicy::apply(tp, inters.pi(), inters.qi(), + inters.i_info(), inters.d_info()); + } + + tp.operations[0].operation = operation_intersection; + tp.operations[1].operation = operation_blocked; + *out++ = tp; + //tp.operations[0].operation = operation_intersection; + tp.operations[1].operation = operation_intersection; + *out++ = tp; + + res = true; + } + + return res; + } + + static inline void replace_method_and_operations_tm(method_type & method, + operation_type & op0, + operation_type & op1) + { + if ( op0 == operation_blocked && op1 == operation_blocked ) + { + // NOTE: probably only if methods are WRT IPs, not segments! + method = (method == method_touch ? method_equal : method_collinear); + op0 = operation_continue; + op1 = operation_continue; + } + else + { + if ( op0 == operation_continue || op0 == operation_blocked ) + { + op0 = operation_intersection; + } + else if ( op0 == operation_intersection ) + { + op0 = operation_union; + } + + if ( op1 == operation_continue || op1 == operation_blocked ) + { + op1 = operation_intersection; + } + else if ( op1 == operation_intersection ) + { + op1 = operation_union; + } + + // spikes in 'm' + if ( method == method_error ) + { + method = method_touch_interior; + op0 = operation_union; + op1 = operation_union; + } + } + } + + class turn_transformer_ec + { + public: + explicit turn_transformer_ec(method_type method_t_or_m) + : m_method(method_t_or_m) + {} + + template + void operator()(Turn & turn) const + { + operation_type & op0 = turn.operations[0].operation; + operation_type & op1 = turn.operations[1].operation; + + BOOST_ASSERT(op0 != operation_blocked || op1 != operation_blocked ); + + if ( op0 == operation_blocked ) + { + op0 = operation_intersection; + } + else if ( op0 == operation_intersection ) + { + op0 = operation_union; + } + + if ( op1 == operation_blocked ) + { + op1 = operation_intersection; + } + else if ( op1 == operation_intersection ) + { + op1 = operation_union; + } + + if ( op0 == operation_intersection || op0 == operation_union + || op1 == operation_intersection || op1 == operation_union ) + { + turn.method = m_method; + } + +// TODO: is this correct? +// it's equivalent to comparing to operation_blocked at the beginning of the function + turn.operations[0].is_collinear = op0 != operation_intersection; + turn.operations[1].is_collinear = op1 != operation_intersection; + } + + private: + method_type m_method; + }; + + static inline void replace_operations_i(operation_type & op0, operation_type & op1) + { + if ( op0 == operation_intersection ) + { + op0 = operation_union; + } + + if ( op1 == operation_intersection ) + { + op1 = operation_union; + } + } +}; + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURN_INFO_LL_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/get_turns.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turns.hpp index 782ea7fd2b..513bfd372f 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/get_turns.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/get_turns.hpp @@ -1,11 +1,17 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014 Oracle and/or its affiliates. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURNS_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_GET_TURNS_HPP @@ -17,15 +23,14 @@ #include #include #include -#include #include #include -#include - #include #include +#include #include +#include #include @@ -43,17 +48,22 @@ #include #include -#include -#include -#include +#include +#include +#include +#include +#include + +#include +#include +#include #include - #include +#include #include -#include #ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION # include @@ -66,10 +76,10 @@ namespace boost { namespace geometry // Silence warning C4127: conditional expression is constant #if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable : 4127) +#pragma warning(push) +#pragma warning(disable : 4127) #endif - + #ifndef DOXYGEN_NO_DETAIL namespace detail { namespace get_turns @@ -93,9 +103,7 @@ template typename Geometry1, typename Geometry2, bool Reverse1, bool Reverse2, typename Section1, typename Section2, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > class get_turns_in_sections { @@ -152,12 +160,12 @@ class get_turns_in_sections < typename tag_cast < - typename geometry::point_type::type, + typename geometry::tag::type, areal_tag - >::type, + >::type, areal_tag >::value - && index1 == 0 + && index1 == 0 && index2 >= n - 2 ; } @@ -165,15 +173,27 @@ class get_turns_in_sections public : // Returns true if terminated, false if interrupted + template static inline bool apply( int source_id1, Geometry1 const& geometry1, Section1 const& sec1, int source_id2, Geometry2 const& geometry2, Section2 const& sec2, bool skip_larger, + RobustPolicy const& robust_policy, Turns& turns, InterruptPolicy& interrupt_policy) { boost::ignore_unused_variable_warning(interrupt_policy); + if ((sec1.duplicate && (sec1.count + 1) < sec1.range_count) + || (sec2.duplicate && (sec2.count + 1) < sec2.range_count)) + { + // Skip sections containig only duplicates. + // They are still important (can indicate non-disjointness) + // but they will be found processing adjacent sections. + // Do NOT skip if they are the ONLY section + return true; + } + cview_type1 cview1(range_by_section(geometry1, sec1)); cview_type2 cview2(range_by_section(geometry2, sec2)); view_type1 view1(cview1); @@ -198,7 +218,7 @@ public : range1_iterator prev1, it1, end1; get_start_point_iterator(sec1, view1, prev1, it1, end1, - index1, ndi1, dir1, sec2.bounding_box); + index1, ndi1, dir1, sec2.bounding_box, robust_policy); // We need a circular iterator because it might run through the closing point. // One circle is actually enough but this one is just convenient. @@ -209,12 +229,12 @@ public : // section 2: [--------------] // section 1: |----|---|---|---|---| for (prev1 = it1++, next1++; - it1 != end1 && ! exceeding<0>(dir1, *prev1, sec2.bounding_box); + it1 != end1 && ! exceeding<0>(dir1, *prev1, sec2.bounding_box, robust_policy); ++prev1, ++it1, ++index1, ++next1, ++ndi1) { ever_circling_iterator nd_next1( begin_range_1, end_range_1, next1, true); - advance_to_non_duplicate_next(nd_next1, it1, sec1); + advance_to_non_duplicate_next(nd_next1, it1, sec1, robust_policy); int index2 = sec2.begin_index; int ndi2 = sec2.non_duplicate_index; @@ -222,12 +242,12 @@ public : range2_iterator prev2, it2, end2; get_start_point_iterator(sec2, view2, prev2, it2, end2, - index2, ndi2, dir2, sec1.bounding_box); + index2, ndi2, dir2, sec1.bounding_box, robust_policy); ever_circling_iterator next2(begin_range_2, end_range_2, it2, true); next2++; for (prev2 = it2++, next2++; - it2 != end2 && ! exceeding<0>(dir2, *prev2, sec1.bounding_box); + it2 != end2 && ! exceeding<0>(dir2, *prev2, sec1.bounding_box, robust_policy); ++prev2, ++it2, ++index2, ++next2, ++ndi2) { bool skip = same_source; @@ -253,10 +273,9 @@ public : // Move to the "non duplicate next" ever_circling_iterator nd_next2( begin_range_2, end_range_2, next2, true); - advance_to_non_duplicate_next(nd_next2, it2, sec2); + advance_to_non_duplicate_next(nd_next2, it2, sec2, robust_policy); typedef typename boost::range_value::type turn_info; - typedef typename turn_info::point_type ip; turn_info ti; ti.operations[0].seg_id = segment_identifier(source_id1, @@ -269,8 +288,14 @@ public : std::size_t const size_before = boost::size(turns); + bool const is_1_first = sec1.is_non_duplicate_first && index1 == sec1.begin_index; + bool const is_1_last = sec1.is_non_duplicate_last && index1+1 >= sec1.end_index; + bool const is_2_first = sec2.is_non_duplicate_first && index2 == sec2.begin_index; + bool const is_2_last = sec2.is_non_duplicate_last && index2+1 >= sec2.end_index; + TurnPolicy::apply(*prev1, *it1, *nd_next1, *prev2, *it2, *nd_next2, - ti, std::back_inserter(turns)); + is_1_first, is_1_last, is_2_first, is_2_last, + ti, robust_policy, std::back_inserter(turns)); if (InterruptPolicy::enabled) { @@ -295,24 +320,34 @@ private : typedef typename model::referring_segment segment2_type; - template - static inline bool preceding(int dir, Point const& point, Box const& box) + template + static inline bool preceding(int dir, Point const& point, Box const& box, RobustPolicy const& robust_policy) { - return (dir == 1 && get(point) < get(box)) - || (dir == -1 && get(point) > get(box)); + typename robust_point_type::type robust_point; + geometry::recalculate(robust_point, point, robust_policy); + return (dir == 1 && get(robust_point) < get(box)) + || (dir == -1 && get(robust_point) > get(box)); } - template - static inline bool exceeding(int dir, Point const& point, Box const& box) + template + static inline bool exceeding(int dir, Point const& point, Box const& box, RobustPolicy const& robust_policy) { - return (dir == 1 && get(point) > get(box)) - || (dir == -1 && get(point) < get(box)); + typename robust_point_type::type robust_point; + geometry::recalculate(robust_point, point, robust_policy); + return (dir == 1 && get(robust_point) > get(box)) + || (dir == -1 && get(robust_point) < get(box)); } - template + template static inline void advance_to_non_duplicate_next(Iterator& next, - RangeIterator const& it, Section const& section) + RangeIterator const& it, Section const& section, RobustPolicy const& robust_policy) { + typedef typename robust_point_type::type robust_point_type; + robust_point_type robust_point_from_it; + robust_point_type robust_point_from_next; + geometry::recalculate(robust_point_from_it, *it, robust_policy); + geometry::recalculate(robust_point_from_next, *next, robust_policy); + // To see where the next segments bend to, in case of touch/intersections // on end points, we need (in case of degenerate/duplicate points) an extra // iterator which moves to the REAL next point, so non duplicate. @@ -323,10 +358,14 @@ private : // So advance to the "non duplicate next" // (the check is defensive, to avoid endless loops) std::size_t check = 0; - while(! detail::disjoint::disjoint_point_point(*it, *next) + while(! detail::disjoint::disjoint_point_point + ( + robust_point_from_it, robust_point_from_next + ) && check++ < section.range_count) { next++; + geometry::recalculate(robust_point_from_next, *next, robust_policy); } } @@ -334,14 +373,14 @@ private : // because of the logistics of "index" (the section-iterator automatically // skips to the begin-point, we loose the index or have to recalculate it) // So we mimic it here - template + template static inline void get_start_point_iterator(Section & section, Range const& range, typename boost::range_iterator::type& it, typename boost::range_iterator::type& prev, typename boost::range_iterator::type& end, int& index, int& ndi, - int dir, Box const& other_bounding_box) + int dir, Box const& other_bounding_box, RobustPolicy const& robust_policy) { it = boost::begin(range) + section.begin_index; end = boost::begin(range) + section.end_index + 1; @@ -349,7 +388,7 @@ private : // Mimic section-iterator: // Skip to point such that section interects other box prev = it++; - for(; it != end && preceding<0>(dir, *it, other_bounding_box); + for(; it != end && preceding<0>(dir, *it, other_bounding_box, robust_policy); prev = it++, index++, ndi++) {} // Go back one step because we want to start completely preceding @@ -381,6 +420,7 @@ template bool Reverse1, bool Reverse2, typename Turns, typename TurnPolicy, + typename RobustPolicy, typename InterruptPolicy > struct section_visitor @@ -389,14 +429,17 @@ struct section_visitor Geometry1 const& m_geometry1; int m_source_id2; Geometry2 const& m_geometry2; + RobustPolicy const& m_rescale_policy; Turns& m_turns; InterruptPolicy& m_interrupt_policy; section_visitor(int id1, Geometry1 const& g1, int id2, Geometry2 const& g2, + RobustPolicy const& robust_policy, Turns& turns, InterruptPolicy& ip) : m_source_id1(id1), m_geometry1(g1) , m_source_id2(id2), m_geometry2(g2) + , m_rescale_policy(robust_policy) , m_turns(turns) , m_interrupt_policy(ip) {} @@ -412,13 +455,12 @@ struct section_visitor Geometry2, Reverse1, Reverse2, Section, Section, - Turns, - TurnPolicy, - InterruptPolicy + TurnPolicy >::apply( m_source_id1, m_geometry1, sec1, m_source_id2, m_geometry2, sec2, false, + m_rescale_policy, m_turns, m_interrupt_policy); } return true; @@ -430,37 +472,45 @@ template < typename Geometry1, typename Geometry2, bool Reverse1, bool Reverse2, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > class get_turns_generic { public: + template static inline void apply( int source_id1, Geometry1 const& geometry1, int source_id2, Geometry2 const& geometry2, - Turns& turns, InterruptPolicy& interrupt_policy) + RobustPolicy const& robust_policy, + Turns& turns, + InterruptPolicy& interrupt_policy) { // First create monotonic sections... typedef typename boost::range_value::type ip_type; typedef typename ip_type::point_type point_type; - typedef model::box box_type; + + typedef model::box + < + typename geometry::robust_point_type + < + point_type, RobustPolicy + >::type + > box_type; typedef typename geometry::sections sections_type; sections_type sec1, sec2; - geometry::sectionalize(geometry1, sec1, 0); - geometry::sectionalize(geometry2, sec2, 1); + geometry::sectionalize(geometry1, robust_policy, true, sec1, 0); + geometry::sectionalize(geometry2, robust_policy, true, sec2, 1); // ... and then partition them, intersecting overlapping sections in visitor method section_visitor < Geometry1, Geometry2, Reverse1, Reverse2, - Turns, TurnPolicy, InterruptPolicy - > visitor(source_id1, geometry1, source_id2, geometry2, turns, interrupt_policy); + Turns, TurnPolicy, RobustPolicy, InterruptPolicy + > visitor(source_id1, geometry1, source_id2, geometry2, robust_policy, turns, interrupt_policy); geometry::partition < @@ -475,13 +525,10 @@ template < typename Range, typename Box, bool ReverseRange, bool ReverseBox, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct get_turns_cs { - typedef typename boost::range_value::type turn_info; typedef typename geometry::point_type::type point_type; typedef typename geometry::point_type::type box_point_type; @@ -503,14 +550,16 @@ struct get_turns_cs >::type iterator_type; + template static inline void apply( int source_id1, Range const& range, int source_id2, Box const& box, + RobustPolicy const& robust_policy, Turns& turns, InterruptPolicy& interrupt_policy, int multi_index = -1, int ring_index = -1) { - if (boost::size(range) <= 1) + if ( boost::size(range) <= 1) { return; } @@ -521,6 +570,8 @@ struct get_turns_cs cview_type cview(range); view_type view(cview); + typename boost::range_size::type segments_count1 = boost::size(view) - 1; + iterator_type it = boost::begin(view); ever_circling_iterator next( @@ -569,9 +620,13 @@ struct get_turns_cs get_turns_with_box(seg_id, source_id2, *prev, *it, *next, bp[0], bp[1], bp[2], bp[3], + // NOTE: some dummy values could be passed below since this would be called only for Polygons and Boxes + index == 0, + unsigned(index) == segments_count1, + robust_policy, turns, interrupt_policy); - // Future performance enhancement: - // return if told by the interrupt policy + // Future performance enhancement: + // return if told by the interrupt policy } } } @@ -597,6 +652,7 @@ private: else return 0; } + template static inline void get_turns_with_box(segment_identifier const& seg_id, int source_id2, // Points from a range: point_type const& rp0, @@ -607,6 +663,9 @@ private: box_point_type const& bp1, box_point_type const& bp2, box_point_type const& bp3, + bool const is_range_first, + bool const is_range_last, + RobustPolicy const& robust_policy, // Output Turns& turns, InterruptPolicy& interrupt_policy) @@ -624,19 +683,27 @@ private: ti.operations[1].seg_id = segment_identifier(source_id2, -1, -1, 0); TurnPolicy::apply(rp0, rp1, rp2, bp0, bp1, bp2, - ti, std::back_inserter(turns)); + is_range_first, is_range_last, + true, false, + ti, robust_policy, std::back_inserter(turns)); ti.operations[1].seg_id = segment_identifier(source_id2, -1, -1, 1); TurnPolicy::apply(rp0, rp1, rp2, bp1, bp2, bp3, - ti, std::back_inserter(turns)); + is_range_first, is_range_last, + false, false, + ti, robust_policy, std::back_inserter(turns)); ti.operations[1].seg_id = segment_identifier(source_id2, -1, -1, 2); TurnPolicy::apply(rp0, rp1, rp2, bp2, bp3, bp0, - ti, std::back_inserter(turns)); + is_range_first, is_range_last, + false, false, + ti, robust_policy, std::back_inserter(turns)); ti.operations[1].seg_id = segment_identifier(source_id2, -1, -1, 3); TurnPolicy::apply(rp0, rp1, rp2, bp3, bp0, bp1, - ti, std::back_inserter(turns)); + is_range_first, is_range_last, + false, true, + ti, robust_policy, std::back_inserter(turns)); if (InterruptPolicy::enabled) { @@ -652,15 +719,15 @@ template < typename Polygon, typename Box, bool Reverse, bool ReverseBox, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct get_turns_polygon_cs { + template static inline void apply( int source_id1, Polygon const& polygon, int source_id2, Box const& box, + RobustPolicy const& robust_policy, Turns& turns, InterruptPolicy& interrupt_policy, int multi_index = -1) { @@ -670,32 +737,118 @@ struct get_turns_polygon_cs < ring_type, Box, Reverse, ReverseBox, - Turns, - TurnPolicy, - InterruptPolicy + TurnPolicy > intersector_type; intersector_type::apply( source_id1, geometry::exterior_ring(polygon), - source_id2, box, turns, interrupt_policy, + source_id2, box, + robust_policy, + turns, interrupt_policy, multi_index, -1); int i = 0; - typename interior_return_type::type rings - = interior_rings(polygon); - for (BOOST_AUTO_TPL(it, boost::begin(rings)); it != boost::end(rings); - ++it, ++i) + typename interior_return_type::type + rings = interior_rings(polygon); + for (typename detail::interior_iterator::type + it = boost::begin(rings); it != boost::end(rings); ++it, ++i) { intersector_type::apply( source_id1, *it, - source_id2, box, turns, interrupt_policy, + source_id2, box, + robust_policy, + turns, interrupt_policy, multi_index, i); } } }; + +template +< + typename Multi, typename Box, + bool Reverse, bool ReverseBox, + typename TurnPolicy +> +struct get_turns_multi_polygon_cs +{ + template + static inline void apply( + int source_id1, Multi const& multi, + int source_id2, Box const& box, + RobustPolicy const& robust_policy, + Turns& turns, InterruptPolicy& interrupt_policy) + { + typedef typename boost::range_iterator + < + Multi const + >::type iterator_type; + + int i = 0; + for (iterator_type it = boost::begin(multi); + it != boost::end(multi); + ++it, ++i) + { + // Call its single version + get_turns_polygon_cs + < + typename boost::range_value::type, Box, + Reverse, ReverseBox, + TurnPolicy + >::apply(source_id1, *it, source_id2, box, + robust_policy, turns, interrupt_policy, i); + } + } +}; + + +// GET_TURN_INFO_TYPE + +template +struct topological_tag_base +{ + typedef typename tag_cast::type, pointlike_tag, linear_tag, areal_tag>::type type; +}; + +template ::type, typename Tag2 = typename tag::type, + typename TagBase1 = typename topological_tag_base::type, typename TagBase2 = typename topological_tag_base::type> +struct get_turn_info_type + : overlay::get_turn_info +{}; + +template +struct get_turn_info_type + : overlay::get_turn_info_linear_linear +{}; + +template +struct get_turn_info_type + : overlay::get_turn_info_linear_areal +{}; + +template ::type, typename Tag2 = typename tag::type, + typename TagBase1 = typename topological_tag_base::type, typename TagBase2 = typename topological_tag_base::type> +struct turn_operation_type +{ + typedef overlay::turn_operation type; +}; + +template +struct turn_operation_type +{ + typedef overlay::turn_operation_linear type; +}; + +template +struct turn_operation_type +{ + typedef overlay::turn_operation_linear type; +}; + }} // namespace detail::get_turns #endif // DOXYGEN_NO_DETAIL @@ -711,18 +864,14 @@ template typename GeometryTag1, typename GeometryTag2, typename Geometry1, typename Geometry2, bool Reverse1, bool Reverse2, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct get_turns : detail::get_turns::get_turns_generic < Geometry1, Geometry2, Reverse1, Reverse2, - Turns, - TurnPolicy, - InterruptPolicy + TurnPolicy > {}; @@ -731,23 +880,19 @@ template < typename Polygon, typename Box, bool ReversePolygon, bool ReverseBox, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct get_turns < polygon_tag, box_tag, Polygon, Box, ReversePolygon, ReverseBox, - Turns, - TurnPolicy, - InterruptPolicy + TurnPolicy > : detail::get_turns::get_turns_polygon_cs < Polygon, Box, ReversePolygon, ReverseBox, - Turns, TurnPolicy, InterruptPolicy + TurnPolicy > {}; @@ -756,51 +901,71 @@ template < typename Ring, typename Box, bool ReverseRing, bool ReverseBox, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct get_turns < ring_tag, box_tag, Ring, Box, ReverseRing, ReverseBox, - Turns, - TurnPolicy, - InterruptPolicy + TurnPolicy > : detail::get_turns::get_turns_cs < Ring, Box, ReverseRing, ReverseBox, - Turns, TurnPolicy, InterruptPolicy + TurnPolicy > {}; +template +< + typename MultiPolygon, + typename Box, + bool ReverseMultiPolygon, bool ReverseBox, + typename TurnPolicy +> +struct get_turns + < + multi_polygon_tag, box_tag, + MultiPolygon, Box, + ReverseMultiPolygon, ReverseBox, + TurnPolicy + > + : detail::get_turns::get_turns_multi_polygon_cs + < + MultiPolygon, Box, + ReverseMultiPolygon, ReverseBox, + TurnPolicy + > +{}; + + template < typename GeometryTag1, typename GeometryTag2, typename Geometry1, typename Geometry2, bool Reverse1, bool Reverse2, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct get_turns_reversed { + template static inline void apply( int source_id1, Geometry1 const& g1, int source_id2, Geometry2 const& g2, - Turns& turns, InterruptPolicy& interrupt_policy) + RobustPolicy const& robust_policy, + Turns& turns, + InterruptPolicy& interrupt_policy) { get_turns < GeometryTag2, GeometryTag1, Geometry2, Geometry1, Reverse2, Reverse1, - Turns, TurnPolicy, - InterruptPolicy - >::apply(source_id2, g2, source_id1, g1, turns, interrupt_policy); + TurnPolicy + >::apply(source_id2, g2, source_id1, g1, robust_policy, + turns, interrupt_policy); } }; @@ -818,6 +983,7 @@ struct get_turns_reversed \tparam Turns type of turn-container (e.g. vector of "intersection/turn point"'s) \param geometry1 \param_geometry \param geometry2 \param_geometry +\param robust_policy policy to handle robustness issues \param turns container which will contain turn points \param interrupt_policy policy determining if process is stopped when intersection is found @@ -828,31 +994,20 @@ template typename AssignPolicy, typename Geometry1, typename Geometry2, + typename RobustPolicy, typename Turns, typename InterruptPolicy > inline void get_turns(Geometry1 const& geometry1, Geometry2 const& geometry2, + RobustPolicy const& robust_policy, Turns& turns, InterruptPolicy& interrupt_policy) { concept::check_concepts_and_equal_dimensions(); - typedef typename strategy_intersection - < - typename cs_tag::type, - Geometry1, - Geometry2, - typename boost::range_value::type - >::segment_intersection_strategy_type segment_intersection_strategy_type; - - typedef detail::overlay::get_turn_info - < - typename point_type::type, - typename point_type::type, - typename boost::range_value::type, - AssignPolicy - > TurnPolicy; + typedef detail::overlay::get_turn_info TurnPolicy; + //typedef detail::get_turns::get_turn_info_type TurnPolicy; boost::mpl::if_c < @@ -863,8 +1018,7 @@ inline void get_turns(Geometry1 const& geometry1, typename tag::type, Geometry1, Geometry2, Reverse1, Reverse2, - Turns, TurnPolicy, - InterruptPolicy + TurnPolicy >, dispatch::get_turns < @@ -872,17 +1026,17 @@ inline void get_turns(Geometry1 const& geometry1, typename tag::type, Geometry1, Geometry2, Reverse1, Reverse2, - Turns, TurnPolicy, - InterruptPolicy + TurnPolicy > >::type::apply( 0, geometry1, 1, geometry2, + robust_policy, turns, interrupt_policy); } #if defined(_MSC_VER) -#pragma warning(pop) +#pragma warning(pop) #endif }} // namespace boost::geometry diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/handle_tangencies.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/handle_tangencies.hpp index 84ec16f238..9bb8284985 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/handle_tangencies.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/handle_tangencies.hpp @@ -14,7 +14,17 @@ #include #include #include +#include +#include +#include +#include + +#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES) +#include +#endif + +#include #include @@ -31,6 +41,7 @@ template typename TurnPoints, typename Indexed, typename Geometry1, typename Geometry2, + typename RobustPolicy, bool Reverse1, bool Reverse2, typename Strategy > @@ -39,10 +50,12 @@ struct sort_in_cluster inline sort_in_cluster(TurnPoints const& turn_points , Geometry1 const& geometry1 , Geometry2 const& geometry2 + , RobustPolicy const& robust_policy , Strategy const& strategy) : m_turn_points(turn_points) , m_geometry1(geometry1) , m_geometry2(geometry2) + , m_rescale_policy(robust_policy) , m_strategy(strategy) {} @@ -51,58 +64,28 @@ private : TurnPoints const& m_turn_points; Geometry1 const& m_geometry1; Geometry2 const& m_geometry2; + RobustPolicy const& m_rescale_policy; Strategy const& m_strategy; typedef typename Indexed::type turn_operation_type; typedef typename geometry::point_type::type point_type; - typedef model::referring_segment segment_type; - // Determine how p/r and p/s are located. - template - static inline void overlap_info(P const& pi, P const& pj, - P const& ri, P const& rj, - P const& si, P const& sj, - bool& pr_overlap, bool& ps_overlap, bool& rs_overlap) + typedef typename geometry::robust_point_type + < + point_type, + RobustPolicy + >::type robust_point_type; + + // TODO: this function is shared with enrich_intersection_points + // Still called by #case_102_multi, #case_107_multi + // #case_recursive_boxes_3 + inline void get_situation_map(Indexed const& left, Indexed const& right, + robust_point_type& pi_rob, robust_point_type& pj_rob, + robust_point_type& ri_rob, robust_point_type& rj_rob, + robust_point_type& si_rob, robust_point_type& sj_rob) const { - // Determine how p/r and p/s are located. - // One of them is coming from opposite direction. - - typedef strategy::intersection::relate_cartesian_segments - < - policies::relate::segments_intersection_points - < - segment_type, - segment_type, - segment_intersection_points - > - > policy; - - segment_type p(pi, pj); - segment_type r(ri, rj); - segment_type s(si, sj); - - // Get the intersection point (or two points) - segment_intersection_points pr = policy::apply(p, r); - segment_intersection_points ps = policy::apply(p, s); - segment_intersection_points rs = policy::apply(r, s); - - // Check on overlap - pr_overlap = pr.count == 2; - ps_overlap = ps.count == 2; - rs_overlap = rs.count == 2; - } - - -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH - inline void debug_consider(int order, Indexed const& left, - Indexed const& right, std::string const& header, - bool skip = true, - std::string const& extra = "", bool ret = false - ) const - { - if (skip) return; - point_type pi, pj, ri, rj, si, sj; + geometry::copy_segment_points(m_geometry1, m_geometry2, left.subject.seg_id, pi, pj); @@ -113,8 +96,86 @@ private : right.subject.other_id, si, sj); + geometry::recalculate(pi_rob, pi, m_rescale_policy); + geometry::recalculate(pj_rob, pj, m_rescale_policy); + geometry::recalculate(ri_rob, ri, m_rescale_policy); + geometry::recalculate(rj_rob, rj, m_rescale_policy); + geometry::recalculate(si_rob, si, m_rescale_policy); + geometry::recalculate(sj_rob, sj, m_rescale_policy); + } + +#if BOOST_GEOMETRY_HANDLE_TANGENCIES_WITH_OVERLAP_INFO + // This method was still called but did no effect whatsoever on the results, + // with or without robustness-rescaling. + // Probable cause: we rescale in this file ourselves, ignoring passed policy + // TODO: check this more. + // Besides this, it currently does not compile for yet unknown reasons + // (does not find specialization for segment_ratio_type) + // It is currently only called from the Unit Test "multi_intersection.cpp" + + // Determine how p/r and p/s are located. + inline void overlap_info( + robust_point_type const& pi, robust_point_type const& pj, + robust_point_type const& ri, robust_point_type const& rj, + robust_point_type const& si, robust_point_type const& sj, + bool& pr_overlap, bool& ps_overlap, bool& rs_overlap) const + { + // Determine how p/r and p/s are located. + // One of them is coming from opposite direction. + + typedef segment_intersection_points + < + point_type, + typename segment_ratio_type + < + point_type, RobustPolicy + >::type + > intersection_return_type; + + typedef strategy::intersection::relate_cartesian_segments + < + policies::relate::segments_intersection_points + < + intersection_return_type + > + > policy; + + typedef model::referring_segment segment_type; + segment_type p(pi, pj); + segment_type r(ri, rj); + segment_type s(si, sj); + + // Get the intersection point (or two points) + intersection_return_type pr = policy::apply(p, r, m_rescale_policy, pi, pj, ri, rj); + intersection_return_type ps = policy::apply(p, s, m_rescale_policy, pi, pj, si, sj); + intersection_return_type rs = policy::apply(r, s, m_rescale_policy, ri, rj, si, sj); + + // Check on overlap + pr_overlap = pr.count == 2; + ps_overlap = ps.count == 2; + rs_overlap = rs.count == 2; + } +#endif + + +#ifdef BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES + inline void debug_consider(int order, Indexed const& left, + Indexed const& right, std::string const& header, + bool skip = true, + std::string const& extra = "", bool ret = false + ) const + { + if (skip) return; + + std::cout << "Case: " << header << " for " << left.index << " / " << right.index << std::endl; + + robust_point_type pi, pj, ri, rj, si, sj; + get_situation_map(left, right, pi, pj, ri, rj, si, sj); + +#if BOOST_GEOMETRY_HANDLE_TANGENCIES_WITH_OVERLAP_INFO bool prc = false, psc = false, rsc = false; overlap_info(pi, pj, ri, rj, si, sj, prc, psc, rsc); +#endif int const side_ri_p = m_strategy.apply(pi, pj, ri); int const side_rj_p = m_strategy.apply(pi, pj, rj); @@ -123,8 +184,7 @@ private : int const side_si_r = m_strategy.apply(ri, rj, si); int const side_sj_r = m_strategy.apply(ri, rj, sj); - std::cout << "Case: " << header << " for " << left.index << " / " << right.index << std::endl; -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH_MORE +#ifdef BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES_MORE std::cout << " Segment p:" << geometry::wkt(pi) << " .. " << geometry::wkt(pj) << std::endl; std::cout << " Segment r:" << geometry::wkt(ri) << " .. " << geometry::wkt(rj) << std::endl; std::cout << " Segment s:" << geometry::wkt(si) << " .. " << geometry::wkt(sj) << std::endl; @@ -141,7 +201,9 @@ private : << " ri//p: " << side_ri_p << " si//p: " << side_si_p << " si//r: " << side_si_r +#if BOOST_GEOMETRY_HANDLE_TANGENCIES_WITH_OVERLAP_INFO << " cnts: " << int(prc) << "," << int(psc) << "," << int(rsc) +#endif //<< " idx: " << left.index << "/" << right.index ; @@ -183,7 +245,7 @@ private : } else { -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH +#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES) std::cout << "ux/ux unhandled" << std::endl; #endif } @@ -226,7 +288,7 @@ private : } else { -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH +#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES) // this still happens in the traverse.cpp test std::cout << " iu/ux unhandled" << std::endl; #endif @@ -270,7 +332,7 @@ private : // Default case, should not occur -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH +#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES) std::cout << "ix/ix unhandled" << std::endl; #endif //debug_consider(0, left, right, header, false, "-> return", ret); @@ -280,7 +342,7 @@ private : inline bool consider_iu_iu(Indexed const& left, Indexed const& right, - std::string const& header) const + std::string const& header, bool redo = false) const { //debug_consider(0, left, right, header); @@ -298,16 +360,8 @@ private : return true; } - point_type pi, pj, ri, rj, si, sj; - geometry::copy_segment_points(m_geometry1, m_geometry2, - left.subject.seg_id, - pi, pj); - geometry::copy_segment_points(m_geometry1, m_geometry2, - left.subject.other_id, - ri, rj); - geometry::copy_segment_points(m_geometry1, m_geometry2, - right.subject.other_id, - si, sj); + robust_point_type pi, pj, ri, rj, si, sj; + get_situation_map(left, right, pi, pj, ri, rj, si, sj); int const side_ri_p = m_strategy.apply(pi, pj, ri); int const side_si_p = m_strategy.apply(pi, pj, si); @@ -337,14 +391,18 @@ private : debug_consider(0, left, right, header, false, "opp.", ret); return ret; } -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH +#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES) std::cout << " iu/iu coming from opposite unhandled" << std::endl; #endif } +#if BOOST_GEOMETRY_HANDLE_TANGENCIES_WITH_OVERLAP_INFO // We need EXTRA information here: are p/r/s overlapping? bool pr_ov = false, ps_ov = false, rs_ov = false; overlap_info(pi, pj, ri, rj, si, sj, pr_ov, ps_ov, rs_ov); +#else + // std::cout << "Boost.Geometry: skipping overlap_info" << std::endl; +#endif // One coming from right (#83,#90) // One coming from left (#90, #94, #95) @@ -352,12 +410,14 @@ private : { bool ret = false; +#if BOOST_GEOMETRY_HANDLE_TANGENCIES_WITH_OVERLAP_INFO if (pr_ov || ps_ov) { int r = side_ri_p != 0 ? side_ri_p : side_si_p; ret = r * side_si_r == 1; } else +#endif { ret = side_si_r == 1; } @@ -374,6 +434,7 @@ private : // Take the one NOT overlapping bool ret = false; bool found = false; +#if BOOST_GEOMETRY_HANDLE_TANGENCIES_WITH_OVERLAP_INFO if (pr_ov && ! ps_ov) { ret = true; @@ -384,6 +445,7 @@ private : ret = false; found = true; } +#endif debug_consider(0, left, right, header, false, "aligned", ret); if (found) @@ -392,10 +454,17 @@ private : } } -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH +#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES) std::cout << " iu/iu unhandled" << std::endl; debug_consider(0, left, right, header, false, "unhandled", left.index < right.index); #endif + if (! redo) + { + // In some cases behaviour is not symmetrical. TODO: fix this properly + // OR: alternatively we might consider calling all these functions one-way anyway + return ! consider_iu_iu(right, left, header, true); + } + return left.index < right.index; } @@ -404,16 +473,8 @@ private : { debug_consider(0, left, right, header); - point_type pi, pj, ri, rj, si, sj; - geometry::copy_segment_points(m_geometry1, m_geometry2, - left.subject.seg_id, - pi, pj); - geometry::copy_segment_points(m_geometry1, m_geometry2, - left.subject.other_id, - ri, rj); - geometry::copy_segment_points(m_geometry1, m_geometry2, - right.subject.other_id, - si, sj); + robust_point_type pi, pj, ri, rj, si, sj; + get_situation_map(left, right, pi, pj, ri, rj, si, sj); int const side_ri_p = m_strategy.apply(pi, pj, ri); int const side_si_p = m_strategy.apply(pi, pj, si); @@ -518,7 +579,7 @@ public : // Now we have no clue how to sort. -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH +#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES) std::cout << " Consider: " << operation_char(m_turn_points[left.index].operations[0].operation) << operation_char(m_turn_points[left.index].operations[1].operation) << "/" << operation_char(m_turn_points[right.index].operations[0].operation) @@ -633,12 +694,14 @@ template typename TurnPoints, typename Geometry1, typename Geometry2, + typename RobustPolicy, typename Strategy > inline void handle_cluster(Iterator begin_cluster, Iterator end_cluster, TurnPoints& turn_points, operation_type for_operation, Geometry1 const& geometry1, Geometry2 const& geometry2, + RobustPolicy& robust_policy, Strategy const& strategy) { // First inspect and (possibly) discard rows @@ -653,17 +716,17 @@ inline void handle_cluster(Iterator begin_cluster, Iterator end_cluster, TurnPoints, IndexType, Geometry1, Geometry2, + RobustPolicy, Reverse1, Reverse2, Strategy - >(turn_points, geometry1, geometry2, strategy)); + >(turn_points, geometry1, geometry2, robust_policy, strategy)); - -#ifdef BOOST_GEOMETRY_DEBUG_ENRICH +#if defined(BOOST_GEOMETRY_DEBUG_HANDLE_TANGENCIES) typedef typename IndexType::type operations_type; operations_type const& op = turn_points[begin_cluster->index].operations[begin_cluster->operation_index]; - std::cout << "Clustered points on equal distance " << op.enriched.distance << std::endl; - std::cout << "->Indexes "; + std::cout << std::endl << "Clustered points on equal distance " << op.fraction << std::endl; + std::cout << "->Indexes "; for (Iterator it = begin_cluster; it != end_cluster; ++it) { std::cout << " " << it->index; diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp new file mode 100644 index 0000000000..dd041b0d7d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/intersection_box_box.hpp @@ -0,0 +1,84 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_INTERSECTION_BOX_BOX_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_INTERSECTION_BOX_BOX_HPP + + +#include +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace intersection +{ + +template +struct intersection_box_box +{ + template + < + typename Box1, typename Box2, + typename RobustPolicy, + typename BoxOut, + typename Strategy + > + static inline bool apply(Box1 const& box1, + Box2 const& box2, + RobustPolicy const& robust_policy, + BoxOut& box_out, + Strategy const& strategy) + { + typedef typename coordinate_type::type ct; + + ct min1 = get(box1); + ct min2 = get(box2); + ct max1 = get(box1); + ct max2 = get(box2); + + if (max1 < min2 || max2 < min1) + { + return false; + } + // Set dimensions of output coordinate + set(box_out, min1 < min2 ? min2 : min1); + set(box_out, max1 > max2 ? max2 : max1); + + return intersection_box_box + ::apply(box1, box2, robust_policy, box_out, strategy); + } +}; + +template +struct intersection_box_box +{ + template + < + typename Box1, typename Box2, + typename RobustPolicy, + typename BoxOut, + typename Strategy + > + static inline bool apply(Box1 const&, Box2 const&, + RobustPolicy const&, BoxOut&, Strategy const&) + { + return true; + } +}; + + +}} // namespace detail::intersection +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_INTERSECTION_BOX_BOX_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp index f0307eaf83..a13a627456 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/intersection_insert.hpp @@ -1,6 +1,11 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) -// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014 Oracle and/or its affiliates. + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -28,8 +33,17 @@ #include #include #include + +#include +#include +#include + #include +#include +#include + + #if defined(BOOST_GEOMETRY_DEBUG_FOLLOW) #include #endif @@ -47,25 +61,58 @@ struct intersection_segment_segment_point template < typename Segment1, typename Segment2, + typename RobustPolicy, typename OutputIterator, typename Strategy > static inline OutputIterator apply(Segment1 const& segment1, - Segment2 const& segment2, OutputIterator out, + Segment2 const& segment2, + RobustPolicy const& robust_policy, + OutputIterator out, Strategy const& ) { typedef typename point_type::type point_type; + typedef typename geometry::robust_point_type + < + typename geometry::point_type::type, + RobustPolicy + >::type robust_point_type; + + // TODO: rescale segment -> robust points + robust_point_type pi_rob, pj_rob, qi_rob, qj_rob; + { + // Workaround: + point_type pi, pj, qi, qj; + assign_point_from_index<0>(segment1, pi); + assign_point_from_index<1>(segment1, pj); + assign_point_from_index<0>(segment2, qi); + assign_point_from_index<1>(segment2, qj); + geometry::recalculate(pi_rob, pi, robust_policy); + geometry::recalculate(pj_rob, pj, robust_policy); + geometry::recalculate(qi_rob, qi, robust_policy); + geometry::recalculate(qj_rob, qj, robust_policy); + } + // Get the intersection point (or two points) - segment_intersection_points is - = strategy::intersection::relate_cartesian_segments + typedef segment_intersection_points + < + point_type, + typename segment_ratio_type + < + point_type, RobustPolicy + >::type + > intersection_return_type; + + typedef strategy::intersection::relate_cartesian_segments < policies::relate::segments_intersection_points < - Segment1, - Segment2, - segment_intersection_points + intersection_return_type > - >::apply(segment1, segment2); + > policy; + + intersection_return_type is = policy::apply(segment1, segment2, + robust_policy, pi_rob, pj_rob, qi_rob, qj_rob); for (std::size_t i = 0; i < is.count; i++) { @@ -83,18 +130,25 @@ struct intersection_linestring_linestring_point template < typename Linestring1, typename Linestring2, + typename RobustPolicy, typename OutputIterator, typename Strategy > static inline OutputIterator apply(Linestring1 const& linestring1, - Linestring2 const& linestring2, OutputIterator out, + Linestring2 const& linestring2, + RobustPolicy const& robust_policy, + OutputIterator out, Strategy const& ) { typedef typename point_type::type point_type; - typedef detail::overlay::turn_info turn_info; + typedef detail::overlay::turn_info + < + point_type, + typename segment_ratio_type::type + > turn_info; std::deque turns; - geometry::get_intersection_points(linestring1, linestring2, turns); + geometry::get_intersection_points(linestring1, linestring2, robust_policy, turns); for (typename boost::range_iterator const>::type it = boost::begin(turns); it != boost::end(turns); ++it) @@ -120,7 +174,7 @@ struct intersection_of_linestring_with_areal { #if defined(BOOST_GEOMETRY_DEBUG_FOLLOW) template - static inline void debug_follow(Turn const& turn, Operation op, + static inline void debug_follow(Turn const& turn, Operation op, int index) { std::cout << index @@ -138,9 +192,11 @@ struct intersection_of_linestring_with_areal template < typename LineString, typename Areal, + typename RobustPolicy, typename OutputIterator, typename Strategy > static inline OutputIterator apply(LineString const& linestring, Areal const& areal, + RobustPolicy const& robust_policy, OutputIterator out, Strategy const& ) { @@ -158,8 +214,11 @@ struct intersection_of_linestring_with_areal > follower; typedef typename point_type::type point_type; - - typedef detail::overlay::traversal_turn_info turn_info; + typedef detail::overlay::traversal_turn_info + < + point_type, + typename geometry::segment_ratio_type::type + > turn_info; std::deque turns; detail::get_turns::no_interrupt_policy policy; @@ -167,12 +226,12 @@ struct intersection_of_linestring_with_areal < false, (OverlayType == overlay_intersection ? ReverseAreal : !ReverseAreal), - detail::overlay::calculate_distance_policy - >(linestring, areal, turns, policy); + detail::overlay::assign_null_policy + >(linestring, areal, robust_policy, turns, policy); if (turns.empty()) { - // No intersection points, it is either completely + // No intersection points, it is either completely // inside (interior + borders) // or completely outside @@ -184,8 +243,7 @@ struct intersection_of_linestring_with_areal return out; } - - if (follower::included(border_point, areal)) + if (follower::included(border_point, areal, robust_policy)) { LineStringOut copy; geometry::convert(linestring, copy); @@ -206,7 +264,7 @@ struct intersection_of_linestring_with_areal ( linestring, areal, geometry::detail::overlay::operation_intersection, - turns, out + turns, robust_policy, out ); } }; @@ -335,22 +393,23 @@ template < typename Linestring, typename Box, typename GeometryOut, - overlay_type OverlayType, bool Reverse1, bool Reverse2, bool ReverseOut > struct intersection_insert < Linestring, Box, GeometryOut, - OverlayType, + overlay_intersection, Reverse1, Reverse2, ReverseOut, linestring_tag, box_tag, linestring_tag, false, true, false > { - template + template static inline OutputIterator apply(Linestring const& linestring, - Box const& box, OutputIterator out, Strategy const& ) + Box const& box, + RobustPolicy const& , + OutputIterator out, Strategy const& ) { typedef typename point_type::type point_type; strategy::intersection::liang_barsky lb_strategy; @@ -424,9 +483,11 @@ struct intersection_insert false, true, false > { - template + template static inline OutputIterator apply(Segment const& segment, - Box const& box, OutputIterator out, Strategy const& ) + Box const& box, + RobustPolicy const& ,// TODO: propagate to clip_range_with_box + OutputIterator out, Strategy const& ) { geometry::segment_view range(segment); @@ -456,19 +517,25 @@ struct intersection_insert Areal1, Areal2, false > { - template + template static inline OutputIterator apply(Geometry1 const& geometry1, - Geometry2 const& geometry2, OutputIterator out, Strategy const& ) + Geometry2 const& geometry2, + RobustPolicy const& robust_policy, + OutputIterator out, Strategy const& ) { - typedef detail::overlay::turn_info turn_info; + typedef detail::overlay::turn_info + < + PointOut, + typename segment_ratio_type::type + > turn_info; std::vector turns; detail::get_turns::no_interrupt_policy policy; geometry::get_turns < false, false, detail::overlay::assign_null_policy - >(geometry1, geometry2, turns, policy); + >(geometry1, geometry2, robust_policy, turns, policy); for (typename std::vector::const_iterator it = turns.begin(); it != turns.end(); ++it) { @@ -488,9 +555,11 @@ template > struct intersection_insert_reversed { - template + template static inline OutputIterator apply(Geometry1 const& g1, - Geometry2 const& g2, OutputIterator out, + Geometry2 const& g2, + RobustPolicy const& robust_policy, + OutputIterator out, Strategy const& strategy) { return intersection_insert @@ -498,12 +567,138 @@ struct intersection_insert_reversed Geometry2, Geometry1, GeometryOut, OverlayType, Reverse2, Reverse1, ReverseOut - >::apply(g2, g1, out, strategy); + >::apply(g2, g1, robust_policy, out, strategy); } }; +// dispatch for non-areal geometries +template +< + typename Geometry1, typename Geometry2, typename GeometryOut, + overlay_type OverlayType, + bool Reverse1, bool Reverse2, bool ReverseOut, + typename TagIn1, typename TagIn2 +> +struct intersection_insert + < + Geometry1, Geometry2, GeometryOut, + OverlayType, + Reverse1, Reverse2, ReverseOut, + TagIn1, TagIn2, linestring_tag, + false, false, false + > : intersection_insert + < + Geometry1, Geometry2, GeometryOut, + OverlayType, + Reverse1, Reverse2, ReverseOut, + typename tag_cast::type, + typename tag_cast::type, + linestring_tag, + false, false, false + > +{}; + + +// dispatch for difference/intersection of linear geometries +template +< + typename Linear1, typename Linear2, typename LineStringOut, + overlay_type OverlayType, + bool Reverse1, bool Reverse2, bool ReverseOut +> +struct intersection_insert + < + Linear1, Linear2, LineStringOut, OverlayType, + Reverse1, Reverse2, ReverseOut, + linear_tag, linear_tag, linestring_tag, + false, false, false + > : detail::overlay::linear_linear_linestring + < + Linear1, Linear2, LineStringOut, OverlayType + > +{}; + + +// dispatch for difference/intersection of point-like geometries + +template +< + typename Point1, typename Point2, typename PointOut, + overlay_type OverlayType, + bool Reverse1, bool Reverse2, bool ReverseOut +> +struct intersection_insert + < + Point1, Point2, PointOut, OverlayType, + Reverse1, Reverse2, ReverseOut, + point_tag, point_tag, point_tag, + false, false, false + > : detail::overlay::point_point_point + < + Point1, Point2, PointOut, OverlayType + > +{}; + + +template +< + typename MultiPoint, typename Point, typename PointOut, + overlay_type OverlayType, + bool Reverse1, bool Reverse2, bool ReverseOut +> +struct intersection_insert + < + MultiPoint, Point, PointOut, OverlayType, + Reverse1, Reverse2, ReverseOut, + multi_point_tag, point_tag, point_tag, + false, false, false + > : detail::overlay::multipoint_point_point + < + MultiPoint, Point, PointOut, OverlayType + > +{}; + + +template +< + typename Point, typename MultiPoint, typename PointOut, + overlay_type OverlayType, + bool Reverse1, bool Reverse2, bool ReverseOut +> +struct intersection_insert + < + Point, MultiPoint, PointOut, OverlayType, + Reverse1, Reverse2, ReverseOut, + point_tag, multi_point_tag, point_tag, + false, false, false + > : detail::overlay::point_multipoint_point + < + Point, MultiPoint, PointOut, OverlayType + > +{}; + + +template +< + typename MultiPoint1, typename MultiPoint2, typename PointOut, + overlay_type OverlayType, + bool Reverse1, bool Reverse2, bool ReverseOut +> +struct intersection_insert + < + MultiPoint1, MultiPoint2, PointOut, OverlayType, + Reverse1, Reverse2, ReverseOut, + multi_point_tag, multi_point_tag, point_tag, + false, false, false + > : detail::overlay::multipoint_multipoint_point + < + MultiPoint1, MultiPoint2, PointOut, OverlayType + > +{}; + + } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH @@ -519,35 +714,37 @@ template bool ReverseSecond, overlay_type OverlayType, typename Geometry1, typename Geometry2, + typename RobustPolicy, typename OutputIterator, typename Strategy > inline OutputIterator insert(Geometry1 const& geometry1, Geometry2 const& geometry2, + RobustPolicy robust_policy, OutputIterator out, Strategy const& strategy) { return boost::mpl::if_c + < + geometry::reverse_dispatch::type::value, + geometry::dispatch::intersection_insert_reversed < - geometry::reverse_dispatch::type::value, - geometry::dispatch::intersection_insert_reversed - < - Geometry1, Geometry2, - GeometryOut, - OverlayType, - overlay::do_reverse::value>::value, - overlay::do_reverse::value, ReverseSecond>::value, - overlay::do_reverse::value>::value - >, - geometry::dispatch::intersection_insert - < - Geometry1, Geometry2, - GeometryOut, - OverlayType, - geometry::detail::overlay::do_reverse::value>::value, - geometry::detail::overlay::do_reverse::value, ReverseSecond>::value - > - >::type::apply(geometry1, geometry2, out, strategy); + Geometry1, Geometry2, + GeometryOut, + OverlayType, + overlay::do_reverse::value>::value, + overlay::do_reverse::value, ReverseSecond>::value, + overlay::do_reverse::value>::value + >, + geometry::dispatch::intersection_insert + < + Geometry1, Geometry2, + GeometryOut, + OverlayType, + geometry::detail::overlay::do_reverse::value>::value, + geometry::detail::overlay::do_reverse::value, ReverseSecond>::value + > + >::type::apply(geometry1, geometry2, robust_policy, out, strategy); } @@ -586,10 +783,14 @@ inline OutputIterator intersection_insert(Geometry1 const& geometry1, concept::check(); concept::check(); + typedef typename Strategy::rescale_policy_type rescale_policy_type; + rescale_policy_type robust_policy + = geometry::get_rescale_policy(geometry1, geometry2); + return detail::intersection::insert < GeometryOut, false, overlay_intersection - >(geometry1, geometry2, out, strategy); + >(geometry1, geometry2, robust_policy, out, strategy); } @@ -623,12 +824,18 @@ inline OutputIterator intersection_insert(Geometry1 const& geometry1, concept::check(); concept::check(); + typedef typename geometry::rescale_policy_type + < + typename geometry::point_type::type // TODO from both + >::type rescale_policy_type; + typedef strategy_intersection < typename cs_tag::type, Geometry1, Geometry2, - typename geometry::point_type::type + typename geometry::point_type::type, + rescale_policy_type > strategy; return intersection_insert(geometry1, geometry2, out, diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/linear_linear.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/linear_linear.hpp new file mode 100644 index 0000000000..3a7a7a7f3e --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/linear_linear.hpp @@ -0,0 +1,326 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_LINEAR_LINEAR_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_LINEAR_LINEAR_HPP + +#include +#include + +#include + +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include + + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay +{ + + +template +< + typename LineStringOut, + overlay_type OverlayType, + typename Geometry, + typename GeometryTag +> +struct linear_linear_no_intersections; + + +template +struct linear_linear_no_intersections + < + LineStringOut, overlay_difference, LineString, linestring_tag + > +{ + template + static inline OutputIterator apply(LineString const& linestring, + OutputIterator oit) + { + LineStringOut ls_out; + geometry::convert(linestring, ls_out); + *oit++ = ls_out; + return oit; + } +}; + + +template +struct linear_linear_no_intersections + < + LineStringOut, + overlay_difference, + MultiLineString, + multi_linestring_tag + > +{ + template + static inline OutputIterator apply(MultiLineString const& multilinestring, + OutputIterator oit) + { + for (typename boost::range_iterator::type + it = boost::begin(multilinestring); + it != boost::end(multilinestring); ++it) + { + LineStringOut ls_out; + geometry::convert(*it, ls_out); + *oit++ = ls_out; + } + return oit; + } +}; + + +template +struct linear_linear_no_intersections + < + LineStringOut, overlay_intersection, Geometry, GeometryTag + > +{ + template + static inline OutputIterator apply(Geometry const&, + OutputIterator oit) + { + return oit; + } +}; + + + + + + + +template +< + typename Linear1, + typename Linear2, + typename LinestringOut, + overlay_type OverlayType, + bool EnableFilterContinueTurns = false, + bool EnableRemoveDuplicateTurns = false, + bool EnableDegenerateTurns = true, +#ifdef BOOST_GEOMETRY_INTERSECTION_DO_NOT_INCLUDE_ISOLATED_POINTS + bool EnableFollowIsolatedPoints = false +#else + bool EnableFollowIsolatedPoints = true +#endif +> +class linear_linear_linestring +{ +protected: + struct assign_policy + { + static bool const include_no_turn = false; + static bool const include_degenerate = EnableDegenerateTurns; + static bool const include_opposite = false; + + template + < + typename Info, + typename Point1, + typename Point2, + typename IntersectionInfo, + typename DirInfo + > + static inline void apply(Info& , Point1 const& , Point2 const& , + IntersectionInfo const& , DirInfo const& ) + { + } + }; + + + template + < + typename Turns, + typename LinearGeometry1, + typename LinearGeometry2 + > + static inline void compute_turns(Turns& turns, + LinearGeometry1 const& linear1, + LinearGeometry2 const& linear2) + { + turns.clear(); + geometry::detail::relate::turns::get_turns + < + LinearGeometry1, + LinearGeometry2, + detail::get_turns::get_turn_info_type + < + LinearGeometry1, + LinearGeometry2, + assign_policy + > + >::apply(turns, linear1, linear2); + } + + + template + < + overlay_type OverlayTypeForFollow, + bool FollowIsolatedPoints, + typename Turns, + typename LinearGeometry1, + typename LinearGeometry2, + typename OutputIterator + > + static inline OutputIterator + sort_and_follow_turns(Turns& turns, + LinearGeometry1 const& linear1, + LinearGeometry2 const& linear2, + OutputIterator oit) + { + // remove turns that have no added value + turns::filter_continue_turns + < + Turns, + EnableFilterContinueTurns && OverlayType != overlay_intersection + >::apply(turns); + + // sort by seg_id, distance, and operation + std::sort(boost::begin(turns), boost::end(turns), + detail::turns::less_seg_fraction_other_op<>()); + + // remove duplicate turns + turns::remove_duplicate_turns + < + Turns, EnableRemoveDuplicateTurns + >::apply(turns); + + return detail::overlay::following::linear::follow + < + LinestringOut, + LinearGeometry1, + LinearGeometry2, + OverlayTypeForFollow, + FollowIsolatedPoints, + !EnableFilterContinueTurns || OverlayType == overlay_intersection + >::apply(linear1, linear2, boost::begin(turns), boost::end(turns), + oit); + } + +public: + template + < + typename RobustPolicy, typename OutputIterator, typename Strategy + > + static inline OutputIterator apply(Linear1 const& linear1, + Linear2 const& linear2, + RobustPolicy const&, + OutputIterator oit, + Strategy const& ) + { + typedef typename detail::relate::turns::get_turns + < + Linear1, Linear2 + >::turn_info turn_info; + + typedef std::vector turns_container; + + turns_container turns; + compute_turns(turns, linear1, linear2); + + if ( turns.empty() ) + { + // the two linear geometries are disjoint + return linear_linear_no_intersections + < + LinestringOut, + OverlayType, + Linear1, + typename tag::type + >::apply(linear1, oit); + } + + return sort_and_follow_turns + < + OverlayType, + EnableFollowIsolatedPoints + && OverlayType == overlay_intersection + >(turns, linear1, linear2, oit); + } +}; + + + + +template +< + typename Linear1, + typename Linear2, + typename LinestringOut, + bool EnableFilterContinueTurns, + bool EnableRemoveDuplicateTurns, + bool EnableDegenerateTurns, + bool EnableFollowIsolatedPoints +> +struct linear_linear_linestring + < + Linear1, Linear2, LinestringOut, overlay_union, + EnableFilterContinueTurns, EnableRemoveDuplicateTurns, + EnableDegenerateTurns, EnableFollowIsolatedPoints + > +{ + template + < + typename RobustPolicy, typename OutputIterator, typename Strategy + > + static inline OutputIterator apply(Linear1 const& linear1, + Linear2 const& linear2, + RobustPolicy const& robust_policy, + OutputIterator oit, + Strategy const& strategy) + { + oit = linear_linear_no_intersections + < + LinestringOut, + overlay_difference, + Linear1, + typename tag::type + >::apply(linear1, oit); + + return linear_linear_linestring + < + Linear2, Linear1, LinestringOut, overlay_difference, + EnableFilterContinueTurns, EnableRemoveDuplicateTurns, + EnableDegenerateTurns, EnableFollowIsolatedPoints + >::apply(linear2, linear1, robust_policy, oit, strategy); + } +}; + + + + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_LINEAR_LINEAR_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/overlay.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/overlay.hpp index af9a8d991b..29e0dad0ce 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/overlay.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/overlay.hpp @@ -1,6 +1,7 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -17,7 +18,6 @@ #include -#include #include #include #include @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -34,12 +35,19 @@ #include #include #include +#include + +#include #ifdef BOOST_GEOMETRY_DEBUG_ASSEMBLE # include #endif +#ifdef BOOST_GEOMETRY_TIME_OVERLAY +# include +#endif + namespace boost { namespace geometry { @@ -112,8 +120,8 @@ inline OutputIterator return_if_one_input_is_empty(Geometry1 const& geometry1, // Silence warning C4127: conditional expression is constant #if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable : 4127) +#pragma warning(push) +#pragma warning(disable : 4127) #endif // Union: return either of them @@ -127,7 +135,7 @@ inline OutputIterator return_if_one_input_is_empty(Geometry1 const& geometry1, } #if defined(_MSC_VER) -#pragma warning(pop) +#pragma warning(pop) #endif @@ -150,20 +158,21 @@ template > struct overlay { - template + template static inline OutputIterator apply( Geometry1 const& geometry1, Geometry2 const& geometry2, + RobustPolicy const& robust_policy, OutputIterator out, Strategy const& ) { - if (geometry::num_points(geometry1) == 0 - && geometry::num_points(geometry2) == 0) + if ( geometry::num_points(geometry1) == 0 + && geometry::num_points(geometry2) == 0 ) { return out; } - if (geometry::num_points(geometry1) == 0 - || geometry::num_points(geometry2) == 0) + if ( geometry::num_points(geometry1) == 0 + || geometry::num_points(geometry2) == 0 ) { return return_if_one_input_is_empty < @@ -172,7 +181,11 @@ struct overlay } typedef typename geometry::point_type::type point_type; - typedef detail::overlay::traversal_turn_info turn_info; + typedef detail::overlay::traversal_turn_info + < + point_type, + typename geometry::segment_ratio_type::type + > turn_info; typedef std::deque container_type; typedef std::deque @@ -193,8 +206,8 @@ std::cout << "get turns" << std::endl; geometry::get_turns < Reverse1, Reverse2, - detail::overlay::calculate_distance_policy - >(geometry1, geometry2, turn_points, policy); + detail::overlay::assign_null_policy + >(geometry1, geometry2, robust_policy, turn_points, policy); #ifdef BOOST_GEOMETRY_TIME_OVERLAY std::cout << "get_turns: " << timer.elapsed() << std::endl; @@ -209,6 +222,7 @@ std::cout << "enrich" << std::endl; ? geometry::detail::overlay::operation_union : geometry::detail::overlay::operation_intersection, geometry1, geometry2, + robust_policy, side_strategy); #ifdef BOOST_GEOMETRY_TIME_OVERLAY @@ -229,6 +243,7 @@ std::cout << "traverse" << std::endl; Direction == overlay_union ? geometry::detail::overlay::operation_union : geometry::detail::overlay::operation_intersection, + robust_policy, turn_points, rings ); @@ -259,8 +274,8 @@ std::cout << "traverse" << std::endl; ring_identifier id(2, 0, -1); for (typename boost::range_iterator::type it = boost::begin(rings); - it != boost::end(rings); - ++it) + it != boost::end(rings); + ++it) { selected[id] = properties(*it, true); selected[id].reversed = ReverseOut; @@ -284,24 +299,6 @@ std::cout << "traverse" << std::endl; }; -// Metafunction helper for intersection and union -template -struct do_reverse {}; - -template <> -struct do_reverse : boost::false_type {}; - -template <> -struct do_reverse : boost::true_type {}; - -template <> -struct do_reverse : boost::true_type {}; - -template <> -struct do_reverse : boost::false_type {}; - - - }} // namespace detail::overlay #endif // DOXYGEN_NO_DETAIL diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp new file mode 100644 index 0000000000..0af062d271 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/pointlike_pointlike.hpp @@ -0,0 +1,435 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014, Oracle and/or its affiliates. + +// Licensed under the Boost Software License version 1.0. +// http://www.boost.org/users/license.html + +// Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle + + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_POINTLIKE_POINTLIKE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_POINTLIKE_POINTLIKE_HPP + +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay +{ + + +// struct for copying points of the pointlike geometries to output +template +< + typename PointOut, + typename GeometryIn, + typename TagIn = typename tag::type +> +struct copy_points + : not_implemented +{}; + +template +struct copy_points +{ + template + static inline void apply(PointIn const& point_in, + OutputIterator& oit) + { + PointOut point_out; + geometry::convert(point_in, point_out); + *oit++ = point_out; + } +}; + + +template +struct copy_points +{ + template + static inline void apply(MultiPointIn const& multi_point_in, + OutputIterator& oit) + { + for (typename boost::range_iterator::type + it = boost::begin(multi_point_in); + it != boost::end(multi_point_in); ++it) + { + PointOut point_out; + geometry::convert(*it, point_out); + *oit++ = point_out; + } + } +}; + + + +// action struct for difference/intersection +template +struct action_selector_pl_pl +{}; + +template +struct action_selector_pl_pl +{ + template + < + typename Point, + typename OutputIterator + > + static inline void apply(Point const& point, + bool is_common, + OutputIterator& oit) + { + if ( is_common ) + { + copy_points::apply(point, oit); + } + } +}; + + + +template +struct action_selector_pl_pl +{ + template + < + typename Point, + typename OutputIterator + > + static inline void apply(Point const& point, + bool is_common, + OutputIterator& oit) + { + if ( !is_common ) + { + copy_points::apply(point, oit); + } + } +}; + + +//=========================================================================== + +// difference/intersection of point-point +template +< + typename Point1, + typename Point2, + typename PointOut, + overlay_type OverlayType +> +struct point_point_point +{ + template + static inline OutputIterator apply(Point1 const& point1, + Point2 const& point2, + RobustPolicy const& , + OutputIterator oit, + Strategy const&) + { + action_selector_pl_pl + < + PointOut, OverlayType + >::apply(point1, + detail::equals::equals_point_point(point1, point2), + oit); + + return oit; + } +}; + + + +// difference of multipoint-point +// +// the apply method in the following struct is called only for +// difference; for intersection the reversal will +// always call the point-multipoint version +template +< + typename MultiPoint, + typename Point, + typename PointOut, + overlay_type OverlayType +> +struct multipoint_point_point +{ + template + static inline OutputIterator apply(MultiPoint const& multipoint, + Point const& point, + RobustPolicy const& , + OutputIterator oit, + Strategy const&) + { + BOOST_ASSERT( OverlayType == overlay_difference ); + + for (typename boost::range_iterator::type + it = boost::begin(multipoint); + it != boost::end(multipoint); ++it) + { + action_selector_pl_pl + < + PointOut, OverlayType + >::apply(*it, + detail::equals::equals_point_point(*it, point), + oit); + } + + return oit; + } +}; + + +// difference/intersection of point-multipoint +template +< + typename Point, + typename MultiPoint, + typename PointOut, + overlay_type OverlayType +> +struct point_multipoint_point +{ + template + static inline OutputIterator apply(Point const& point, + MultiPoint const& multipoint, + RobustPolicy const& , + OutputIterator oit, + Strategy const&) + { + typedef action_selector_pl_pl action; + + for (typename boost::range_iterator::type + it = boost::begin(multipoint); + it != boost::end(multipoint); ++it) + { + if ( detail::equals::equals_point_point(*it, point) ) + { + action::apply(point, true, oit); + return oit; + } + } + + action::apply(point, false, oit); + return oit; + } +}; + + + +// difference/intersection of multipoint-multipoint +template +< + typename MultiPoint1, + typename MultiPoint2, + typename PointOut, + overlay_type OverlayType +> +struct multipoint_multipoint_point +{ + template + static inline OutputIterator apply(MultiPoint1 const& multipoint1, + MultiPoint2 const& multipoint2, + RobustPolicy const& robust_policy, + OutputIterator oit, + Strategy const& strategy) + { + if ( OverlayType != overlay_difference + && boost::size(multipoint1) > boost::size(multipoint2) ) + { + return multipoint_multipoint_point + < + MultiPoint2, MultiPoint1, PointOut, OverlayType + >::apply(multipoint2, multipoint1, robust_policy, oit, strategy); + } + + std::vector::type> + points2(boost::begin(multipoint2), boost::end(multipoint2)); + + std::sort(points2.begin(), points2.end(), detail::relate::less()); + + for (typename boost::range_iterator::type + it1 = boost::begin(multipoint1); + it1 != boost::end(multipoint1); ++it1) + { + bool found = std::binary_search(points2.begin(), points2.end(), + *it1, detail::relate::less()); + + action_selector_pl_pl + < + PointOut, OverlayType + >::apply(*it1, found, oit); + } + return oit; + } +}; + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + + +//=========================================================================== + + +#ifndef DOXYGEN_NO_DISPATCH +namespace detail_dispatch { namespace overlay +{ + +// dispatch struct for pointlike-pointlike difference/intersection +// computation +template +< + typename PointLike1, + typename PointLike2, + typename PointOut, + overlay_type OverlayType, + typename Tag1, + typename Tag2 +> +struct pointlike_pointlike_point + : not_implemented +{}; + + +template +< + typename Point1, + typename Point2, + typename PointOut, + overlay_type OverlayType +> +struct pointlike_pointlike_point + < + Point1, Point2, PointOut, OverlayType, + point_tag, point_tag + > : detail::overlay::point_point_point + < + Point1, Point2, PointOut, OverlayType + > +{}; + + +template +< + typename Point, + typename MultiPoint, + typename PointOut, + overlay_type OverlayType +> +struct pointlike_pointlike_point + < + Point, MultiPoint, PointOut, OverlayType, + point_tag, multi_point_tag + > : detail::overlay::point_multipoint_point + < + Point, MultiPoint, PointOut, OverlayType + > +{}; + + +template +< + typename MultiPoint, + typename Point, + typename PointOut, + overlay_type OverlayType +> +struct pointlike_pointlike_point + < + MultiPoint, Point, PointOut, OverlayType, + multi_point_tag, point_tag + > : detail::overlay::multipoint_point_point + < + MultiPoint, Point, PointOut, OverlayType + > +{}; + + +template +< + typename MultiPoint1, + typename MultiPoint2, + typename PointOut, + overlay_type OverlayType +> +struct pointlike_pointlike_point + < + MultiPoint1, MultiPoint2, PointOut, OverlayType, + multi_point_tag, multi_point_tag + > : detail::overlay::multipoint_multipoint_point + < + MultiPoint1, MultiPoint2, PointOut, OverlayType + > +{}; + + +}} // namespace detail_dispatch::overlay +#endif // DOXYGEN_NO_DISPATCH + + +//=========================================================================== + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace overlay +{ + + +// generic pointlike-pointlike union implementation +template +< + typename PointLike1, + typename PointLike2, + typename PointOut +> +struct union_pointlike_pointlike_point +{ + template + static inline OutputIterator apply(PointLike1 const& pointlike1, + PointLike2 const& pointlike2, + RobustPolicy const& robust_policy, + OutputIterator oit, + Strategy const& strategy) + { + copy_points::apply(pointlike1, oit); + + return detail_dispatch::overlay::pointlike_pointlike_point + < + PointLike2, PointLike1, PointOut, overlay_difference, + typename tag::type, + typename tag::type + >::apply(pointlike2, pointlike1, robust_policy, oit, strategy); + } + +}; + + +}} // namespace detail::overlay +#endif // DOXYGEN_NO_DETAIL + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_POINTLIKE_POINTLIKE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/select_rings.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/select_rings.hpp index f664b19514..385658a190 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/select_rings.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/select_rings.hpp @@ -1,6 +1,7 @@ // Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at @@ -9,11 +10,16 @@ #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_SELECT_RINGS_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_SELECT_RINGS_HPP + #include +#include + +#include #include #include +#include #include #include #include @@ -40,14 +46,14 @@ namespace dispatch struct select_rings { template - static inline void apply(Box const& box, Geometry const& , + static inline void apply(Box const& box, Geometry const& , ring_identifier const& id, Map& map, bool midpoint) { map[id] = typename Map::mapped_type(box, midpoint); } template - static inline void apply(Box const& box, + static inline void apply(Box const& box, ring_identifier const& id, Map& map, bool midpoint) { map[id] = typename Map::mapped_type(box, midpoint); @@ -68,7 +74,7 @@ namespace dispatch } template - static inline void apply(Ring const& ring, + static inline void apply(Ring const& ring, ring_identifier const& id, Map& map, bool midpoint) { if (boost::size(ring) > 0) @@ -91,9 +97,10 @@ namespace dispatch per_ring::apply(exterior_ring(polygon), geometry, id, map, midpoint); - typename interior_return_type::type rings - = interior_rings(polygon); - for (BOOST_AUTO_TPL(it, boost::begin(rings)); it != boost::end(rings); ++it) + typename interior_return_type::type + rings = interior_rings(polygon); + for (typename detail::interior_iterator::type + it = boost::begin(rings); it != boost::end(rings); ++it) { id.ring_index++; per_ring::apply(*it, geometry, id, map, midpoint); @@ -109,16 +116,42 @@ namespace dispatch per_ring::apply(exterior_ring(polygon), id, map, midpoint); - typename interior_return_type::type rings - = interior_rings(polygon); - for (BOOST_AUTO_TPL(it, boost::begin(rings)); it != boost::end(rings); ++it) + typename interior_return_type::type + rings = interior_rings(polygon); + for (typename detail::interior_iterator::type + it = boost::begin(rings); it != boost::end(rings); ++it) { id.ring_index++; per_ring::apply(*it, id, map, midpoint); } } }; -} + + template + struct select_rings + { + template + static inline void apply(Multi const& multi, Geometry const& geometry, + ring_identifier id, Map& map, bool midpoint) + { + typedef typename boost::range_iterator + < + Multi const + >::type iterator_type; + + typedef select_rings::type> per_polygon; + + id.multi_index = 0; + for (iterator_type it = boost::begin(multi); it != boost::end(multi); ++it) + { + id.ring_index = -1; + per_polygon::apply(*it, geometry, id, map, midpoint); + id.multi_index++; + } + } + }; + +} // namespace dispatch template @@ -213,7 +246,7 @@ inline void update_selection_map(Geometry1 const& geometry1, typename SelectionMap::mapped_type properties = it->second; // Copy by value // Calculate the "within code" (previously this was done earlier but is - // must efficienter here - it can be even more efficient doing it all at once, + // much efficienter here - it can be even more efficient doing it all at once, // using partition, TODO) // So though this is less elegant than before, it avoids many unused point-in-poly calculations switch(id.source_index) @@ -248,7 +281,7 @@ template typename IntersectionMap, typename SelectionMap > inline void select_rings(Geometry1 const& geometry1, Geometry2 const& geometry2, - IntersectionMap const& intersection_map, + IntersectionMap const& intersection_map, SelectionMap& selection_map, bool midpoint) { typedef typename geometry::tag::type tag1; @@ -271,16 +304,16 @@ template typename IntersectionMap, typename SelectionMap > inline void select_rings(Geometry const& geometry, - IntersectionMap const& intersection_map, + IntersectionMap const& intersection_map, SelectionMap& selection_map, bool midpoint) { typedef typename geometry::tag::type tag; SelectionMap map_with_all; - dispatch::select_rings::apply(geometry, + dispatch::select_rings::apply(geometry, ring_identifier(0, -1, -1), map_with_all, midpoint); - update_selection_map(geometry, geometry, intersection_map, + update_selection_map(geometry, geometry, intersection_map, map_with_all, selection_map); } diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp index 9c4c99394e..8dffeae283 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/self_turn_points.hpp @@ -9,16 +9,18 @@ #ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_SELF_TURN_POINTS_HPP #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_SELF_TURN_POINTS_HPP + #include #include #include #include +#include #include -#include +#include #include #include @@ -55,17 +57,21 @@ template typename Geometry, typename Turns, typename TurnPolicy, + typename RobustPolicy, typename InterruptPolicy > struct self_section_visitor { Geometry const& m_geometry; + RobustPolicy const& m_rescale_policy; Turns& m_turns; InterruptPolicy& m_interrupt_policy; inline self_section_visitor(Geometry const& g, + RobustPolicy const& rp, Turns& turns, InterruptPolicy& ip) : m_geometry(g) + , m_rescale_policy(rp) , m_turns(turns) , m_interrupt_policy(ip) {} @@ -82,12 +88,12 @@ struct self_section_visitor Geometry, Geometry, false, false, Section, Section, - Turns, TurnPolicy, - InterruptPolicy + TurnPolicy >::apply( 0, m_geometry, sec1, 0, m_geometry, sec2, false, + m_rescale_policy, m_turns, m_interrupt_policy); } if (m_interrupt_policy.has_intersections) @@ -103,17 +109,13 @@ struct self_section_visitor -template -< - typename Geometry, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy -> +template struct get_turns { + template static inline bool apply( Geometry const& geometry, + RobustPolicy const& robust_policy, Turns& turns, InterruptPolicy& interrupt_policy) { @@ -127,20 +129,20 @@ struct get_turns > sections_type; sections_type sec; - geometry::sectionalize(geometry, sec); + geometry::sectionalize(geometry, robust_policy, false, sec); self_section_visitor < Geometry, - Turns, TurnPolicy, InterruptPolicy - > visitor(geometry, turns, interrupt_policy); + Turns, TurnPolicy, RobustPolicy, InterruptPolicy + > visitor(geometry, robust_policy, turns, interrupt_policy); try { geometry::partition < - box_type, - detail::get_turns::get_section_box, + box_type, + detail::get_turns::get_section_box, detail::get_turns::ovelaps_section_box >::apply(sec, visitor); } @@ -166,9 +168,7 @@ template < typename GeometryTag, typename Geometry, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct self_get_turn_points { @@ -178,44 +178,32 @@ struct self_get_turn_points template < typename Ring, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct self_get_turn_points < ring_tag, Ring, - Turns, - TurnPolicy, - InterruptPolicy + TurnPolicy > - : detail::self_get_turn_points::get_turns - < - Ring, - Turns, - TurnPolicy, - InterruptPolicy - > + : detail::self_get_turn_points::get_turns {}; template < typename Box, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct self_get_turn_points < box_tag, Box, - Turns, - TurnPolicy, - InterruptPolicy + TurnPolicy > { + template static inline bool apply( Box const& , + RobustPolicy const& , Turns& , InterruptPolicy& ) { @@ -227,24 +215,28 @@ struct self_get_turn_points template < typename Polygon, - typename Turns, - typename TurnPolicy, - typename InterruptPolicy + typename TurnPolicy > struct self_get_turn_points < polygon_tag, Polygon, - Turns, - TurnPolicy, - InterruptPolicy + TurnPolicy > - : detail::self_get_turn_points::get_turns - < - Polygon, - Turns, - TurnPolicy, - InterruptPolicy - > + : detail::self_get_turn_points::get_turns +{}; + + +template +< + typename MultiPolygon, + typename TurnPolicy +> +struct self_get_turn_points + < + multi_polygon_tag, MultiPolygon, + TurnPolicy + > + : detail::self_get_turn_points::get_turns {}; @@ -259,6 +251,7 @@ struct self_get_turn_points \tparam Turns type of intersection container (e.g. vector of "intersection/turn point"'s) \param geometry geometry + \param robust_policy policy to handle robustness issues \param turns container which will contain intersection points \param interrupt_policy policy determining if process is stopped when intersection is found @@ -267,38 +260,24 @@ template < typename AssignPolicy, typename Geometry, + typename RobustPolicy, typename Turns, typename InterruptPolicy > inline void self_turns(Geometry const& geometry, + RobustPolicy const& robust_policy, Turns& turns, InterruptPolicy& interrupt_policy) { concept::check(); - typedef typename strategy_intersection - < - typename cs_tag::type, - Geometry, - Geometry, - typename boost::range_value::type - >::segment_intersection_strategy_type strategy_type; - - typedef detail::overlay::get_turn_info - < - typename point_type::type, - typename point_type::type, - typename boost::range_value::type, - detail::overlay::assign_null_policy - > TurnPolicy; + typedef detail::overlay::get_turn_info turn_policy; dispatch::self_get_turn_points < typename tag::type, Geometry, - Turns, - TurnPolicy, - InterruptPolicy - >::apply(geometry, turns, interrupt_policy); + turn_policy + >::apply(geometry, robust_policy, turns, interrupt_policy); } diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/stream_info.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/stream_info.hpp index eebe381944..51fd1b3dca 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/stream_info.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/stream_info.hpp @@ -35,7 +35,6 @@ namespace detail { namespace overlay template std::ostream& operator<<(std::ostream &os, turn_info

const& info) { - typename geometry::coordinate_type

::type d = info.distance; os << "\t" << " src " << info.seg_id.source_index << " seg " << info.seg_id.segment_index @@ -54,7 +53,7 @@ namespace detail { namespace overlay << " nxt seg " << info.travels_to_vertex_index << " , ip " << info.travels_to_ip_index << " , or " << info.next_ip_index - << " dst " << double(d) + << " frac " << info.fraction << info.visit_state; if (info.flagged) { diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/traversal_info.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/traversal_info.hpp index 810a27af04..6ee32c17c0 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/traversal_info.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/traversal_info.hpp @@ -24,15 +24,21 @@ namespace detail { namespace overlay { -template -struct traversal_turn_operation : public turn_operation +template +struct traversal_turn_operation : public turn_operation { - enrichment_info

enriched; + enrichment_info enriched; visit_info visited; }; -template -struct traversal_turn_info : public turn_info > +template +struct traversal_turn_info + : public turn_info + < + Point, + SegmentRatio, + traversal_turn_operation + > {}; diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/traverse.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/traverse.hpp index 72665922b3..bde86b4d73 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/traverse.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/traverse.hpp @@ -13,7 +13,6 @@ #include -#include #include #include #include @@ -40,7 +39,7 @@ namespace detail { namespace overlay template #ifdef BOOST_GEOMETRY_DEBUG_TRAVERSE -inline void debug_traverse(Turn const& turn, Operation op, +inline void debug_traverse(Turn const& turn, Operation op, std::string const& header) { std::cout << header @@ -94,14 +93,16 @@ template typename G1, typename G2, typename Turns, - typename IntersectionInfo + typename IntersectionInfo, + typename RobustPolicy > inline bool assign_next_ip(G1 const& g1, G2 const& g2, Turns& turns, typename boost::range_iterator::type& ip, GeometryOut& current_output, IntersectionInfo& info, - segment_identifier& seg_id) + segment_identifier& seg_id, + RobustPolicy const& robust_policy) { info.visited.set_visited(); set_visited_for_continue(*ip, info); @@ -109,7 +110,7 @@ inline bool assign_next_ip(G1 const& g1, G2 const& g2, // If there is no next IP on this segment if (info.enriched.next_ip_index < 0) { - if (info.enriched.travels_to_vertex_index < 0 + if (info.enriched.travels_to_vertex_index < 0 || info.enriched.travels_to_ip_index < 0) { return false; @@ -122,12 +123,14 @@ inline bool assign_next_ip(G1 const& g1, G2 const& g2, { geometry::copy_segments(g1, info.seg_id, info.enriched.travels_to_vertex_index, + robust_policy, current_output); } else { geometry::copy_segments(g2, info.seg_id, info.enriched.travels_to_vertex_index, + robust_policy, current_output); } seg_id = info.seg_id; @@ -139,7 +142,9 @@ inline bool assign_next_ip(G1 const& g1, G2 const& g2, seg_id = info.seg_id; } - detail::overlay::append_no_duplicates(current_output, ip->point); + detail::overlay::append_no_dups_or_spikes(current_output, ip->point, + robust_policy); + return true; } @@ -229,10 +234,11 @@ template class traverse { public : - template + template static inline void apply(Geometry1 const& geometry1, Geometry2 const& geometry2, detail::overlay::operation_type operation, + RobustPolicy const& robust_policy, Turns& turns, Rings& rings) { typedef typename boost::range_value::type ring_type; @@ -262,7 +268,7 @@ public : ++it) { // Skip discarded ones - if (! (it->is_discarded() || it->blocked())) + if (! (it->discarded || ! it->selectable_start || it->blocked())) { for (turn_operation_iterator_type iit = boost::begin(it->operations); state.good() && iit != boost::end(it->operations); @@ -277,8 +283,8 @@ public : set_visited_for_continue(*it, *iit); ring_type current_output; - detail::overlay::append_no_duplicates(current_output, - it->point, true); + detail::overlay::append_no_dups_or_spikes(current_output, + it->point, robust_policy); turn_iterator current = it; turn_operation_iterator_type current_iit = iit; @@ -288,13 +294,14 @@ public : geometry1, geometry2, turns, current, current_output, - *iit, current_seg_id)) + *iit, current_seg_id, + robust_policy)) { Backtrack::apply( - size_at_start, + size_at_start, rings, current_output, turns, *current_iit, "No next IP", - geometry1, geometry2, state); + geometry1, geometry2, robust_policy, state); } if (! detail::overlay::select_next_ip( @@ -304,10 +311,10 @@ public : current_iit)) { Backtrack::apply( - size_at_start, + size_at_start, rings, current_output, turns, *iit, "Dead end at start", - geometry1, geometry2, state); + geometry1, geometry2, robust_policy, state); } else { @@ -326,10 +333,10 @@ public : // It visits a visited node again, without passing the start node. // This makes it suspicious for endless loops Backtrack::apply( - size_at_start, + size_at_start, rings, current_output, turns, *iit, "Visit again", - geometry1, geometry2, state); + geometry1, geometry2, robust_policy, state); } else { @@ -348,7 +355,8 @@ public : detail::overlay::assign_next_ip( geometry1, geometry2, turns, current, current_output, - *current_iit, current_seg_id); + *current_iit, current_seg_id, + robust_policy); if (! detail::overlay::select_next_ip( operation, @@ -360,10 +368,10 @@ public : // Should not occur in self-intersecting polygons without spikes // Might occur in polygons with spikes Backtrack::apply( - size_at_start, + size_at_start, rings, current_output, turns, *iit, "Dead end", - geometry1, geometry2, state); + geometry1, geometry2, robust_policy, state); } else { @@ -376,10 +384,10 @@ public : // than turn points. // Turn points marked as "ii" can be visited twice. Backtrack::apply( - size_at_start, + size_at_start, rings, current_output, turns, *iit, "Endless loop", - geometry1, geometry2, state); + geometry1, geometry2, robust_policy, state); } } } @@ -390,6 +398,7 @@ public : detail::overlay::debug_traverse(*current, *iit, "->Finished"); if (geometry::num_points(current_output) >= min_num_points) { + clean_closing_dups_and_spikes(current_output, robust_policy); rings.push_back(current_output); } } diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/turn_info.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/turn_info.hpp index 89a60b21ab..91a133789e 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/turn_info.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/turn_info.hpp @@ -54,11 +54,13 @@ enum method_type The class is to be included in the turn_info class, either direct or a derived or similar class with more (e.g. enrichment) information. */ +template struct turn_operation { operation_type operation; segment_identifier seg_id; segment_identifier other_id; + SegmentRatio fraction; inline turn_operation() : operation(operation_none) @@ -78,7 +80,8 @@ struct turn_operation template < typename Point, - typename Operation = turn_operation, + typename SegmentRatio, + typename Operation = turn_operation, typename Container = boost::array > struct turn_info @@ -90,6 +93,7 @@ struct turn_info Point point; method_type method; bool discarded; + bool selectable_start; // Can be used as starting-turn in traverse Container operations; @@ -97,13 +101,14 @@ struct turn_info inline turn_info() : method(method_none) , discarded(false) + , selectable_start(true) {} inline bool both(operation_type type) const { return has12(type, type); } - + inline bool has(operation_type type) const { return this->operations[0].operation == type @@ -115,8 +120,6 @@ struct turn_info return has12(type1, type2) || has12(type2, type1); } - - inline bool is_discarded() const { return discarded; } inline bool blocked() const { return both(operation_blocked); diff --git a/3party/boost/boost/geometry/algorithms/detail/overlay/visit_info.hpp b/3party/boost/boost/geometry/algorithms/detail/overlay/visit_info.hpp index 6be63f42b4..4284a801a1 100644 --- a/3party/boost/boost/geometry/algorithms/detail/overlay/visit_info.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/overlay/visit_info.hpp @@ -10,11 +10,6 @@ #define BOOST_GEOMETRY_ALGORITHMS_DETAIL_OVERLAY_VISIT_INFO_HPP -#ifdef BOOST_GEOMETRY_USE_MSM -# include -#endif - - namespace boost { namespace geometry { @@ -22,9 +17,6 @@ namespace boost { namespace geometry namespace detail { namespace overlay { - -#if ! defined(BOOST_GEOMETRY_USE_MSM) - class visit_info { private : @@ -66,8 +58,6 @@ public: } } - - #ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION friend std::ostream& operator<<(std::ostream &os, visit_info const& v) { @@ -82,50 +72,6 @@ public: }; -#else - - -class visit_info -{ - -private : - -#ifndef USE_MSM_MINI - mutable -#endif - traverse_state state; - -public : - inline visit_info() - { - state.start(); - } - - inline void set_none() { state.process_event(none()); } // Not Yet Implemented! - inline void set_visited() { state.process_event(visit()); } - inline void set_started() { state.process_event(starting()); } - inline void set_finished() { state.process_event(finish()); } - -#ifdef USE_MSM_MINI - inline bool none() const { return state.flag_none(); } - inline bool visited() const { return state.flag_visited(); } - inline bool started() const { return state.flag_started(); } -#else - inline bool none() const { return state.is_flag_active(); } - inline bool visited() const { return state.is_flag_active(); } - inline bool started() const { return state.is_flag_active(); } -#endif - -#ifdef BOOST_GEOMETRY_DEBUG_INTERSECTION - friend std::ostream& operator<<(std::ostream &os, visit_info const& v) - { - return os; - } -#endif -}; -#endif - - }} // namespace detail::overlay #endif //DOXYGEN_NO_DETAIL diff --git a/3party/boost/boost/geometry/algorithms/detail/partition.hpp b/3party/boost/boost/geometry/algorithms/detail/partition.hpp index 45ff52ccb1..8e5f5a15d9 100644 --- a/3party/boost/boost/geometry/algorithms/detail/partition.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/partition.hpp @@ -23,7 +23,7 @@ namespace detail { namespace partition typedef std::vector index_vector_type; template -inline void divide_box(Box const& box, Box& lower_box, Box& upper_box) +void divide_box(Box const& box, Box& lower_box, Box& upper_box) { typedef typename coordinate_type::type ctype; @@ -39,10 +39,10 @@ inline void divide_box(Box const& box, Box& lower_box, Box& upper_box) } // Divide collection into three subsets: lower, upper and oversized -// (not-fitting) +// (not-fitting) // (lower == left or bottom, upper == right or top) template -static inline void divide_into_subsets(Box const& lower_box, +inline void divide_into_subsets(Box const& lower_box, Box const& upper_box, InputCollection const& collection, index_vector_type const& input, @@ -86,7 +86,7 @@ static inline void divide_into_subsets(Box const& lower_box, // Match collection with itself template -static inline void handle_one(InputCollection const& collection, +inline void handle_one(InputCollection const& collection, index_vector_type const& input, Policy& policy) { @@ -106,10 +106,15 @@ static inline void handle_one(InputCollection const& collection, } // Match collection 1 with collection 2 -template -static inline void handle_two( - InputCollection const& collection1, index_vector_type const& input1, - InputCollection const& collection2, index_vector_type const& input2, +template +< + typename InputCollection1, + typename InputCollection2, + typename Policy +> +inline void handle_two( + InputCollection1 const& collection1, index_vector_type const& input1, + InputCollection2 const& collection2, index_vector_type const& input2, Policy& policy) { typedef boost::range_iterator @@ -209,7 +214,8 @@ template < int Dimension, typename Box, - typename OverlapsPolicy, + typename OverlapsPolicy1, + typename OverlapsPolicy2, typename VisitBoxPolicy > class partition_two_collections @@ -220,15 +226,21 @@ class partition_two_collections < 1 - Dimension, Box, - OverlapsPolicy, + OverlapsPolicy1, + OverlapsPolicy2, VisitBoxPolicy > sub_divide; - template + template + < + typename InputCollection1, + typename InputCollection2, + typename Policy + > static inline void next_level(Box const& box, - InputCollection const& collection1, + InputCollection1 const& collection1, index_vector_type const& input1, - InputCollection const& collection2, + InputCollection2 const& collection2, index_vector_type const& input2, int level, std::size_t min_elements, Policy& policy, VisitBoxPolicy& box_policy) @@ -252,10 +264,15 @@ class partition_two_collections } public : - template + template + < + typename InputCollection1, + typename InputCollection2, + typename Policy + > static inline void apply(Box const& box, - InputCollection const& collection1, index_vector_type const& input1, - InputCollection const& collection2, index_vector_type const& input2, + InputCollection1 const& collection1, index_vector_type const& input1, + InputCollection2 const& collection2, index_vector_type const& input2, int level, std::size_t min_elements, Policy& policy, VisitBoxPolicy& box_policy) @@ -267,9 +284,9 @@ public : index_vector_type lower1, upper1, exceeding1; index_vector_type lower2, upper2, exceeding2; - divide_into_subsets(lower_box, upper_box, collection1, + divide_into_subsets(lower_box, upper_box, collection1, input1, lower1, upper1, exceeding1); - divide_into_subsets(lower_box, upper_box, collection2, + divide_into_subsets(lower_box, upper_box, collection2, input2, lower2, upper2, exceeding2); if (boost::size(exceeding1) > 0) @@ -308,15 +325,17 @@ struct visit_no_policy template < typename Box, - typename ExpandPolicy, - typename OverlapsPolicy, + typename ExpandPolicy1, + typename OverlapsPolicy1, + typename ExpandPolicy2 = ExpandPolicy1, + typename OverlapsPolicy2 = OverlapsPolicy1, typename VisitBoxPolicy = visit_no_policy > class partition { typedef std::vector index_vector_type; - template + template static inline void expand_to_collection(InputCollection const& collection, Box& total, index_vector_type& index_vector) { @@ -344,12 +363,12 @@ public : index_vector_type index_vector; Box total; assign_inverse(total); - expand_to_collection(collection, total, index_vector); + expand_to_collection(collection, total, index_vector); detail::partition::partition_one_collection < 0, Box, - OverlapsPolicy, + OverlapsPolicy1, VisitBoxPolicy >::apply(total, collection, index_vector, 0, min_elements, visitor, box_visitor); @@ -373,9 +392,14 @@ public : } } - template - static inline void apply(InputCollection const& collection1, - InputCollection const& collection2, + template + < + typename InputCollection1, + typename InputCollection2, + typename VisitPolicy + > + static inline void apply(InputCollection1 const& collection1, + InputCollection2 const& collection2, VisitPolicy& visitor, std::size_t min_elements = 16, VisitBoxPolicy box_visitor = visit_no_policy() @@ -387,12 +411,12 @@ public : index_vector_type index_vector1, index_vector2; Box total; assign_inverse(total); - expand_to_collection(collection1, total, index_vector1); - expand_to_collection(collection2, total, index_vector2); + expand_to_collection(collection1, total, index_vector1); + expand_to_collection(collection2, total, index_vector2); detail::partition::partition_two_collections < - 0, Box, OverlapsPolicy, VisitBoxPolicy + 0, Box, OverlapsPolicy1, OverlapsPolicy2, VisitBoxPolicy >::apply(total, collection1, index_vector1, collection2, index_vector2, @@ -402,13 +426,17 @@ public : { typedef typename boost::range_iterator < - InputCollection const - >::type iterator_type; - for(iterator_type it1 = boost::begin(collection1); + InputCollection1 const + >::type iterator_type1; + typedef typename boost::range_iterator + < + InputCollection2 const + >::type iterator_type2; + for(iterator_type1 it1 = boost::begin(collection1); it1 != boost::end(collection1); ++it1) { - for(iterator_type it2 = boost::begin(collection2); + for(iterator_type2 it2 = boost::begin(collection2); it2 != boost::end(collection2); ++it2) { @@ -417,9 +445,9 @@ public : } } } - }; + }} // namespace boost::geometry #endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_PARTITION_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp b/3party/boost/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp new file mode 100644 index 0000000000..cd3acb5ba4 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/point_is_spike_or_equal.hpp @@ -0,0 +1,126 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2008-2013 Bruno Lalande, Paris, France. +// Copyright (c) 2009-2013 Mateusz Loskot, London, UK. +// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_POINT_IS_EQUAL_OR_SPIKE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_POINT_IS_EQUAL_OR_SPIKE_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + + +#ifndef DOXYGEN_NO_DETAIL +namespace detail +{ + +// Checks if a point ("last_point") causes a spike w.r.t. +// the specified two other points (segment_a, segment_b) +// +// x-------x------x +// a lp b +// +// Above, lp generates a spike w.r.t. segment(a,b) +// So specify last point first, then (a,b) (this is unordered, so unintuitive) +template +static inline bool point_is_spike_or_equal(Point1 const& last_point, + Point2 const& segment_a, + Point3 const& segment_b) +{ + typedef typename strategy::side::services::default_strategy + < + typename cs_tag::type + >::type side_strategy; + + typedef Point1 vector_type; + + int const side = side_strategy::apply(last_point, segment_a, segment_b); + if (side == 0) + { + // Last point is collinear w.r.t previous segment. + // Check if it is equal + vector_type diff1; + conversion::convert_point_to_point(last_point, diff1); + geometry::subtract_point(diff1, segment_b); + int const sgn_x1 = math::sign(geometry::get<0>(diff1)); + int const sgn_y1 = math::sign(geometry::get<1>(diff1)); + if (sgn_x1 == 0 && sgn_y1 == 0) + { + return true; + } + + // Check if it moves forward + vector_type diff2; + conversion::convert_point_to_point(segment_b, diff2); + geometry::subtract_point(diff2, segment_a); + int const sgn_x2 = math::sign(geometry::get<0>(diff2)); + int const sgn_y2 = math::sign(geometry::get<1>(diff2)); + + return sgn_x1 != sgn_x2 || sgn_y1 != sgn_y2; + } + return false; +} + +template +< + typename Point1, + typename Point2, + typename Point3, + typename RobustPolicy +> +static inline bool point_is_spike_or_equal(Point1 const& last_point, + Point2 const& segment_a, + Point3 const& segment_b, + RobustPolicy const& robust_policy) +{ + if (point_is_spike_or_equal(last_point, segment_a, segment_b)) + { + return true; + } + + if (! RobustPolicy::enabled) + { + return false; + } + + // Try using specified robust policy + typedef typename geometry::robust_point_type + < + Point1, + RobustPolicy + >::type robust_point_type; + + robust_point_type last_point_rob, segment_a_rob, segment_b_rob; + geometry::recalculate(last_point_rob, last_point, robust_policy); + geometry::recalculate(segment_a_rob, segment_a, robust_policy); + geometry::recalculate(segment_b_rob, segment_b, robust_policy); + + return point_is_spike_or_equal + ( + last_point_rob, + segment_a_rob, + segment_b_rob + ); +} + + +} // namespace detail +#endif + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_POINT_IS_EQUAL_OR_SPIKE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/point_on_border.hpp b/3party/boost/boost/geometry/algorithms/detail/point_on_border.hpp index b7e15ba3f9..24b88a8d19 100644 --- a/3party/boost/boost/geometry/algorithms/detail/point_on_border.hpp +++ b/3party/boost/boost/geometry/algorithms/detail/point_on_border.hpp @@ -19,6 +19,7 @@ #include +#include #include #include @@ -26,7 +27,7 @@ #include #include -#include +#include namespace boost { namespace geometry @@ -153,6 +154,35 @@ struct point_on_box }; +template +< + typename Point, + typename MultiGeometry, + typename Policy +> +struct point_on_multi +{ + static inline bool apply(Point& point, MultiGeometry const& multi, bool midpoint) + { + // Take a point on the first multi-geometry + // (i.e. the first that is not empty) + for (typename boost::range_iterator + < + MultiGeometry const + >::type it = boost::begin(multi); + it != boost::end(multi); + ++it) + { + if (Policy::apply(point, *it, midpoint)) + { + return true; + } + } + return false; + } +}; + + }} // namespace detail::point_on_border #endif // DOXYGEN_NO_DETAIL @@ -203,6 +233,36 @@ struct point_on_border {}; +template +struct point_on_border + : detail::point_on_border::point_on_multi + < + Point, + Multi, + detail::point_on_border::point_on_polygon + < + Point, + typename boost::range_value::type + > + > +{}; + + +template +struct point_on_border + : detail::point_on_border::point_on_multi + < + Point, + Multi, + detail::point_on_border::point_on_range + < + Point, + typename boost::range_value::type + > + > +{}; + + } // namespace dispatch #endif // DOXYGEN_NO_DISPATCH @@ -229,8 +289,6 @@ inline bool point_on_border(Point& point, concept::check(); concept::check(); - typedef typename point_type::type point_type; - return dispatch::point_on_border < typename tag::type, diff --git a/3party/boost/boost/geometry/algorithms/detail/recalculate.hpp b/3party/boost/boost/geometry/algorithms/detail/recalculate.hpp new file mode 100644 index 0000000000..2c3ea7413b --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/recalculate.hpp @@ -0,0 +1,231 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2013 Barend Gehrels, Amsterdam, the Netherlands. +// Copyright (c) 2013 Bruno Lalande, Paris, France. +// Copyright (c) 2013 Mateusz Loskot, London, UK. +// Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RECALCULATE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RECALCULATE_HPP + + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace recalculate +{ + +template +struct recalculate_point +{ + template + static inline void apply(Point1& point1, Point2 const& point2, Strategy const& strategy) + { + std::size_t const dim = Dimension - 1; + geometry::set(point1, strategy.template apply(geometry::get(point2))); + recalculate_point::apply(point1, point2, strategy); + } +}; + +template <> +struct recalculate_point<0> +{ + template + static inline void apply(Point1&, Point2 const&, Strategy const&) + { + } +}; + + +template +struct recalculate_indexed +{ + template + static inline void apply(Geometry1& geometry1, Geometry2 const& geometry2, Strategy const& strategy) + { + // Do it for both indices in one dimension + static std::size_t const dim = Dimension - 1; + geometry::set<0, dim>(geometry1, strategy.template apply(geometry::get<0, dim>(geometry2))); + geometry::set<1, dim>(geometry1, strategy.template apply(geometry::get<1, dim>(geometry2))); + recalculate_indexed::apply(geometry1, geometry2, strategy); + } +}; + +template <> +struct recalculate_indexed<0> +{ + + template + static inline void apply(Geometry1& , Geometry2 const& , Strategy const& ) + { + } +}; + +struct range_to_range +{ + template + < + typename Range1, + typename Range2, + typename Strategy + > + static inline void apply(Range1& destination, Range2 const& source, + Strategy const& strategy) + { + typedef typename geometry::point_type::type point_type; + typedef recalculate_point::value> per_point; + geometry::clear(destination); + + for (typename boost::range_iterator::type it + = boost::begin(source); + it != boost::end(source); + ++it) + { + point_type p; + per_point::apply(p, *it, strategy); + geometry::append(destination, p); + } + } +}; + +struct polygon_to_polygon +{ +private: + template + < + typename IteratorIn, + typename IteratorOut, + typename Strategy + > + static inline void iterate(IteratorIn begin, IteratorIn end, + IteratorOut it_out, + Strategy const& strategy) + { + for (IteratorIn it_in = begin; it_in != end; ++it_in, ++it_out) + { + range_to_range::apply(*it_out, *it_in, strategy); + } + } + + template + < + typename InteriorRingsOut, + typename InteriorRingsIn, + typename Strategy + > + static inline void apply_interior_rings( + InteriorRingsOut& interior_rings_out, + InteriorRingsIn const& interior_rings_in, + Strategy const& strategy) + { + traits::resize::apply(interior_rings_out, + boost::size(interior_rings_in)); + + iterate( + boost::begin(interior_rings_in), boost::end(interior_rings_in), + boost::begin(interior_rings_out), + strategy); + } + +public: + template + < + typename Polygon1, + typename Polygon2, + typename Strategy + > + static inline void apply(Polygon1& destination, Polygon2 const& source, + Strategy const& strategy) + { + range_to_range::apply(geometry::exterior_ring(destination), + geometry::exterior_ring(source), strategy); + + apply_interior_rings(geometry::interior_rings(destination), + geometry::interior_rings(source), strategy); + } +}; + +}} // namespace detail::recalculate +#endif // DOXYGEN_NO_DETAIL + +#ifndef DOXYGEN_NO_DISPATCH +namespace dispatch +{ + +template +< + typename Geometry1, + typename Geometry2, + typename Tag1 = typename geometry::tag::type, + typename Tag2 = typename geometry::tag::type +> +struct recalculate : not_implemented +{}; + +template +struct recalculate + : detail::recalculate::recalculate_point::value> +{}; + +template +struct recalculate + : detail::recalculate::recalculate_indexed::value> +{}; + +template +struct recalculate + : detail::recalculate::recalculate_indexed::value> +{}; + +template +struct recalculate + : detail::recalculate::polygon_to_polygon +{}; + +} // namespace dispatch +#endif // DOXYGEN_NO_DISPATCH + + + +template +inline void recalculate(Geometry1& geometry1, Geometry2 const& geometry2, Strategy const& strategy) +{ + concept::check(); + concept::check(); + + // static assert dimensions (/types) are the same + + dispatch::recalculate::apply(geometry1, geometry2, strategy); +} + + +}} // namespace boost::geometry + + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RECALCULATE_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/areal_areal.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/areal_areal.hpp new file mode 100644 index 0000000000..1896b0ffa7 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/areal_areal.hpp @@ -0,0 +1,823 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_AREAL_AREAL_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_AREAL_AREAL_HPP + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +// WARNING! +// TODO: In the worst case calling this Pred in a loop for MultiPolygon/MultiPolygon may take O(NM) +// Use the rtree in this case! + +// may be used to set EI and EB for an Areal geometry for which no turns were generated +template +class no_turns_aa_pred +{ +public: + no_turns_aa_pred(OtherAreal const& other_areal, Result & res) + : m_result(res) + , m_other_areal(other_areal) + , m_flags(0) + { + // check which relations must be analysed + + if ( ! may_update(m_result) + && ! may_update(m_result) + && ! may_update(m_result) ) + { + m_flags |= 1; + } + + if ( ! may_update(m_result) + && ! may_update(m_result) ) + { + m_flags |= 2; + } + } + + template + bool operator()(Areal const& areal) + { + // if those flags are set nothing will change + if ( m_flags == 3 ) + { + return false; + } + + typedef typename geometry::point_type::type point_type; + point_type pt; + bool const ok = boost::geometry::point_on_border(pt, areal); + + // TODO: for now ignore, later throw an exception? + if ( !ok ) + { + return true; + } + + // check if the areal is inside the other_areal + // TODO: This is O(N) + // Run in a loop O(NM) - optimize! + int const pig = detail::within::point_in_geometry(pt, m_other_areal); + //BOOST_ASSERT( pig != 0 ); + + // inside + if ( pig > 0 ) + { + update(m_result); + update(m_result); + update(m_result); + m_flags |= 1; + + // TODO: OPTIMIZE! + // Only the interior rings of other ONE single geometry must be checked + // NOT all geometries + + // Check if any interior ring is outside + ring_identifier ring_id(0, -1, 0); + int const irings_count = boost::numeric_cast( + geometry::num_interior_rings(areal) ); + for ( ; ring_id.ring_index < irings_count ; ++ring_id.ring_index ) + { + typename detail::sub_range_return_type::type + range_ref = detail::sub_range(areal, ring_id); + + if ( boost::empty(range_ref) ) + { + // TODO: throw exception? + continue; // ignore + } + + // TODO: O(N) + // Optimize! + int const hpig = detail::within::point_in_geometry(range::front(range_ref), m_other_areal); + + // hole outside + if ( hpig < 0 ) + { + update(m_result); + update(m_result); + m_flags |= 2; + break; + } + } + } + // outside + else + { + update(m_result); + update(m_result); + m_flags |= 2; + + // Check if any interior ring is inside + ring_identifier ring_id(0, -1, 0); + int const irings_count = boost::numeric_cast( + geometry::num_interior_rings(areal) ); + for ( ; ring_id.ring_index < irings_count ; ++ring_id.ring_index ) + { + typename detail::sub_range_return_type::type + range_ref = detail::sub_range(areal, ring_id); + + if ( boost::empty(range_ref) ) + { + // TODO: throw exception? + continue; // ignore + } + + // TODO: O(N) + // Optimize! + int const hpig = detail::within::point_in_geometry(range::front(range_ref), m_other_areal); + + // hole inside + if ( hpig > 0 ) + { + update(m_result); + update(m_result); + update(m_result); + m_flags |= 1; + break; + } + } + } + + return m_flags != 3 && !m_result.interrupt; + } + +private: + Result & m_result; + OtherAreal const& m_other_areal; + int m_flags; +}; + +// The implementation of an algorithm calculating relate() for A/A +template +struct areal_areal +{ + // check Linear / Areal + BOOST_STATIC_ASSERT(topological_dimension::value == 2 + && topological_dimension::value == 2); + + static const bool interruption_enabled = true; + + typedef typename geometry::point_type::type point1_type; + typedef typename geometry::point_type::type point2_type; + + template + static inline void apply(Geometry1 const& geometry1, Geometry2 const& geometry2, Result & result) + { +// TODO: If Areal geometry may have infinite size, change the following line: + + // The result should be FFFFFFFFF + relate::set::value>(result);// FFFFFFFFd, d in [1,9] or T + + if ( result.interrupt ) + return; + + // get and analyse turns + typedef typename turns::get_turns::turn_info turn_type; + std::vector turns; + + interrupt_policy_areal_areal interrupt_policy(geometry1, geometry2, result); + + turns::get_turns::apply(turns, geometry1, geometry2, interrupt_policy); + if ( result.interrupt ) + return; + + no_turns_aa_pred pred1(geometry2, result); + for_each_disjoint_geometry_if<0, Geometry1>::apply(turns.begin(), turns.end(), geometry1, pred1); + if ( result.interrupt ) + return; + + no_turns_aa_pred pred2(geometry1, result); + for_each_disjoint_geometry_if<1, Geometry2>::apply(turns.begin(), turns.end(), geometry2, pred2); + if ( result.interrupt ) + return; + + if ( turns.empty() ) + return; + + if ( may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) ) + { + // sort turns + typedef turns::less<0, turns::less_op_areal_areal> less; + std::sort(turns.begin(), turns.end(), less()); + + /*if ( may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) )*/ + { + // analyse sorted turns + turns_analyser analyser; + analyse_each_turn(result, analyser, turns.begin(), turns.end()); + + if ( result.interrupt ) + return; + } + + if ( may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) ) + { + // analyse rings for which turns were not generated + // or only i/i or u/u was generated + uncertain_rings_analyser<0, Result, Geometry1, Geometry2> rings_analyser(result, geometry1, geometry2); + analyse_uncertain_rings<0>::apply(rings_analyser, turns.begin(), turns.end()); + + if ( result.interrupt ) + return; + } + } + + if ( may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) ) + { + // sort turns + typedef turns::less<1, turns::less_op_areal_areal> less; + std::sort(turns.begin(), turns.end(), less()); + + /*if ( may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) )*/ + { + // analyse sorted turns + turns_analyser analyser; + analyse_each_turn(result, analyser, turns.begin(), turns.end()); + + if ( result.interrupt ) + return; + } + + if ( may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) ) + { + // analyse rings for which turns were not generated + // or only i/i or u/u was generated + uncertain_rings_analyser<1, Result, Geometry2, Geometry1> rings_analyser(result, geometry2, geometry1); + analyse_uncertain_rings<1>::apply(rings_analyser, turns.begin(), turns.end()); + + //if ( result.interrupt ) + // return; + } + } + } + + // interrupt policy which may be passed to get_turns to interrupt the analysis + // based on the info in the passed result/mask + template + class interrupt_policy_areal_areal + { + public: + static bool const enabled = true; + + interrupt_policy_areal_areal(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Result & result) + : m_result(result) + , m_geometry1(geometry1) + , m_geometry2(geometry2) + {} + + template + inline bool apply(Range const& turns) + { + typedef typename boost::range_iterator::type iterator; + + for (iterator it = boost::begin(turns) ; it != boost::end(turns) ; ++it) + { + per_turn<0>(*it); + per_turn<1>(*it); + } + + return m_result.interrupt; + } + + private: + template + inline void per_turn(Turn const& turn) + { + static const std::size_t other_op_id = (OpId + 1) % 2; + static const bool transpose_result = OpId != 0; + + overlay::operation_type const op = turn.operations[OpId].operation; + + if ( op == overlay::operation_union ) + { + // ignore u/u + /*if ( turn.operations[other_op_id].operation != overlay::operation_union ) + { + update(m_result); + update(m_result); + }*/ + + update(m_result); + } + else if ( op == overlay::operation_intersection ) + { + // ignore i/i + if ( turn.operations[other_op_id].operation != overlay::operation_intersection ) + { + update(m_result); + //update(m_result); + } + + update(m_result); + } + else if ( op == overlay::operation_continue ) + { + update(m_result); + update(m_result); + } + else if ( op == overlay::operation_blocked ) + { + update(m_result); + update(m_result); + } + } + + Result & m_result; + Geometry1 const& m_geometry1; + Geometry2 const& m_geometry2; + }; + + // This analyser should be used like Input or SinglePass Iterator + // IMPORTANT! It should be called also for the end iterator - last + template + class turns_analyser + { + typedef typename TurnInfo::point_type turn_point_type; + + static const std::size_t op_id = OpId; + static const std::size_t other_op_id = (OpId + 1) % 2; + static const bool transpose_result = OpId != 0; + + public: + turns_analyser() + : m_previous_turn_ptr(0) + , m_previous_operation(overlay::operation_none) + , m_enter_detected(false) + , m_exit_detected(false) + {} + + template + void apply(Result & result, TurnIt it) + { + //BOOST_ASSERT( it != last ); + + overlay::operation_type const op = it->operations[op_id].operation; + + if ( op != overlay::operation_union + && op != overlay::operation_intersection + && op != overlay::operation_blocked + && op != overlay::operation_continue ) + { + return; + } + + segment_identifier const& seg_id = it->operations[op_id].seg_id; + //segment_identifier const& other_id = it->operations[other_op_id].seg_id; + + const bool first_in_range = m_seg_watcher.update(seg_id); + + if ( m_previous_turn_ptr ) + { + if ( m_exit_detected /*m_previous_operation == overlay::operation_union*/ ) + { + // real exit point - may be multiple + if ( first_in_range + || ! turn_on_the_same_ip(*m_previous_turn_ptr, *it) ) + { + update_exit(result); + m_exit_detected = false; + } + // fake exit point, reset state + else if ( op != overlay::operation_union ) + { + m_exit_detected = false; + } + } + /*else*/ + if ( m_enter_detected /*m_previous_operation == overlay::operation_intersection*/ ) + { + // real entry point + if ( first_in_range + || ! turn_on_the_same_ip(*m_previous_turn_ptr, *it) ) + { + update_enter(result); + m_enter_detected = false; + } + // fake entry point, reset state + else if ( op != overlay::operation_intersection ) + { + m_enter_detected = false; + } + } + } + + if ( op == overlay::operation_union ) + { + // already set in interrupt policy + //update(m_result); + + // ignore u/u + //if ( it->operations[other_op_id].operation != overlay::operation_union ) + { + m_exit_detected = true; + } + } + else if ( op == overlay::operation_intersection ) + { + // ignore i/i + if ( it->operations[other_op_id].operation != overlay::operation_intersection ) + { + // already set in interrupt policy + //update(result); + //update(result); + m_enter_detected = true; + } + } + else if ( op == overlay::operation_blocked ) + { + // already set in interrupt policy + } + else // if ( op == overlay::operation_continue ) + { + // already set in interrupt policy + } + + // store ref to previously analysed (valid) turn + m_previous_turn_ptr = boost::addressof(*it); + // and previously analysed (valid) operation + m_previous_operation = op; + } + + // it == last + template + void apply(Result & result) + { + //BOOST_ASSERT( first != last ); + + if ( m_exit_detected /*m_previous_operation == overlay::operation_union*/ ) + { + update_exit(result); + m_exit_detected = false; + } + + if ( m_enter_detected /*m_previous_operation == overlay::operation_intersection*/ ) + { + update_enter(result); + m_enter_detected = false; + } + } + + template + static inline void update_exit(Result & result) + { + update(result); + update(result); + } + + template + static inline void update_enter(Result & result) + { + update(result); + update(result); + } + + private: + segment_watcher m_seg_watcher; + TurnInfo * m_previous_turn_ptr; + overlay::operation_type m_previous_operation; + bool m_enter_detected; + bool m_exit_detected; + }; + + // call analyser.apply() for each turn in range + // IMPORTANT! The analyser is also called for the end iterator - last + template + static inline void analyse_each_turn(Result & res, + Analyser & analyser, + TurnIt first, TurnIt last) + { + if ( first == last ) + return; + + for ( TurnIt it = first ; it != last ; ++it ) + { + analyser.apply(res, it); + + if ( res.interrupt ) + return; + } + + analyser.apply(res); + } + + template + class uncertain_rings_analyser + { + static const bool transpose_result = OpId != 0; + static const int other_id = (OpId + 1) % 2; + + public: + inline uncertain_rings_analyser(Result & result, + Geometry const& geom, + OtherGeometry const& other_geom) + : geometry(geom), other_geometry(other_geom) + , interrupt(result.interrupt) // just in case, could be false as well + , m_result(result) + , m_flags(0) + { + // check which relations must be analysed + + if ( ! may_update(m_result) + && ! may_update(m_result) ) + { + m_flags |= 1; + } + + if ( ! may_update(m_result) + && ! may_update(m_result) ) + { + m_flags |= 2; + } + + if ( ! may_update(m_result) + && ! may_update(m_result) ) + { + m_flags |= 4; + } + } + + inline void no_turns(segment_identifier const& seg_id) + { + // if those flags are set nothing will change + if ( (m_flags & 3) == 3 ) + { + return; + } + + typename detail::sub_range_return_type::type + range_ref = detail::sub_range(geometry, seg_id); + + if ( boost::empty(range_ref) ) + { + // TODO: throw an exception? + return; // ignore + } + + // TODO: possible optimization + // if the range is an interior ring we may use other IPs generated for this single geometry + // to know which other single geometries should be checked + + // TODO: optimize! e.g. use spatial index + // O(N) - running it in a loop would gives O(NM) + int const pig = detail::within::point_in_geometry(range::front(range_ref), other_geometry); + + //BOOST_ASSERT(pig != 0); + if ( pig > 0 ) + { + update(m_result); + update(m_result); + m_flags |= 1; + } + else + { + update(m_result); + update(m_result); + m_flags |= 2; + } + +// TODO: break if all things are set +// also some of them could be checked outside, before the analysis +// In this case we shouldn't relay just on dummy flags +// Flags should be initialized with proper values +// or the result should be checked directly +// THIS IS ALSO TRUE FOR OTHER ANALYSERS! in L/L and L/A + + interrupt = m_flags == 7 || m_result.interrupt; + } + + template + inline void turns(TurnIt first, TurnIt last) + { + // if those flags are set nothing will change + if ( (m_flags & 6) == 6 ) + { + return; + } + + bool found_ii = false; + bool found_uu = false; + + for ( TurnIt it = first ; it != last ; ++it ) + { + if ( it->operations[0].operation == overlay::operation_intersection + && it->operations[1].operation == overlay::operation_intersection ) + { + // ignore exterior ring + if ( it->operations[OpId].seg_id.ring_index >= 0 ) + { + found_ii = true; + } + } + else if ( it->operations[0].operation == overlay::operation_union + && it->operations[1].operation == overlay::operation_union ) + { + // ignore if u/u is for holes + //if ( it->operations[OpId].seg_id.ring_index >= 0 + // && it->operations[other_id].seg_id.ring_index >= 0 ) + { + found_uu = true; + } + } + else // ignore + { + return; // don't interrupt + } + } + + // only i/i was generated for this ring + if ( found_ii ) + { + //update(m_result); + //update(m_result); + update(m_result); + update(m_result); + m_flags |= 4; + } + + // only u/u was generated for this ring + if ( found_uu ) + { + update(m_result); + update(m_result); + m_flags |= 2; + + // not necessary since this will be checked in the next iteration + // but increases the pruning strength + // WARNING: this is not reflected in flags + update(m_result); + update(m_result); + } + + interrupt = m_flags == 7 || m_result.interrupt; // interrupt if the result won't be changed in the future + } + + Geometry const& geometry; + OtherGeometry const& other_geometry; + bool interrupt; + + private: + Result & m_result; + int m_flags; + }; + + template + class analyse_uncertain_rings + { + public: + template + static inline void apply(Analyser & analyser, TurnIt first, TurnIt last) + { + if ( first == last ) + return; + + for_preceding_rings(analyser, *first); + //analyser.per_turn(*first); + + TurnIt prev = first; + for ( ++first ; first != last ; ++first, ++prev ) + { + // same multi + if ( prev->operations[OpId].seg_id.multi_index + == first->operations[OpId].seg_id.multi_index ) + { + // same ring + if ( prev->operations[OpId].seg_id.ring_index + == first->operations[OpId].seg_id.ring_index ) + { + //analyser.per_turn(*first); + } + // same multi, next ring + else + { + //analyser.end_ring(*prev); + analyser.turns(prev, first); + + //if ( prev->operations[OpId].seg_id.ring_index + 1 + // < first->operations[OpId].seg_id.ring_index) + { + for_no_turns_rings(analyser, + *first, + prev->operations[OpId].seg_id.ring_index + 1, + first->operations[OpId].seg_id.ring_index); + } + + //analyser.per_turn(*first); + } + } + // next multi + else + { + //analyser.end_ring(*prev); + analyser.turns(prev, first); + for_following_rings(analyser, *prev); + for_preceding_rings(analyser, *first); + //analyser.per_turn(*first); + } + + if ( analyser.interrupt ) + { + return; + } + } + + //analyser.end_ring(*prev); + analyser.turns(prev, first); // first == last + for_following_rings(analyser, *prev); + } + + private: + template + static inline void for_preceding_rings(Analyser & analyser, Turn const& turn) + { + segment_identifier const& seg_id = turn.operations[OpId].seg_id; + + for_no_turns_rings(analyser, turn, -1, seg_id.ring_index); + } + + template + static inline void for_following_rings(Analyser & analyser, Turn const& turn) + { + segment_identifier const& seg_id = turn.operations[OpId].seg_id; + + int count = boost::numeric_cast( + geometry::num_interior_rings( + detail::single_geometry(analyser.geometry, seg_id))); + + for_no_turns_rings(analyser, turn, seg_id.ring_index + 1, count); + } + + template + static inline void for_no_turns_rings(Analyser & analyser, Turn const& turn, int first, int last) + { + segment_identifier seg_id = turn.operations[OpId].seg_id; + + for ( seg_id.ring_index = first ; seg_id.ring_index < last ; ++seg_id.ring_index ) + { + analyser.no_turns(seg_id); + } + } + }; +}; + +}} // namespace detail::relate +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_AREAL_AREAL_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/boundary_checker.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/boundary_checker.hpp new file mode 100644 index 0000000000..f98c3e9b82 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/boundary_checker.hpp @@ -0,0 +1,134 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_BOUNDARY_CHECKER_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_BOUNDARY_CHECKER_HPP + +#include +#include +#include + +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +enum boundary_query { boundary_front, boundary_back, boundary_any }; + +template ::type> +class boundary_checker {}; + +template +class boundary_checker +{ + typedef typename point_type::type point_type; + +public: + boundary_checker(Geometry const& g) + : has_boundary( boost::size(g) >= 2 + && !detail::equals::equals_point_point(range::front(g), range::back(g)) ) + , geometry(g) + {} + + template + bool is_endpoint_boundary(point_type const& pt) const + { + boost::ignore_unused_variable_warning(pt); +#ifdef BOOST_GEOMETRY_DEBUG_RELATE_BOUNDARY_CHECKER + // may give false positives for INT + BOOST_ASSERT( (BoundaryQuery == boundary_front || BoundaryQuery == boundary_any) + && detail::equals::equals_point_point(pt, range::front(geometry)) + || (BoundaryQuery == boundary_back || BoundaryQuery == boundary_any) + && detail::equals::equals_point_point(pt, range::back(geometry)) ); +#endif + return has_boundary; + } + +private: + bool has_boundary; + Geometry const& geometry; +}; + +template +class boundary_checker +{ + typedef typename point_type::type point_type; + +public: + boundary_checker(Geometry const& g) + : is_filled(false), geometry(g) + {} + + // First call O(NlogN) + // Each next call O(logN) + template + bool is_endpoint_boundary(point_type const& pt) const + { + typedef typename boost::range_size::type size_type; + size_type multi_count = boost::size(geometry); + + if ( multi_count < 1 ) + return false; + + if ( ! is_filled ) + { + //boundary_points.clear(); + boundary_points.reserve(multi_count * 2); + + typedef typename boost::range_iterator::type multi_iterator; + for ( multi_iterator it = boost::begin(geometry) ; + it != boost::end(geometry) ; ++ it ) + { + // empty or point - no boundary + if ( boost::size(*it) < 2 ) + continue; + + // linear ring or point - no boundary + if ( equals::equals_point_point(range::front(*it), range::back(*it)) ) + continue; + + boundary_points.push_back(range::front(*it)); + boundary_points.push_back(range::back(*it)); + } + + std::sort(boundary_points.begin(), boundary_points.end(), geometry::less()); + + is_filled = true; + } + + std::size_t equal_points_count + = boost::size( + std::equal_range(boundary_points.begin(), + boundary_points.end(), + pt, + geometry::less()) + ); + + return equal_points_count % 2 != 0;// && equal_points_count > 0; // the number is odd and > 0 + } + +private: + mutable bool is_filled; + // TODO: store references/pointers instead of points? + mutable std::vector boundary_points; + + Geometry const& geometry; +}; + +}} // namespace detail::relate +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_BOUNDARY_CHECKER_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/follow_helpers.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/follow_helpers.hpp new file mode 100644 index 0000000000..78fa03798d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/follow_helpers.hpp @@ -0,0 +1,401 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_FOLLOW_HELPERS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_FOLLOW_HELPERS_HPP + +#include +//#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +// NOTE: This iterates through single geometries for which turns were not generated. +// It doesn't mean that the geometry is disjoint, only that no turns were detected. + +template ::type, + bool IsMulti = boost::is_base_of::value +> +struct for_each_disjoint_geometry_if + : public not_implemented +{}; + +template +struct for_each_disjoint_geometry_if +{ + template + static inline bool apply(TurnIt first, TurnIt last, + Geometry const& geometry, + Pred & pred) + { + if ( first != last ) + return false; + pred(geometry); + return true; + } +}; + +template +struct for_each_disjoint_geometry_if +{ + template + static inline bool apply(TurnIt first, TurnIt last, + Geometry const& geometry, + Pred & pred) + { + if ( first != last ) + return for_turns(first, last, geometry, pred); + else + return for_empty(geometry, pred); + } + + template + static inline bool for_empty(Geometry const& geometry, + Pred & pred) + { + typedef typename boost::range_iterator::type iterator; + + // O(N) + // check predicate for each contained geometry without generated turn + for ( iterator it = boost::begin(geometry) ; + it != boost::end(geometry) ; ++it ) + { + bool cont = pred(*it); + if ( !cont ) + break; + } + + return !boost::empty(geometry); + } + + template + static inline bool for_turns(TurnIt first, TurnIt last, + Geometry const& geometry, + Pred & pred) + { + BOOST_ASSERT(first != last); + + const std::size_t count = boost::size(geometry); + boost::ignore_unused_variable_warning(count); + + // O(I) + // gather info about turns generated for contained geometries + std::vector detected_intersections(count, false); + for ( TurnIt it = first ; it != last ; ++it ) + { + int multi_index = it->operations[OpId].seg_id.multi_index; + BOOST_ASSERT(multi_index >= 0); + std::size_t index = static_cast(multi_index); + BOOST_ASSERT(index < count); + detected_intersections[index] = true; + } + + bool found = false; + + // O(N) + // check predicate for each contained geometry without generated turn + for ( std::vector::iterator it = detected_intersections.begin() ; + it != detected_intersections.end() ; ++it ) + { + // if there were no intersections for this multi_index + if ( *it == false ) + { + found = true; + bool cont = pred(range::at(geometry, + std::distance(detected_intersections.begin(), it))); + if ( !cont ) + break; + } + } + + return found; + } +}; + +// WARNING! This class stores pointers! +// Passing a reference to local variable will result in undefined behavior! +template +class point_info +{ +public: + point_info() : sid_ptr(NULL), pt_ptr(NULL) {} + point_info(Point const& pt, segment_identifier const& sid) + : sid_ptr(boost::addressof(sid)) + , pt_ptr(boost::addressof(pt)) + {} + segment_identifier const& seg_id() const + { + BOOST_ASSERT(sid_ptr); + return *sid_ptr; + } + Point const& point() const + { + BOOST_ASSERT(pt_ptr); + return *pt_ptr; + } + + //friend bool operator==(point_identifier const& l, point_identifier const& r) + //{ + // return l.seg_id() == r.seg_id() + // && detail::equals::equals_point_point(l.point(), r.point()); + //} + +private: + const segment_identifier * sid_ptr; + const Point * pt_ptr; +}; + +// WARNING! This class stores pointers! +// Passing a reference to local variable will result in undefined behavior! +class same_single +{ +public: + same_single(segment_identifier const& sid) + : sid_ptr(boost::addressof(sid)) + {} + + bool operator()(segment_identifier const& sid) const + { + return sid.multi_index == sid_ptr->multi_index; + } + + template + bool operator()(point_info const& pid) const + { + return operator()(pid.seg_id()); + } + +private: + const segment_identifier * sid_ptr; +}; + +class same_ring +{ +public: + same_ring(segment_identifier const& sid) + : sid_ptr(boost::addressof(sid)) + {} + + bool operator()(segment_identifier const& sid) const + { + return sid.multi_index == sid_ptr->multi_index + && sid.ring_index == sid_ptr->ring_index; + } + +private: + const segment_identifier * sid_ptr; +}; + +// WARNING! This class stores pointers! +// Passing a reference to local variable will result in undefined behavior! +template +class segment_watcher +{ +public: + segment_watcher() + : m_seg_id_ptr(NULL) + {} + + bool update(segment_identifier const& seg_id) + { + bool result = m_seg_id_ptr == 0 || !SameRange(*m_seg_id_ptr)(seg_id); + m_seg_id_ptr = boost::addressof(seg_id); + return result; + } + +private: + const segment_identifier * m_seg_id_ptr; +}; + +// WARNING! This class stores pointers! +// Passing a reference to local variable will result in undefined behavior! +template +class exit_watcher +{ + static const std::size_t op_id = OpId; + static const std::size_t other_op_id = (OpId + 1) % 2; + + typedef typename TurnInfo::point_type point_type; + typedef detail::relate::point_info point_info; + +public: + exit_watcher() + : m_exit_operation(overlay::operation_none) + , m_exit_turn_ptr(NULL) + {} + + void enter(TurnInfo const& turn) + { + m_other_entry_points.push_back( + point_info(turn.point, turn.operations[other_op_id].seg_id) ); + } + + // TODO: exit_per_geometry parameter looks not very safe + // wrong value may be easily passed + + void exit(TurnInfo const& turn, bool exit_per_geometry = true) + { + //segment_identifier const& seg_id = turn.operations[op_id].seg_id; + segment_identifier const& other_id = turn.operations[other_op_id].seg_id; + overlay::operation_type exit_op = turn.operations[op_id].operation; + + typedef typename std::vector::iterator point_iterator; + // search for the entry point in the same range of other geometry + point_iterator entry_it = std::find_if(m_other_entry_points.begin(), + m_other_entry_points.end(), + same_single(other_id)); + + // this end point has corresponding entry point + if ( entry_it != m_other_entry_points.end() ) + { + // erase the corresponding entry point + m_other_entry_points.erase(entry_it); + + if ( exit_per_geometry || m_other_entry_points.empty() ) + { + // here we know that we possibly left LS + // we must still check if we didn't get back on the same point + m_exit_operation = exit_op; + m_exit_turn_ptr = boost::addressof(turn); + } + } + } + + bool is_outside() const + { + // if we didn't entered anything in the past, we're outside + return m_other_entry_points.empty(); + } + + bool is_outside(TurnInfo const& turn) const + { + return m_other_entry_points.empty() + || std::find_if(m_other_entry_points.begin(), + m_other_entry_points.end(), + same_single( + turn.operations[other_op_id].seg_id)) + == m_other_entry_points.end(); + } + + overlay::operation_type get_exit_operation() const + { + return m_exit_operation; + } + + point_type const& get_exit_point() const + { + BOOST_ASSERT(m_exit_operation != overlay::operation_none); + BOOST_ASSERT(m_exit_turn_ptr); + return m_exit_turn_ptr->point; + } + + TurnInfo const& get_exit_turn() const + { + BOOST_ASSERT(m_exit_operation != overlay::operation_none); + BOOST_ASSERT(m_exit_turn_ptr); + return *m_exit_turn_ptr; + } + + void reset_detected_exit() + { + m_exit_operation = overlay::operation_none; + } + + void reset() + { + m_exit_operation = overlay::operation_none; + m_other_entry_points.clear(); + } + +private: + overlay::operation_type m_exit_operation; + const TurnInfo * m_exit_turn_ptr; + std::vector m_other_entry_points; // TODO: use map here or sorted vector? +}; + +template +inline bool turn_on_the_same_ip(Turn const& prev_turn, Turn const& curr_turn) +{ + segment_identifier const& prev_seg_id = prev_turn.operations[OpId].seg_id; + segment_identifier const& curr_seg_id = curr_turn.operations[OpId].seg_id; + + if ( prev_seg_id.multi_index != curr_seg_id.multi_index + || prev_seg_id.ring_index != curr_seg_id.ring_index ) + { + return false; + } + + // TODO: will this work if between segments there will be some number of degenerated ones? + + if ( prev_seg_id.segment_index != curr_seg_id.segment_index + && ( ! curr_turn.operations[OpId].fraction.is_zero() + || prev_seg_id.segment_index + 1 != curr_seg_id.segment_index ) ) + { + return false; + } + + return detail::equals::equals_point_point(prev_turn.point, curr_turn.point); +} + +template +static inline bool is_endpoint_on_boundary(Point const& pt, + BoundaryChecker & boundary_checker) +{ + return boundary_checker.template is_endpoint_boundary(pt); +} + +template +static inline bool is_ip_on_boundary(IntersectionPoint const& ip, + OperationInfo const& operation_info, + BoundaryChecker & boundary_checker, + segment_identifier const& seg_id) +{ + boost::ignore_unused_variable_warning(seg_id); + + bool res = false; + + // IP on the last point of the linestring + if ( (BoundaryQuery == boundary_back || BoundaryQuery == boundary_any) + && operation_info.position == overlay::position_back ) + { + // check if this point is a boundary + res = boundary_checker.template is_endpoint_boundary(ip); + } + // IP on the last point of the linestring + else if ( (BoundaryQuery == boundary_front || BoundaryQuery == boundary_any) + && operation_info.position == overlay::position_front ) + { + // check if this point is a boundary + res = boundary_checker.template is_endpoint_boundary(ip); + } + + return res; +} + + +}} // namespace detail::relate +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_FOLLOW_HELPERS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/less.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/less.hpp new file mode 100644 index 0000000000..3f11d4e87d --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/less.hpp @@ -0,0 +1,79 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2014. +// Modifications copyright (c) 2014, Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LESS_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LESS_HPP + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DISPATCH +namespace detail_dispatch { namespace relate { + +// TODO: Integrate it with geometry::less? + +template ::value> +struct less +{ + static inline bool apply(Point1 const& left, Point2 const& right) + { + typename geometry::coordinate_type::type + cleft = geometry::get(left); + typename geometry::coordinate_type::type + cright = geometry::get(right); + + if ( geometry::math::equals(cleft, cright) ) + { + return less::apply(left, right); + } + else + { + return cleft < cright; + } + } +}; + +template +struct less +{ + static inline bool apply(Point1 const&, Point2 const&) + { + return false; + } +}; + +}} // namespace detail_dispatch::relate + +#endif + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +struct less +{ + template + inline bool operator()(Point1 const& point1, Point2 const& point2) const + { + return detail_dispatch::relate::less::apply(point1, point2); + } +}; + +}} // namespace detail::relate +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LESS_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/linear_areal.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/linear_areal.hpp new file mode 100644 index 0000000000..f05832d552 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/linear_areal.hpp @@ -0,0 +1,1111 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LINEAR_AREAL_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LINEAR_AREAL_HPP + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +// WARNING! +// TODO: In the worst case calling this Pred in a loop for MultiLinestring/MultiPolygon may take O(NM) +// Use the rtree in this case! + +// may be used to set IE and BE for a Linear geometry for which no turns were generated +template +class no_turns_la_linestring_pred +{ +public: + no_turns_la_linestring_pred(Geometry2 const& geometry2, + Result & res, + BoundaryChecker const& boundary_checker) + : m_geometry2(geometry2) + , m_result(res) + , m_boundary_checker(boundary_checker) + , m_interrupt_flags(0) + { + if ( ! may_update(m_result) ) + { + m_interrupt_flags |= 1; + } + + if ( ! may_update(m_result) ) + { + m_interrupt_flags |= 2; + } + + if ( ! may_update(m_result) ) + { + m_interrupt_flags |= 4; + } + + if ( ! may_update(m_result) ) + { + m_interrupt_flags |= 8; + } + } + + template + bool operator()(Linestring const& linestring) + { + std::size_t const count = boost::size(linestring); + + // invalid input + if ( count < 2 ) + { + // ignore + // TODO: throw an exception? + return true; + } + + // if those flags are set nothing will change + if ( m_interrupt_flags == 0xF ) + { + return false; + } + + int const pig = detail::within::point_in_geometry(range::front(linestring), m_geometry2); + //BOOST_ASSERT_MSG(pig != 0, "There should be no IPs"); + + if ( pig > 0 ) + { + update(m_result); + m_interrupt_flags |= 1; + } + else + { + update(m_result); + m_interrupt_flags |= 2; + } + + // check if there is a boundary + if ( ( m_interrupt_flags & 0xC ) != 0xC // if wasn't already set + && ( m_boundary_checker.template + is_endpoint_boundary(range::front(linestring)) + || m_boundary_checker.template + is_endpoint_boundary(range::back(linestring)) ) ) + { + if ( pig > 0 ) + { + update(m_result); + m_interrupt_flags |= 4; + } + else + { + update(m_result); + m_interrupt_flags |= 8; + } + } + + return m_interrupt_flags != 0xF + && ! m_result.interrupt; + } + +private: + Geometry2 const& m_geometry2; + Result & m_result; + BoundaryChecker const& m_boundary_checker; + unsigned m_interrupt_flags; +}; + +// may be used to set EI and EB for an Areal geometry for which no turns were generated +template +class no_turns_la_areal_pred +{ +public: + no_turns_la_areal_pred(Result & res) + : m_result(res) + , interrupt(! may_update(m_result) + && ! may_update(m_result) ) + {} + + template + bool operator()(Areal const& areal) + { + if ( interrupt ) + { + return false; + } + + // TODO: + // handle empty/invalid geometries in a different way than below? + + typedef typename geometry::point_type::type point_type; + point_type dummy; + bool const ok = boost::geometry::point_on_border(dummy, areal); + + // TODO: for now ignore, later throw an exception? + if ( !ok ) + { + return true; + } + + update(m_result); + update(m_result); + + return false; + } + +private: + Result & m_result; + bool const interrupt; +}; + +// The implementation of an algorithm calculating relate() for L/A +template +struct linear_areal +{ + // check Linear / Areal + BOOST_STATIC_ASSERT(topological_dimension::value == 1 + && topological_dimension::value == 2); + + static const bool interruption_enabled = true; + + typedef typename geometry::point_type::type point1_type; + typedef typename geometry::point_type::type point2_type; + + template + static inline void apply(Geometry1 const& geometry1, Geometry2 const& geometry2, Result & result) + { +// TODO: If Areal geometry may have infinite size, change the following line: + + // The result should be FFFFFFFFF + relate::set::value, TransposeResult>(result);// FFFFFFFFd, d in [1,9] or T + + if ( result.interrupt ) + return; + + // get and analyse turns + typedef typename turns::get_turns::turn_info turn_type; + std::vector turns; + + interrupt_policy_linear_areal interrupt_policy(geometry2, result); + + turns::get_turns::apply(turns, geometry1, geometry2, interrupt_policy); + if ( result.interrupt ) + return; + + boundary_checker boundary_checker1(geometry1); + no_turns_la_linestring_pred + < + Geometry2, + Result, + boundary_checker, + TransposeResult + > pred1(geometry2, result, boundary_checker1); + for_each_disjoint_geometry_if<0, Geometry1>::apply(turns.begin(), turns.end(), geometry1, pred1); + if ( result.interrupt ) + return; + + no_turns_la_areal_pred pred2(result); + for_each_disjoint_geometry_if<1, Geometry2>::apply(turns.begin(), turns.end(), geometry2, pred2); + if ( result.interrupt ) + return; + + if ( turns.empty() ) + return; + + // This is set here because in the case if empty Areal geometry were passed + // those shouldn't be set + relate::set(result);// FFFFFF2Fd + if ( result.interrupt ) + return; + + { + // for different multi or same ring id: x, u, i, c + // for same multi and different ring id: c, i, u, x + typedef turns::less<0, turns::less_op_linear_areal> less; + std::sort(turns.begin(), turns.end(), less()); + + turns_analyser analyser; + analyse_each_turn(result, analyser, + turns.begin(), turns.end(), + geometry1, geometry2, + boundary_checker1); + + if ( result.interrupt ) + return; + } + + // If 'c' (insersection_boundary) was not found we know that any Ls isn't equal to one of the Rings + if ( !interrupt_policy.is_boundary_found ) + { + relate::set(result); + } + // Don't calculate it if it's required + else if ( may_update(result) ) + { +// TODO: REVISE THIS CODE AND PROBABLY REWRITE SOME PARTS TO BE MORE HUMAN-READABLE +// IN GENERAL IT ANALYSES THE RINGS OF AREAL GEOMETRY AND DETECTS THE ONES THAT +// MAY OVERLAP THE INTERIOR OF LINEAR GEOMETRY (NO IPs OR NON-FAKE 'u' OPERATION) +// NOTE: For one case std::sort may be called again to sort data by operations for data already sorted by ring index +// In the worst case scenario the complexity will be O( NlogN + R*(N/R)log(N/R) ) +// So always should remain O(NlogN) -> for R==1 <-> 1(N/1)log(N/1), for R==N <-> N(N/N)log(N/N) +// Some benchmarking should probably be done to check if only one std::sort should be used + + // sort by multi_index and rind_index + std::sort(turns.begin(), turns.end(), less_ring()); + + typedef typename std::vector::iterator turn_iterator; + + turn_iterator it = turns.begin(); + segment_identifier * prev_seg_id_ptr = NULL; + // for each ring + for ( ; it != turns.end() ; ) + { + // it's the next single geometry + if ( prev_seg_id_ptr == NULL + || prev_seg_id_ptr->multi_index != it->operations[1].seg_id.multi_index ) + { + // if the first ring has no IPs + if ( it->operations[1].seg_id.ring_index > -1 ) + { + // we can be sure that the exterior overlaps the boundary + relate::set(result); + break; + } + // if there was some previous ring + if ( prev_seg_id_ptr != NULL ) + { + int const next_ring_index = prev_seg_id_ptr->ring_index + 1; + BOOST_ASSERT(next_ring_index >= 0); + + // if one of the last rings of previous single geometry was ommited + if ( static_cast(next_ring_index) + < geometry::num_interior_rings( + single_geometry(geometry2, *prev_seg_id_ptr)) ) + { + // we can be sure that the exterior overlaps the boundary + relate::set(result); + break; + } + } + } + // if it's the same single geometry + else /*if ( previous_multi_index == it->operations[1].seg_id.multi_index )*/ + { + // and we jumped over one of the rings + if ( prev_seg_id_ptr != NULL // just in case + && prev_seg_id_ptr->ring_index + 1 < it->operations[1].seg_id.ring_index ) + { + // we can be sure that the exterior overlaps the boundary + relate::set(result); + break; + } + } + + prev_seg_id_ptr = boost::addressof(it->operations[1].seg_id); + + // find the next ring first iterator and check if the analysis should be performed + has_boundary_intersection has_boundary_inters; + turn_iterator next = find_next_ring(it, turns.end(), has_boundary_inters); + + // if there is no 1d overlap with the boundary + if ( !has_boundary_inters.result ) + { + // we can be sure that the exterior overlaps the boundary + relate::set(result); + break; + } + // else there is 1d overlap with the boundary so we must analyse the boundary + else + { + // u, c + typedef turns::less<1, turns::less_op_areal_linear> less; + std::sort(it, next, less()); + + // analyse + areal_boundary_analyser analyser; + for ( turn_iterator rit = it ; rit != next ; ++rit ) + { + // if the analyser requests, break the search + if ( !analyser.apply(it, rit, next) ) + break; + } + + // if the boundary of Areal goes out of the Linear + if ( analyser.is_union_detected ) + { + // we can be sure that the boundary of Areal overlaps the exterior of Linear + relate::set(result); + break; + } + } + + it = next; + } + + // if there was some previous ring + if ( prev_seg_id_ptr != NULL ) + { + int const next_ring_index = prev_seg_id_ptr->ring_index + 1; + BOOST_ASSERT(next_ring_index >= 0); + + // if one of the last rings of previous single geometry was ommited + if ( static_cast(next_ring_index) + < geometry::num_interior_rings( + single_geometry(geometry2, *prev_seg_id_ptr)) ) + { + // we can be sure that the exterior overlaps the boundary + relate::set(result); + } + } + } + } + + // interrupt policy which may be passed to get_turns to interrupt the analysis + // based on the info in the passed result/mask + template + class interrupt_policy_linear_areal + { + public: + static bool const enabled = true; + + interrupt_policy_linear_areal(Areal const& areal, Result & result) + : m_result(result), m_areal(areal) + , is_boundary_found(false) + {} + +// TODO: since we update result for some operations here, we may not do it in the analyser! + + template + inline bool apply(Range const& turns) + { + typedef typename boost::range_iterator::type iterator; + + for (iterator it = boost::begin(turns) ; it != boost::end(turns) ; ++it) + { + if ( it->operations[0].operation == overlay::operation_intersection ) + { + bool const no_interior_rings + = geometry::num_interior_rings( + single_geometry(m_areal, it->operations[1].seg_id)) == 0; + + // WARNING! THIS IS TRUE ONLY IF THE POLYGON IS SIMPLE! + // OR WITHOUT INTERIOR RINGS (AND OF COURSE VALID) + if ( no_interior_rings ) + update(m_result); + } + else if ( it->operations[0].operation == overlay::operation_continue ) + { + update(m_result); + is_boundary_found = true; + } + else if ( ( it->operations[0].operation == overlay::operation_union + || it->operations[0].operation == overlay::operation_blocked ) + && it->operations[0].position == overlay::position_middle ) + { +// TODO: here we could also check the boundaries and set BB at this point + update(m_result); + } + } + + return m_result.interrupt; + } + + private: + Result & m_result; + Areal const& m_areal; + + public: + bool is_boundary_found; + }; + + // This analyser should be used like Input or SinglePass Iterator + // IMPORTANT! It should be called also for the end iterator - last + template + class turns_analyser + { + typedef typename TurnInfo::point_type turn_point_type; + + static const std::size_t op_id = 0; + static const std::size_t other_op_id = 1; + + public: + turns_analyser() + : m_previous_turn_ptr(NULL) + , m_previous_operation(overlay::operation_none) + , m_boundary_counter(0) + , m_interior_detected(false) + , m_first_interior_other_id_ptr(NULL) + {} + + template + void apply(Result & res, TurnIt it, + Geometry const& geometry, + OtherGeometry const& other_geometry, + BoundaryChecker const& boundary_checker) + { + overlay::operation_type op = it->operations[op_id].operation; + + if ( op != overlay::operation_union + && op != overlay::operation_intersection + && op != overlay::operation_blocked + && op != overlay::operation_continue ) // operation_boundary / operation_boundary_intersection + { + return; + } + + segment_identifier const& seg_id = it->operations[op_id].seg_id; + segment_identifier const& other_id = it->operations[other_op_id].seg_id; + + const bool first_in_range = m_seg_watcher.update(seg_id); + + // handle possible exit + bool fake_enter_detected = false; + if ( m_exit_watcher.get_exit_operation() == overlay::operation_union ) + { + // real exit point - may be multiple + // we know that we entered and now we exit + if ( ! turn_on_the_same_ip(m_exit_watcher.get_exit_turn(), *it) ) + { + m_exit_watcher.reset_detected_exit(); + + // not the last IP + update(res); + } + // fake exit point, reset state + else if ( op == overlay::operation_intersection + || op == overlay::operation_continue ) // operation_boundary + { + m_exit_watcher.reset_detected_exit(); + fake_enter_detected = true; + } + } + else if ( m_exit_watcher.get_exit_operation() == overlay::operation_blocked ) + { + // ignore multiple BLOCKs + if ( op == overlay::operation_blocked ) + return; + + if ( ( op == overlay::operation_intersection + || op == overlay::operation_continue ) + && turn_on_the_same_ip(m_exit_watcher.get_exit_turn(), *it) ) + { + fake_enter_detected = true; + } + + m_exit_watcher.reset_detected_exit(); + } + +// NOTE: THE WHOLE m_interior_detected HANDLING IS HERE BECAUSE WE CAN'T EFFICIENTLY SORT TURNS (CORRECTLY) +// BECAUSE THE SAME IP MAY BE REPRESENTED BY TWO SEGMENTS WITH DIFFERENT DISTANCES +// IT WOULD REQUIRE THE CALCULATION OF MAX DISTANCE +// TODO: WE COULD GET RID OF THE TEST IF THE DISTANCES WERE NORMALIZED + +// TODO: THIS IS POTENTIALLY ERROREOUS! +// THIS ALGORITHM DEPENDS ON SOME SPECIFIC SEQUENCE OF OPERATIONS +// IT WOULD GIVE WRONG RESULTS E.G. +// IN THE CASE OF SELF-TOUCHING POINT WHEN 'i' WOULD BE BEFORE 'u' + + // handle the interior overlap + if ( m_interior_detected ) + { + // real interior overlap + if ( ! turn_on_the_same_ip(*m_previous_turn_ptr, *it) ) + { + update(res); + m_interior_detected = false; + } + // fake interior overlap + else if ( op == overlay::operation_continue ) + { + m_interior_detected = false; + } + else if ( op == overlay::operation_union ) + { +// TODO: this probably is not a good way of handling the interiors/enters +// the solution similar to exit_watcher would be more robust +// all enters should be kept and handled. +// maybe integrate it with the exit_watcher -> enter_exit_watcher + if ( m_first_interior_other_id_ptr + && m_first_interior_other_id_ptr->multi_index == other_id.multi_index ) + { + m_interior_detected = false; + } + } + } + + // i/u, c/u + if ( op == overlay::operation_intersection + || op == overlay::operation_continue ) // operation_boundary/operation_boundary_intersection + { + bool no_enters_detected = m_exit_watcher.is_outside(); + m_exit_watcher.enter(*it); + + if ( op == overlay::operation_intersection ) + { + if ( m_boundary_counter > 0 && it->operations[op_id].is_collinear ) + --m_boundary_counter; + + if ( m_boundary_counter == 0 ) + { + // interiors overlaps + //update(res); + +// TODO: think about the implementation of the more robust version +// this way only the first enter will be handled + if ( !m_interior_detected ) + { + // don't update now + // we might enter a boundary of some other ring on the same IP + m_interior_detected = true; + m_first_interior_other_id_ptr = boost::addressof(other_id); + } + } + } + else // operation_boundary + { + // don't add to the count for all met boundaries + // only if this is the "new" boundary + if ( first_in_range || !it->operations[op_id].is_collinear ) + ++m_boundary_counter; + + update(res); + } + + bool const this_b + = is_ip_on_boundary(it->point, + it->operations[op_id], + boundary_checker, + seg_id); + // going inside on boundary point + if ( this_b ) + { + update(res); + } + // going inside on non-boundary point + else + { + update(res); + + // if we didn't enter in the past, we were outside + if ( no_enters_detected + && ! fake_enter_detected + && it->operations[op_id].position != overlay::position_front ) + { +// TODO: calculate_from_inside() is only needed if the current Linestring is not closed + bool const from_inside = first_in_range + && calculate_from_inside(geometry, + other_geometry, + *it); + + if ( from_inside ) + update(res); + else + update(res); + + // if it's the first IP then the first point is outside + if ( first_in_range ) + { + bool const front_b = is_endpoint_on_boundary( + range::front(sub_range(geometry, seg_id)), + boundary_checker); + + // if there is a boundary on the first point + if ( front_b ) + { + if ( from_inside ) + update(res); + else + update(res); + } + } + } + } + } + // u/u, x/u + else if ( op == overlay::operation_union || op == overlay::operation_blocked ) + { + bool const op_blocked = op == overlay::operation_blocked; + bool const no_enters_detected = m_exit_watcher.is_outside() +// TODO: is this condition ok? +// TODO: move it into the exit_watcher? + && m_exit_watcher.get_exit_operation() == overlay::operation_none; + + if ( op == overlay::operation_union ) + { + if ( m_boundary_counter > 0 && it->operations[op_id].is_collinear ) + --m_boundary_counter; + } + else // overlay::operation_blocked + { + m_boundary_counter = 0; + } + + // we're inside, possibly going out right now + if ( ! no_enters_detected ) + { + if ( op_blocked + && it->operations[op_id].position == overlay::position_back ) // ignore spikes! + { + // check if this is indeed the boundary point + // NOTE: is_ip_on_boundary<>() should be called here but the result will be the same + if ( is_endpoint_on_boundary(it->point, boundary_checker) ) + { + update(res); + } + } + // union, inside, but no exit -> collinear on self-intersection point + // not needed since we're already inside the boundary + /*else if ( !exit_detected ) + { + update(res); + }*/ + } + // we're outside or inside and this is the first turn + else + { + bool const this_b = is_ip_on_boundary(it->point, + it->operations[op_id], + boundary_checker, + seg_id); + // if current IP is on boundary of the geometry + if ( this_b ) + { + update(res); + } + // if current IP is not on boundary of the geometry + else + { + update(res); + } + + // TODO: very similar code is used in the handling of intersection + if ( it->operations[op_id].position != overlay::position_front ) + { +// TODO: calculate_from_inside() is only needed if the current Linestring is not closed + bool const first_from_inside = first_in_range + && calculate_from_inside(geometry, + other_geometry, + *it); + if ( first_from_inside ) + { + update(res); + + // notify the exit_watcher that we started inside + m_exit_watcher.enter(*it); + } + else + { + update(res); + } + + // first IP on the last segment point - this means that the first point is outside or inside + if ( first_in_range && ( !this_b || op_blocked ) ) + { + bool const front_b = is_endpoint_on_boundary( + range::front(sub_range(geometry, seg_id)), + boundary_checker); + + // if there is a boundary on the first point + if ( front_b ) + { + if ( first_from_inside ) + update(res); + else + update(res); + } + } + } + } + + // if we're going along a boundary, we exit only if the linestring was collinear + if ( m_boundary_counter == 0 + || it->operations[op_id].is_collinear ) + { + // notify the exit watcher about the possible exit + m_exit_watcher.exit(*it); + } + } + + // store ref to previously analysed (valid) turn + m_previous_turn_ptr = boost::addressof(*it); + // and previously analysed (valid) operation + m_previous_operation = op; + } + + // it == last + template + void apply(Result & res, + TurnIt first, TurnIt last, + Geometry const& geometry, + OtherGeometry const& /*other_geometry*/, + BoundaryChecker const& boundary_checker) + { + //BOOST_ASSERT( first != last ); + + // here, the possible exit is the real one + // we know that we entered and now we exit + if ( /*m_exit_watcher.get_exit_operation() == overlay::operation_union // THIS CHECK IS REDUNDANT + ||*/ m_previous_operation == overlay::operation_union + && !m_interior_detected ) + { + // for sure + update(res); + + BOOST_ASSERT(first != last); + BOOST_ASSERT(m_previous_turn_ptr); + + segment_identifier const& prev_seg_id = m_previous_turn_ptr->operations[op_id].seg_id; + + bool const prev_back_b = is_endpoint_on_boundary( + range::back(sub_range(geometry, prev_seg_id)), + boundary_checker); + + // if there is a boundary on the last point + if ( prev_back_b ) + { + update(res); + } + } + // we might enter some Areal and didn't go out, + else if ( m_previous_operation == overlay::operation_intersection + || m_interior_detected ) + { + // just in case + update(res); + m_interior_detected = false; + + BOOST_ASSERT(first != last); + BOOST_ASSERT(m_previous_turn_ptr); + + segment_identifier const& prev_seg_id = m_previous_turn_ptr->operations[op_id].seg_id; + + bool const prev_back_b = is_endpoint_on_boundary( + range::back(sub_range(geometry, prev_seg_id)), + boundary_checker); + + // if there is a boundary on the last point + if ( prev_back_b ) + { + update(res); + } + } + + BOOST_ASSERT_MSG(m_previous_operation != overlay::operation_continue, + "Unexpected operation! Probably the error in get_turns(L,A) or relate(L,A)"); + + // Reset exit watcher before the analysis of the next Linestring + m_exit_watcher.reset(); + m_boundary_counter = 0; + } + + // check if the passed turn's segment of Linear geometry arrived + // from the inside or the outside of the Areal geometry + template + static inline bool calculate_from_inside(Geometry1 const& geometry1, + Geometry2 const& geometry2, + Turn const& turn) + { + if ( turn.operations[op_id].position == overlay::position_front ) + return false; + + typename sub_range_return_type::type + range1 = sub_range(geometry1, turn.operations[op_id].seg_id); + + typedef detail::normalized_view const range2_type; + typedef typename boost::range_iterator::type range2_iterator; + range2_type range2(sub_range(geometry2, turn.operations[other_op_id].seg_id)); + + std::size_t const s1 = boost::size(range1); + std::size_t const s2 = boost::size(range2); + BOOST_ASSERT(s1 > 1 && s2 > 2); + std::size_t const seg_count2 = s2 - 1; + + std::size_t const p_seg_ij = turn.operations[op_id].seg_id.segment_index; + std::size_t const q_seg_ij = turn.operations[other_op_id].seg_id.segment_index; + + BOOST_ASSERT(p_seg_ij + 1 < s1 && q_seg_ij + 1 < s2); + + point1_type const& pi = range::at(range1, p_seg_ij); + point2_type const& qi = range::at(range2, q_seg_ij); + point2_type const& qj = range::at(range2, q_seg_ij + 1); + point1_type qi_conv; + geometry::convert(qi, qi_conv); + bool const is_ip_qj = equals::equals_point_point(turn.point, qj); +// TODO: test this! +// BOOST_ASSERT(!equals::equals_point_point(turn.point, pi)); +// BOOST_ASSERT(!equals::equals_point_point(turn.point, qi)); + point1_type new_pj; + geometry::convert(turn.point, new_pj); + + if ( is_ip_qj ) + { + std::size_t const q_seg_jk = (q_seg_ij + 1) % seg_count2; +// TODO: the following function should return immediately, however the worst case complexity is O(N) +// It would be good to replace it with some O(1) mechanism + range2_iterator qk_it = find_next_non_duplicated(boost::begin(range2), + boost::begin(range2) + q_seg_jk, + boost::end(range2)); + + // Will this sequence of points be always correct? + overlay::side_calculator side_calc(qi_conv, new_pj, pi, qi, qj, *qk_it); + + return calculate_from_inside_sides(side_calc); + } + else + { + point1_type new_qj; + geometry::convert(turn.point, new_qj); + + overlay::side_calculator side_calc(qi_conv, new_pj, pi, qi, new_qj, qj); + + return calculate_from_inside_sides(side_calc); + } + } + + template + static inline It find_next_non_duplicated(It first, It current, It last) + { + BOOST_ASSERT( current != last ); + + It it = current; + + for ( ++it ; it != last ; ++it ) + { + if ( !equals::equals_point_point(*current, *it) ) + return it; + } + + // if not found start from the beginning + for ( it = first ; it != current ; ++it ) + { + if ( !equals::equals_point_point(*current, *it) ) + return it; + } + + return current; + } + + // calculate inside or outside based on side_calc + // this is simplified version of a check from equal<> + template + static inline bool calculate_from_inside_sides(SideCalc const& side_calc) + { + int const side_pk_p = side_calc.pk_wrt_p1(); + int const side_qk_p = side_calc.qk_wrt_p1(); + // If they turn to same side (not opposite sides) + if (! overlay::base_turn_handler::opposite(side_pk_p, side_qk_p)) + { + int const side_pk_q2 = side_calc.pk_wrt_q2(); + return side_pk_q2 == -1; + } + else + { + return side_pk_p == -1; + } + } + + private: + exit_watcher m_exit_watcher; + segment_watcher m_seg_watcher; + TurnInfo * m_previous_turn_ptr; + overlay::operation_type m_previous_operation; + unsigned m_boundary_counter; + bool m_interior_detected; + const segment_identifier * m_first_interior_other_id_ptr; + }; + + // call analyser.apply() for each turn in range + // IMPORTANT! The analyser is also called for the end iterator - last + template + static inline void analyse_each_turn(Result & res, + Analyser & analyser, + TurnIt first, TurnIt last, + Geometry const& geometry, + OtherGeometry const& other_geometry, + BoundaryChecker const& boundary_checker) + { + if ( first == last ) + return; + + for ( TurnIt it = first ; it != last ; ++it ) + { + analyser.apply(res, it, + geometry, other_geometry, + boundary_checker); + + if ( res.interrupt ) + return; + } + + analyser.apply(res, first, last, + geometry, other_geometry, + boundary_checker); + } + + // less comparator comparing multi_index then ring_index + // may be used to sort turns by ring + struct less_ring + { + template + inline bool operator()(Turn const& left, Turn const& right) const + { + return left.operations[1].seg_id.multi_index < right.operations[1].seg_id.multi_index + || ( left.operations[1].seg_id.multi_index == right.operations[1].seg_id.multi_index + && left.operations[1].seg_id.ring_index < right.operations[1].seg_id.ring_index ); + } + }; + + // policy/functor checking if a turn's operation is operation_continue + struct has_boundary_intersection + { + has_boundary_intersection() + : result(false) {} + + template + inline void operator()(Turn const& turn) + { + if ( turn.operations[1].operation == overlay::operation_continue ) + result = true; + } + + bool result; + }; + + // iterate through the range and search for the different multi_index or ring_index + // also call fun for each turn in the current range + template + static inline It find_next_ring(It first, It last, Fun & fun) + { + if ( first == last ) + return last; + + int const multi_index = first->operations[1].seg_id.multi_index; + int const ring_index = first->operations[1].seg_id.ring_index; + + fun(*first); + ++first; + + for ( ; first != last ; ++first ) + { + if ( multi_index != first->operations[1].seg_id.multi_index + || ring_index != first->operations[1].seg_id.ring_index ) + { + return first; + } + + fun(*first); + } + + return last; + } + + // analyser which called for turns sorted by seg/distance/operation + // checks if the boundary of Areal geometry really got out + // into the exterior of Linear geometry + template + class areal_boundary_analyser + { + public: + areal_boundary_analyser() + : is_union_detected(false) + , m_previous_turn_ptr(NULL) + {} + + template + bool apply(TurnIt /*first*/, TurnIt it, TurnIt last) + { + overlay::operation_type op = it->operations[1].operation; + + if ( it != last ) + { + if ( op != overlay::operation_union + && op != overlay::operation_continue ) + { + return true; + } + + if ( is_union_detected ) + { + BOOST_ASSERT(m_previous_turn_ptr != NULL); + if ( !detail::equals::equals_point_point(it->point, m_previous_turn_ptr->point) ) + { + // break + return false; + } + else if ( op == overlay::operation_continue ) // operation_boundary + { + is_union_detected = false; + } + } + + if ( op == overlay::operation_union ) + { + is_union_detected = true; + m_previous_turn_ptr = boost::addressof(*it); + } + + return true; + } + else + { + return false; + } + } + + bool is_union_detected; + + private: + const TurnInfo * m_previous_turn_ptr; + }; +}; + +template +struct areal_linear +{ + template + static inline void apply(Geometry1 const& geometry1, Geometry2 const& geometry2, Result & result) + { + linear_areal::apply(geometry2, geometry1, result); + } +}; + +}} // namespace detail::relate +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LINEAR_AREAL_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/linear_linear.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/linear_linear.hpp new file mode 100644 index 0000000000..f08aba0287 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/linear_linear.hpp @@ -0,0 +1,765 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LINEAR_LINEAR_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LINEAR_LINEAR_HPP + +#include + +#include +#include + +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +template +class disjoint_linestring_pred +{ +public: + disjoint_linestring_pred(Result & res, + BoundaryChecker const& boundary_checker) + : m_result(res) + , m_boundary_checker(boundary_checker) + , m_flags(0) + { + if ( ! may_update(m_result) ) + { + m_flags |= 1; + } + if ( ! may_update(m_result) ) + { + m_flags |= 2; + } + } + + template + bool operator()(Linestring const& linestring) + { + if ( m_flags == 3 ) + { + return false; + } + + std::size_t const count = boost::size(linestring); + + // invalid input + if ( count < 2 ) + { + // ignore + // TODO: throw an exception? + return true; + } + + // point-like linestring + if ( count == 2 + && equals::equals_point_point(range::front(linestring), + range::back(linestring)) ) + { + update(m_result); + } + else + { + update(m_result); + m_flags |= 1; + + // check if there is a boundary + if ( m_flags < 2 + && ( m_boundary_checker.template + is_endpoint_boundary(range::front(linestring)) + || m_boundary_checker.template + is_endpoint_boundary(range::back(linestring)) ) ) + { + update(m_result); + m_flags |= 2; + } + } + + return m_flags != 3 + && ! m_result.interrupt; + } + +private: + Result & m_result; + BoundaryChecker const& m_boundary_checker; + unsigned m_flags; +}; + +template +struct linear_linear +{ + static const bool interruption_enabled = true; + + typedef typename geometry::point_type::type point1_type; + typedef typename geometry::point_type::type point2_type; + + template + static inline void apply(Geometry1 const& geometry1, Geometry2 const& geometry2, Result & result) + { + // The result should be FFFFFFFFF + relate::set::value>(result);// FFFFFFFFd, d in [1,9] or T + if ( result.interrupt ) + return; + + // get and analyse turns + typedef typename turns::get_turns::turn_info turn_type; + std::vector turns; + + interrupt_policy_linear_linear interrupt_policy(result); + + turns::get_turns + < + Geometry1, + Geometry2, + detail::get_turns::get_turn_info_type > + >::apply(turns, geometry1, geometry2, interrupt_policy); + + if ( result.interrupt ) + return; + + boundary_checker boundary_checker1(geometry1); + disjoint_linestring_pred, false> pred1(result, boundary_checker1); + for_each_disjoint_geometry_if<0, Geometry1>::apply(turns.begin(), turns.end(), geometry1, pred1); + if ( result.interrupt ) + return; + + boundary_checker boundary_checker2(geometry2); + disjoint_linestring_pred, true> pred2(result, boundary_checker2); + for_each_disjoint_geometry_if<1, Geometry2>::apply(turns.begin(), turns.end(), geometry2, pred2); + if ( result.interrupt ) + return; + + if ( turns.empty() ) + return; + + // TODO: turns must be sorted and followed only if it's possible to go out and in on the same point + // for linear geometries union operation must be detected which I guess would be quite often + + if ( may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) ) + { + typedef turns::less<0, turns::less_op_linear_linear> less; + std::sort(turns.begin(), turns.end(), less()); + + turns_analyser analyser; + analyse_each_turn(result, analyser, + turns.begin(), turns.end(), + geometry1, geometry2, + boundary_checker1, boundary_checker2); + } + + if ( result.interrupt ) + return; + + if ( may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) + || may_update(result) ) + { + typedef turns::less<1, turns::less_op_linear_linear> less; + std::sort(turns.begin(), turns.end(), less()); + + turns_analyser analyser; + analyse_each_turn(result, analyser, + turns.begin(), turns.end(), + geometry2, geometry1, + boundary_checker2, boundary_checker1); + } + } + + template + class interrupt_policy_linear_linear + { + public: + static bool const enabled = true; + + explicit interrupt_policy_linear_linear(Result & result) + : m_result(result) + {} + +// TODO: since we update result for some operations here, we may not do it in the analyser! + + template + inline bool apply(Range const& turns) + { + typedef typename boost::range_iterator::type iterator; + + for (iterator it = boost::begin(turns) ; it != boost::end(turns) ; ++it) + { + if ( it->operations[0].operation == overlay::operation_intersection + || it->operations[1].operation == overlay::operation_intersection ) + { + update(m_result); + } + else if ( ( it->operations[0].operation == overlay::operation_union + || it->operations[0].operation == overlay::operation_blocked + || it->operations[1].operation == overlay::operation_union + || it->operations[1].operation == overlay::operation_blocked ) + && it->operations[0].position == overlay::position_middle + && it->operations[1].position == overlay::position_middle ) + { +// TODO: here we could also check the boundaries and set IB,BI,BB at this point + update(m_result); + } + } + + return m_result.interrupt; + } + + private: + Result & m_result; + }; + + // This analyser should be used like Input or SinglePass Iterator + template + class turns_analyser + { + typedef typename TurnInfo::point_type turn_point_type; + + static const std::size_t op_id = OpId; + static const std::size_t other_op_id = (OpId + 1) % 2; + static const bool transpose_result = OpId != 0; + + public: + turns_analyser() + : m_previous_turn_ptr(NULL) + , m_previous_operation(overlay::operation_none) + , m_degenerated_turn_ptr(NULL) + {} + + template + void apply(Result & res, TurnIt it, + Geometry const& geometry, + OtherGeometry const& other_geometry, + BoundaryChecker const& boundary_checker, + OtherBoundaryChecker const& other_boundary_checker) + { + overlay::operation_type const op = it->operations[op_id].operation; + + segment_identifier const& seg_id = it->operations[op_id].seg_id; + segment_identifier const& other_id = it->operations[other_op_id].seg_id; + + bool const first_in_range = m_seg_watcher.update(seg_id); + + if ( op != overlay::operation_union + && op != overlay::operation_intersection + && op != overlay::operation_blocked ) + { + // degenerated turn + if ( op == overlay::operation_continue + && it->method == overlay::method_none + && m_exit_watcher.is_outside(*it) + /*&& ( m_exit_watcher.get_exit_operation() == overlay::operation_none + || ! turn_on_the_same_ip(m_exit_watcher.get_exit_turn(), *it) )*/ ) + { + // TODO: rewrite the above condition + + // WARNING! For spikes the above condition may be TRUE + // When degenerated turns are be marked in a different way than c,c/c + // different condition will be checked + + handle_degenerated(res, *it, + geometry, other_geometry, + boundary_checker, other_boundary_checker, + first_in_range); + + // TODO: not elegant solution! should be rewritten. + if ( it->operations[op_id].position == overlay::position_back ) + { + m_previous_operation = overlay::operation_blocked; + m_exit_watcher.reset_detected_exit(); + } + } + + return; + } + + // reset + m_degenerated_turn_ptr = NULL; + + // handle possible exit + bool fake_enter_detected = false; + if ( m_exit_watcher.get_exit_operation() == overlay::operation_union ) + { + // real exit point - may be multiple + // we know that we entered and now we exit + if ( ! turn_on_the_same_ip(m_exit_watcher.get_exit_turn(), *it) ) + { + m_exit_watcher.reset_detected_exit(); + + // not the last IP + update(res); + } + // fake exit point, reset state + else if ( op == overlay::operation_intersection ) + { + m_exit_watcher.reset_detected_exit(); + fake_enter_detected = true; + } + } + else if ( m_exit_watcher.get_exit_operation() == overlay::operation_blocked ) + { + // ignore multiple BLOCKs + if ( op == overlay::operation_blocked ) + return; + + if ( op == overlay::operation_intersection + && turn_on_the_same_ip(m_exit_watcher.get_exit_turn(), *it) ) + { + fake_enter_detected = true; + } + + m_exit_watcher.reset_detected_exit(); + } + + // i/i, i/x, i/u + if ( op == overlay::operation_intersection ) + { + bool const was_outside = m_exit_watcher.is_outside(); + m_exit_watcher.enter(*it); + + // interiors overlaps + update(res); + + bool const this_b = it->operations[op_id].position == overlay::position_front // ignore spikes! + && is_ip_on_boundary(it->point, + it->operations[op_id], + boundary_checker, + seg_id); + + // going inside on boundary point + // may be front only + if ( this_b ) + { + // may be front and back + bool const other_b = is_ip_on_boundary(it->point, + it->operations[other_op_id], + other_boundary_checker, + other_id); + + // it's also the boundary of the other geometry + if ( other_b ) + { + update(res); + } + else + { + update(res); + } + } + // going inside on non-boundary point + else + { + // if we didn't enter in the past, we were outside + if ( was_outside + && ! fake_enter_detected + && it->operations[op_id].position != overlay::position_front ) + { + update(res); + + // if it's the first IP then the first point is outside + if ( first_in_range ) + { + bool const front_b = is_endpoint_on_boundary( + range::front(sub_range(geometry, seg_id)), + boundary_checker); + + // if there is a boundary on the first point + if ( front_b ) + { + update(res); + } + } + } + } + } + // u/i, u/u, u/x, x/i, x/u, x/x + else if ( op == overlay::operation_union || op == overlay::operation_blocked ) + { + // TODO: is exit watcher still needed? + // couldn't is_collinear and some going inside counter be used instead? + + bool const is_collinear = it->operations[op_id].is_collinear; + bool const was_outside = m_exit_watcher.is_outside() + && m_exit_watcher.get_exit_operation() == overlay::operation_none; +// TODO: move the above condition into the exit_watcher? + + // to exit we must be currently inside and the current segment must be collinear + if ( !was_outside && is_collinear ) + { + m_exit_watcher.exit(*it, false); + } + + bool const op_blocked = op == overlay::operation_blocked; + + // we're inside and going out from inside + // possibly going out right now + if ( ! was_outside && is_collinear ) + { + if ( op_blocked + && it->operations[op_id].position == overlay::position_back ) // ignore spikes! + { + // check if this is indeed the boundary point + // NOTE: is_ip_on_boundary<>() should be called here but the result will be the same + if ( is_endpoint_on_boundary(it->point, boundary_checker) ) + { + // may be front and back + bool const other_b = is_ip_on_boundary(it->point, + it->operations[other_op_id], + other_boundary_checker, + other_id); + // it's also the boundary of the other geometry + if ( other_b ) + { + update(res); + } + else + { + update(res); + } + } + } + } + // we're outside or intersects some segment from the outside + else + { + // if we are truly outside + if ( was_outside + && it->operations[op_id].position != overlay::position_front + /*&& !is_collinear*/ ) + { + update(res); + } + + // boundaries don't overlap - just an optimization + if ( it->method == overlay::method_crosses ) + { + // the L1 is going from one side of the L2 to the other through the point + update(res); + + // it's the first point in range + if ( first_in_range ) + { + bool const front_b = is_endpoint_on_boundary( + range::front(sub_range(geometry, seg_id)), + boundary_checker); + + // if there is a boundary on the first point + if ( front_b ) + { + update(res); + } + } + } + // method other than crosses, check more conditions + else + { + bool const this_b = is_ip_on_boundary(it->point, + it->operations[op_id], + boundary_checker, + seg_id); + + bool const other_b = is_ip_on_boundary(it->point, + it->operations[other_op_id], + other_boundary_checker, + other_id); + + // if current IP is on boundary of the geometry + if ( this_b ) + { + // it's also the boundary of the other geometry + if ( other_b ) + { + update(res); + } + else + { + update(res); + } + } + // if current IP is not on boundary of the geometry + else + { + // it's also the boundary of the other geometry + if ( other_b ) + { + update(res); + } + else + { + update(res); + } + } + + // first IP on the last segment point - this means that the first point is outside + if ( first_in_range + && ( !this_b || op_blocked ) + && was_outside + && it->operations[op_id].position != overlay::position_front + /*&& !is_collinear*/ ) + { + bool const front_b = is_endpoint_on_boundary( + range::front(sub_range(geometry, seg_id)), + boundary_checker); + + // if there is a boundary on the first point + if ( front_b ) + { + update(res); + } + } + + } + } + } + + // store ref to previously analysed (valid) turn + m_previous_turn_ptr = boost::addressof(*it); + // and previously analysed (valid) operation + m_previous_operation = op; + } + + // Called for last + template + void apply(Result & res, + TurnIt first, TurnIt last, + Geometry const& geometry, + OtherGeometry const& /*other_geometry*/, + BoundaryChecker const& boundary_checker, + OtherBoundaryChecker const& /*other_boundary_checker*/) + { + //BOOST_ASSERT( first != last ); + + // here, the possible exit is the real one + // we know that we entered and now we exit + if ( /*m_exit_watcher.get_exit_operation() == overlay::operation_union // THIS CHECK IS REDUNDANT + ||*/ m_previous_operation == overlay::operation_union + || m_degenerated_turn_ptr ) + { + update(res); + + BOOST_ASSERT(first != last); + + const TurnInfo * turn_ptr = NULL; + if ( m_degenerated_turn_ptr ) + turn_ptr = m_degenerated_turn_ptr; + else if ( m_previous_turn_ptr ) + turn_ptr = m_previous_turn_ptr; + + if ( turn_ptr ) + { + segment_identifier const& prev_seg_id = turn_ptr->operations[op_id].seg_id; + + //BOOST_ASSERT(!boost::empty(sub_range(geometry, prev_seg_id))); + bool const prev_back_b = is_endpoint_on_boundary( + range::back(sub_range(geometry, prev_seg_id)), + boundary_checker); + + // if there is a boundary on the last point + if ( prev_back_b ) + { + update(res); + } + } + } + + // Just in case, + // reset exit watcher before the analysis of the next Linestring + // note that if there are some enters stored there may be some error above + m_exit_watcher.reset(); + + m_previous_turn_ptr = NULL; + m_previous_operation = overlay::operation_none; + m_degenerated_turn_ptr = NULL; + } + + template + void handle_degenerated(Result & res, + Turn const& turn, + Geometry const& geometry, + OtherGeometry const& other_geometry, + BoundaryChecker const& boundary_checker, + OtherBoundaryChecker const& /*other_boundary_checker*/, + bool first_in_range) + { + typename detail::single_geometry_return_type::type + ls1_ref = detail::single_geometry(geometry, turn.operations[op_id].seg_id); + typename detail::single_geometry_return_type::type + ls2_ref = detail::single_geometry(other_geometry, turn.operations[op_id].other_id); + + // only one of those should be true: + + if ( turn.operations[op_id].position == overlay::position_front ) + { + // valid, point-sized + if ( boost::size(ls2_ref) == 2 ) + { + bool const front_b = is_endpoint_on_boundary(turn.point, boundary_checker); + + if ( front_b ) + { + update(res); + } + else + { + update(res); + } + + // operation 'c' should be last for the same IP so we know that the next point won't be the same + update(res); + + m_degenerated_turn_ptr = boost::addressof(turn); + } + } + else if ( turn.operations[op_id].position == overlay::position_back ) + { + // valid, point-sized + if ( boost::size(ls2_ref) == 2 ) + { + update(res); + + bool const back_b = is_endpoint_on_boundary(turn.point, boundary_checker); + + if ( back_b ) + { + update(res); + } + else + { + update(res); + } + + if ( first_in_range ) + { + //BOOST_ASSERT(!boost::empty(ls1_ref)); + bool const front_b = is_endpoint_on_boundary( + range::front(ls1_ref), boundary_checker); + if ( front_b ) + { + update(res); + } + } + } + } + else if ( turn.operations[op_id].position == overlay::position_middle + && turn.operations[other_op_id].position == overlay::position_middle ) + { + update(res); + + // here we don't know which one is degenerated + + bool const is_point1 = boost::size(ls1_ref) == 2 + && equals::equals_point_point(range::front(ls1_ref), range::back(ls1_ref)); + bool const is_point2 = boost::size(ls2_ref) == 2 + && equals::equals_point_point(range::front(ls2_ref), range::back(ls2_ref)); + + // if the second one is degenerated + if ( !is_point1 && is_point2 ) + { + update(res); + + if ( first_in_range ) + { + //BOOST_ASSERT(!boost::empty(ls1_ref)); + bool const front_b = is_endpoint_on_boundary( + range::front(ls1_ref), boundary_checker); + if ( front_b ) + { + update(res); + } + } + + m_degenerated_turn_ptr = boost::addressof(turn); + } + } + + // NOTE: other.position == front and other.position == back + // will be handled later, for the other geometry + } + + private: + exit_watcher m_exit_watcher; + segment_watcher m_seg_watcher; + const TurnInfo * m_previous_turn_ptr; + overlay::operation_type m_previous_operation; + const TurnInfo * m_degenerated_turn_ptr; + }; + + template + static inline void analyse_each_turn(Result & res, + Analyser & analyser, + TurnIt first, TurnIt last, + Geometry const& geometry, + OtherGeometry const& other_geometry, + BoundaryChecker const& boundary_checker, + OtherBoundaryChecker const& other_boundary_checker) + { + if ( first == last ) + return; + + for ( TurnIt it = first ; it != last ; ++it ) + { + analyser.apply(res, it, + geometry, other_geometry, + boundary_checker, other_boundary_checker); + + if ( res.interrupt ) + return; + } + + analyser.apply(res, first, last, + geometry, other_geometry, + boundary_checker, other_boundary_checker); + } +}; + +}} // namespace detail::relate +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_LINEAR_LINEAR_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/point_geometry.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/point_geometry.hpp new file mode 100644 index 0000000000..86c236d357 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/point_geometry.hpp @@ -0,0 +1,205 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013, 2014, Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_POINT_GEOMETRY_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_POINT_GEOMETRY_HPP + +#include +//#include +//#include + +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +// non-point geometry +template +struct point_geometry +{ + // TODO: interrupt only if the topology check is complex + + static const bool interruption_enabled = true; + + template + static inline void apply(Point const& point, Geometry const& geometry, Result & result) + { + int pig = detail::within::point_in_geometry(point, geometry); + + if ( pig > 0 ) // within + { + set(result); + } + else if ( pig == 0 ) + { + set(result); + } + else // pig < 0 - not within + { + set(result); + } + + set::value, Transpose>(result); + + if ( result.interrupt ) + return; + + // the point is on the boundary + if ( pig == 0 ) + { + // NOTE: even for MLs, if there is at least one boundary point, + // somewhere there must be another one + + // check if there are other boundaries outside + typedef detail::relate::topology_check tc_t; + //tc_t tc(geometry, point); + //if ( tc.has_interior ) + set(result); + //if ( tc.has_boundary ) + set(result); + } + else + { + // check if there is a boundary in Geometry + typedef detail::relate::topology_check tc_t; + tc_t tc(geometry); + if ( tc.has_interior ) + set(result); + if ( tc.has_boundary ) + set(result); + } + } +}; + +// transposed result of point_geometry +template +struct geometry_point +{ + // TODO: interrupt only if the topology check is complex + + static const bool interruption_enabled = true; + + template + static inline void apply(Geometry const& geometry, Point const& point, Result & result) + { + point_geometry::apply(point, geometry, result); + } +}; + +// TODO: rewrite the folowing: + +//// NOTE: Those tests should be consistent with within(Point, Box) and covered_by(Point, Box) +//// There is no EPS used in those functions, values are compared using < or <= +//// so comparing MIN and MAX in the same way should be fine +// +//template ::value> +//struct box_has_interior +//{ +// static inline bool apply(Box const& box) +// { +// return geometry::get(box) < geometry::get(box) +// && box_has_interior::apply(box); +// } +//}; +// +//template +//struct box_has_interior +//{ +// static inline bool apply(Box const&) { return true; } +//}; +// +//// NOTE: especially important here (see the NOTE above). +// +//template ::value> +//struct box_has_equal_min_max +//{ +// static inline bool apply(Box const& box) +// { +// return geometry::get(box) == geometry::get(box) +// && box_has_equal_min_max::apply(box); +// } +//}; +// +//template +//struct box_has_equal_min_max +//{ +// static inline bool apply(Box const&) { return true; } +//}; +// +//template +//struct point_box +//{ +// static inline result apply(Point const& point, Box const& box) +// { +// result res; +// +// if ( geometry::within(point, box) ) // this also means that the box has interior +// { +// return result("0FFFFFTTT"); +// } +// else if ( geometry::covered_by(point, box) ) // point is on the boundary +// { +// //if ( box_has_interior::apply(box) ) +// //{ +// // return result("F0FFFFTTT"); +// //} +// //else if ( box_has_equal_min_max::apply(box) ) // no boundary outside point +// //{ +// // return result("F0FFFFFFT"); +// //} +// //else // no interior outside point +// //{ +// // return result("F0FFFFFTT"); +// //} +// return result("F0FFFF**T"); +// } +// else +// { +// /*if ( box_has_interior::apply(box) ) +// { +// return result("FF0FFFTTT"); +// } +// else +// { +// return result("FF0FFFFTT"); +// }*/ +// return result("FF0FFF*TT"); +// } +// +// return res; +// } +//}; +// +//template +//struct box_point +//{ +// static inline result apply(Box const& box, Point const& point) +// { +// if ( geometry::within(point, box) ) +// return result("0FTFFTFFT"); +// else if ( geometry::covered_by(point, box) ) +// return result("FF*0F*FFT"); +// else +// return result("FF*FFT0FT"); +// } +//}; + +}} // namespace detail::relate +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_POINT_GEOMETRY_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/point_point.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/point_point.hpp new file mode 100644 index 0000000000..e623868b92 --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/point_point.hpp @@ -0,0 +1,242 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013, 2014, Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_POINT_POINT_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_POINT_POINT_HPP + +#include +#include + +#include +#include +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +template +struct point_point +{ + static const bool interruption_enabled = false; + + template + static inline void apply(Point1 const& point1, Point2 const& point2, Result & result) + { + bool equal = detail::equals::equals_point_point(point1, point2); + if ( equal ) + { + set(result); + } + else + { + set(result); + set(result); + } + + set::value>(result); + } +}; + +template +std::pair point_multipoint_check(Point const& point, MultiPoint const& multi_point) +{ + bool found_inside = false; + bool found_outside = false; + + // point_in_geometry could be used here but why iterate over MultiPoint twice? + // we must search for a point in the exterior because all points in MultiPoint can be equal + + typedef typename boost::range_iterator::type iterator; + iterator it = boost::begin(multi_point); + iterator last = boost::end(multi_point); + for ( ; it != last ; ++it ) + { + bool ii = detail::equals::equals_point_point(point, *it); + + if ( ii ) + found_inside = true; + else + found_outside = true; + + if ( found_inside && found_outside ) + break; + } + + return std::make_pair(found_inside, found_outside); +} + +template +struct point_multipoint +{ + static const bool interruption_enabled = false; + + template + static inline void apply(Point const& point, MultiPoint const& multi_point, Result & result) + { + if ( boost::empty(multi_point) ) + { + // TODO: throw on empty input? + set(result); + return; + } + + std::pair rel = point_multipoint_check(point, multi_point); + + if ( rel.first ) // some point of MP is equal to P + { + set(result); + + if ( rel.second ) // a point of MP was found outside P + { + set(result); + } + } + else + { + set(result); + set(result); + } + + set::value, Transpose>(result); + } +}; + +template +struct multipoint_point +{ + static const bool interruption_enabled = false; + + template + static inline void apply(MultiPoint const& multi_point, Point const& point, Result & result) + { + point_multipoint::apply(point, multi_point, result); + } +}; + +template +struct multipoint_multipoint +{ + static const bool interruption_enabled = true; + + template + static inline void apply(MultiPoint1 const& multi_point1, MultiPoint2 const& multi_point2, Result & result) + { + { + // TODO: throw on empty input? + bool empty1 = boost::empty(multi_point1); + bool empty2 = boost::empty(multi_point2); + if ( empty1 && empty2 ) + { + return; + } + else if ( empty1 ) + { + set(result); + return; + } + else if ( empty2 ) + { + set(result); + return; + } + } + +// TODO: ADD A CHECK TO THE RESULT INDICATING IF THE FIRST AND/OR SECOND GEOMETRY MUST BE ANALYSED + +// TODO: if I/I is set for one MPt, this won't be changed when the other one in analysed +// so if e.g. only I/I must be analysed we musn't check the other MPt + +// TODO: Also, the geometry with the smaller number of points may be analysed first + //if ( boost::size(multi_point1) < boost::size(multi_point2) ) + + // NlogN + MlogN + bool all_handled = search(multi_point1, multi_point2, result); + + if ( all_handled || result.interrupt ) + return; + + // MlogM + NlogM + search(multi_point2, multi_point1, result); + } + + template + static inline bool search(SortedMultiPoint const& sorted_mpt, + IteratedMultiPoint const& iterated_mpt, + Result & result) + { + // sort points from the 1 MPt + typedef typename geometry::point_type::type point_type; + std::vector points(boost::begin(sorted_mpt), boost::end(sorted_mpt)); + std::sort(points.begin(), points.end(), less()); + + bool found_inside = false; + bool found_outside = false; + + // for each point in the second MPt + typedef typename boost::range_iterator::type iterator; + for ( iterator it = boost::begin(iterated_mpt) ; + it != boost::end(iterated_mpt) ; ++it ) + { + bool ii = + std::binary_search(points.begin(), points.end(), *it, less()); + if ( ii ) + found_inside = true; + else + found_outside = true; + + if ( found_inside && found_outside ) + break; + } + + // an optimization + bool all_handled = false; + + if ( found_inside ) // some point of MP2 is equal to some of MP1 + { +// TODO: if I/I is set for one MPt, this won't be changed when the other one in analysed +// so if e.g. only I/I must be analysed we musn't check the other MPt + + set(result); + + if ( found_outside ) // some point of MP2 was found outside of MP1 + { + set(result); + } + } + else + { + set(result); + set(result); + + // if no point is intersecting the other MPt then we musn't analyse the reversed case + all_handled = true; + } + + set::value, Transpose>(result); + + return all_handled; + } +}; + +}} // namespace detail::relate +#endif // DOXYGEN_NO_DETAIL + +}} // namespace boost::geometry + +#endif // BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_POINT_POINT_HPP diff --git a/3party/boost/boost/geometry/algorithms/detail/relate/relate.hpp b/3party/boost/boost/geometry/algorithms/detail/relate/relate.hpp new file mode 100644 index 0000000000..946653452a --- /dev/null +++ b/3party/boost/boost/geometry/algorithms/detail/relate/relate.hpp @@ -0,0 +1,339 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) + +// Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. + +// This file was modified by Oracle on 2013, 2014. +// Modifications copyright (c) 2013-2014 Oracle and/or its affiliates. + +// Use, modification and distribution is subject to the Boost Software License, +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle + +#ifndef BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_RELATE_HPP +#define BOOST_GEOMETRY_ALGORITHMS_DETAIL_RELATE_RELATE_HPP + +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +namespace boost { namespace geometry +{ + +#ifndef DOXYGEN_NO_DETAIL +namespace detail { namespace relate { + +// Those are used only to allow dispatch::relate to produce compile-time error + +template ::type> +struct is_supported_by_generic +{ + static const bool value + = boost::is_same::value + || boost::is_same::value + || boost::is_same::value + || boost::is_same::value + || boost::is_same::value; +}; + +template ::type, + typename Tag2 = typename geometry::tag::type> +struct is_generic +{ + static const bool value = is_supported_by_generic::value + && is_supported_by_generic::value; +}; + + +template +struct is_generic +{ + static const bool value = is_supported_by_generic::value; +}; + +template +struct is_generic +{ + static const bool value = is_supported_by_generic::value; +}; + +template +struct is_generic +{ + static const bool value = false; +}; + + +}} // namespace detail::relate + +#ifndef DOXYGEN_NO_DISPATCH +namespace detail_dispatch { namespace relate { + + +template ::type, + typename Tag2 = typename geometry::tag::type, + int TopDim1 = geometry::topological_dimension::value, + int TopDim2 = geometry::topological_dimension::value, + bool IsGeneric = detail::relate::is_generic::value +> +struct relate : not_implemented +{}; + + +template +struct relate + : detail::relate::point_point +{}; + +template +struct relate + : detail::relate::point_multipoint +{}; + +template +struct relate + : detail::relate::multipoint_point +{}; + +template +struct relate + : detail::relate::multipoint_multipoint +{}; + +//template +//struct relate +// : detail::relate::point_box +//{}; +// +//template +//struct relate +// : detail::relate::box_point +//{}; + + +template +struct relate + : detail::relate::point_geometry +{}; + +template +struct relate + : detail::relate::geometry_point +{}; + + +template +struct relate + : detail::relate::linear_linear +{}; + + +template +struct relate + : detail::relate::linear_areal +{}; + +template +struct relate + : detail::relate::areal_linear +{}; + + +template +struct relate + : detail::relate::areal_areal +{}; + + +}} // namespace detail_dispatch::relate +#endif // DOXYGEN_NO_DISPATCH + +namespace detail { namespace relate { + +template +struct interruption_enabled +{ + static const bool value = + detail_dispatch::relate::relate::interruption_enabled; +}; + +template ::value> +struct result_handler_type + : not_implemented +{}; + +template +struct result_handler_type +{ + typedef matrix_handler type; +}; + +template +struct result_handler_type +{ + typedef mask_handler + < + mask9, + interruption_enabled + < + Geometry1, + Geometry2 + >::value + > type; +}; + +template +struct result_handler_type, false> +{ + typedef mask_handler + < + boost::tuples::cons, + interruption_enabled + < + Geometry1, + Geometry2 + >::value + > type; +}; + +template +struct result_handler_type, false> +{ + typedef static_mask_handler + < + static_mask, + interruption_enabled + < + Geometry1, + Geometry2 + >::value + > type; +}; + +template +struct result_handler_type +{ + typedef static_mask_handler + < + StaticSequence, + interruption_enabled + < + Geometry1, + Geometry2 + >::value + > type; +}; + +template +inline +typename result_handler_type + < + Geometry1, + Geometry2, + MatrixOrMask + >::type::result_type +relate(Geometry1 const& geometry1, + Geometry2 const& geometry2, + MatrixOrMask const& matrix_or_mask = MatrixOrMask()) +{ + typedef typename result_handler_type + < + Geometry1, + Geometry2, + MatrixOrMask + >::type handler_type; + + handler_type handler(matrix_or_mask); + detail_dispatch::relate::relate::apply(geometry1, geometry2, handler); + return handler.result(); +} + +struct implemented_tag {}; + +template